# management-node-demo **Repository Path**: yanhsama/management-node-demo ## Basic Information - **Project Name**: management-node-demo - **Description**: 利用@tinyhttp/app实现一个小型后端服务器 - **Primary Language**: NodeJS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-28 - **Last Updated**: 2024-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # management-node-demo 一个简单的后端服务器。 ## 搭建 node 版本 18.16.0 初始化 ```shell npm init ``` 安装 ```shell npm install @tinyhttp/app ``` 创建 `index.js` 文件 ```js // 使用import 语法,需要在package.json中配置type: module import { App } from "@tinyhttp/app"; const app = new App({}); app.use((req, res) => void res.send("Hello world!")); app.listen(3000, () => console.log("Started on http://localhost:3000")); ``` ## 请求实现(user) ### `app.js`文件 ```js import { App } from '@tinyhttp/app' const app = new App({ onError: (err, req, res) => { res.status(err.code ? err.code : 500).send({ message: err.code === 404 ? 'Not Found' : err.message || '服务器内部错误', }) }, }) export default app; ``` ### `index.js`文件 ```js import app from "./app.js"; import { readFile } from "node:fs/promises"; import bodyParser from "body-parser"; import userInit from "./services/user.js"; // import roleInit from "./services/role.js"; // 使用body-parser中间件解析请求体 app.use(bodyParser.json()); // 解析JSON格式的请求体 app.use(bodyParser.urlencoded({ extended: true })); // 解析URL编码的请求体 app.get("/user-docs", async (_, res) => { const file = await readFile(`${process.cwd()}/docs/userDoc.html`, {}); res.send(file.toString()); }); userInit(); // roleInit(); app.listen(3000, () => console.log("Started on http://localhost:3000")); ``` ### `services\user.js`文件 ```js import app from "../app.js"; const userInit = () => { app.get("/user", (req, res) => { res.send({ code: 200, data: { data: [ { id: "10001001", userName: "李毅", emails: "123@qq.com", role: "R0001", }, { id: "10001002", userName: "李已", emails: "123@qq.com", role: "R0001", }, { id: "10001003", userName: "李移", emails: "123@qq.com", role: "R0001", }, ], total: 3, }, msg: "success", }); }); // 编辑编辑 app.put("/user", (req, res) => { res.send({ code: 200, data: null, query: { info: req.body, }, msg: "success", }); }); // 新增用户 app.post("/user", (req, res) => { // 获取POST请求参数 const postData = req.body; res.send({ code: 200, data: null, query: { info: postData, }, msg: "success", }); }); // 删除用户 app.delete("/user/:id", (req, res) => { // console.log('user-delete', req.params); res.send({ code: 200, data: req.params, msg: "success", }); }); // 示例:http://localhost:3000/user/U1001 }; export default userInit; ``` ## `package.json`文件 ```json { "name": "management-node-demo", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "@tinyhttp/app": "^2.2.4", "body-parser": "^1.20.2" } } ``` ## 请求图示 1、返回一个文件 ![输入图片说明](image/Snipaste_2024-06-28_17-03-07.png) 2、返回用户列表信息(get /user) ![输入图片说明](image/Snipaste_2024-06-28_17-03-37.png) 3、新增一个用户(post /user) ![输入图片说明](image/Snipaste_2024-06-28_17-04-28.png) 4、编辑用户信息(put /user) ![输入图片说明](image/Snipaste_2024-06-28_17-04-49.png) 5、删除一个用户信息(delete /user) ![输入图片说明](image/Snipaste_2024-06-28_17-05-09.png)