express路由
一、express路由
1、使用环境
const express = require('express');
const app = express(); //创建一个express应用
const path = require("path");
const staticRoot = path.resolve(__dirname, "../public");
app.use(express.static(staticRoot));
// 解析 application/x-www-form-urlencoded 格式的请求体
app.use(express.urlencoded({
extended: true
}));
// 解析 application/json 格式的请求体
app.use(express.json());
// 处理api请求
app.post("/api/student", (req, res) => {
//添加学生
});
app.get("/api/student", (req, res) => {
//获取学生
});
app.put("/api/student", (req, res) => {
//获取学生
});
app.use(require('./errorMiddleware'));
const port = 5108;
app.listen(port, () => {
console.log(`server listen on ${port}`);
});
这样一个方法一个接口,导致可维护性较低,代码比较冗余
2、Router路由
const express = require('express');
const app = express(); //创建一个express应用
const path = require("path");
const staticRoot = path.resolve(__dirname, "../public");
app.use(express.static(staticRoot));
// 解析 application/x-www-form-urlencoded 格式的请求体
app.use(express.urlencoded({
extended: true
}));
// 解析 application/json 格式的请求体
app.use(express.json());
// 处理api请求
const studentRouter = express.Router();
studentRouter.get("/",(req,res)=>{
console.log("获取学生");
});
studentRouter.get("/:id",(req,res)=>{
console.log("获取单个学生");
});
studentRouter.post("/",(req,res)=>{
console.log("添加学生");
});
app.use("/api/student",studentRouter);
app.use(require('./errorMiddleware'));
const port = 5108;
app.listen(port, () => {
console.log(`server listen on ${port}`);
});
3、接口实现
//init.js
const express = require('express');
const app = express(); //创建一个express应用
const path = require("path");
const staticRoot = path.resolve(__dirname, "../public");
app.use(express.static(staticRoot));
// 解析 application/x-www-form-urlencoded 格式的请求体
app.use(express.urlencoded({
extended: true
}));
// 解析 application/json 格式的请求体
app.use(express.json());
// 处理api请求
app.use("/api/student",require("./api/student"));
app.use(require('./errorMiddleware'));
const port = 5018;
app.listen(port, () => {
console.log(`server listen on ${port}`);
});
信息返回
//getSendResult.js
exports.getErr = function (err = "server internal error", errCode = 500) {
return {
code: errCode,
msg: err,
};
};
exports.getResult = function (result) {
return {
code: 0,
msg: "",
data: result,
};
};
exports.asyncHandler = (handler) => {//封装函数,防止异步过程中发生错误
return async (req, res, next) => {
try {
const result = await handler(req, res, next);
res.send(exports.getResult(result));
} catch (err) {
next(err);
}
};
};
接口实现
//api/student
const express = require("express");
const router = express.Router();
const stuServ = require("../../services/studentService");
const { asyncHandler } = require("../getSendResult");
router.get(
"/",
asyncHandler(async (req, res) => {
const page = req.query.page || 1;
const limit = req.query.limit || 10;
const sex = req.query.sex || -1;
const name = req.query.name || "";
return await stuServ.getStudents(page, limit, sex, name);
})
);
router.get(
"/:id",
asyncHandler(async (req, res) => {
return await stuServ.getStudentById(req.params.id);
})
);
router.post(
"/",
asyncHandler(async (req, res, next) => {
return await stuServ.addStudent(req.body);
})
);
router.delete(
"/:id",
asyncHandler(async (req, res, next) => {
return await stuServ.deleteStudent(req.params.id);
})
);
router.put(
"/:id",
asyncHandler(async (req, res, next) => {
return await stuServ.updateStudent(req.params.id, req.body);
})
);
module.exports = router;
博主开始运营自己的公众号啦,感兴趣的可以关注“飞羽逐星”微信公众号哦,拿起手机就能阅读感兴趣的文章啦!