在 Express 中,路由指的是客户端的请求与服务器处理函数之间的映射关系。
Express 中的路由分 3 部分组成,分别是请求的类型、请求的 URL 地址、处理函数
express.router()
路由本身也是一个中间件
一般用来处理通过use中间件 所匹配的基地址
比如处理student管理
所有请求基地址为/api/student 都会交给studentRouter 这个路由来执行后续的处理
然后就可以把studentRouter 单独拧出来配置
可以把studentRouter专门放进一个路由api文件来配置
const express = require("express");
const router = express.Router();
const stuServ = require("../../services/studentService");
// const sendMsg = require("../getSendResult")
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);
})
);
// router.get('/',async (req,res)=>{
// // res.send('分页获取学生');
// const page = req.query.page || 1;
// const limit = req.query.limit || 10;
// const sex = req.query.sex || -1;
// const name = req.query.name || "";
// const result = stuServ.getStudents(page,limit,sex,name)
// res.send(sendMsg.getResult(result))
// })
// router.get("/:id",async (req,res)=>{
// // res.send('获取学生')
// const result = await stuServ.getStudentById(req.params.id)
// res.send(sendMsg.getResult(result))
// });
// router.post("/",async (req,res)=>{
// // res.send('添加学生')
// const result = await stuServ.addStudent(req.body)
// res.send(sendMsg.getResult(result))
// });
// router.delete("/:id",async (req,res)=>{
// // res.send('删除学生')
// const result = await stuServ.deleteStudent(req.params.id)
// res.send(sendMsg.getResult(result))
// });
// router.put("/:id", async (req,res)=>{
// // res.send('修改一个学生')
// const result = await stuServ.updateStudent(req.params.id, req.body)
// res.send(sendMsg.getResult(result))
// });
module.exports = router;
asyncHandler是手写的中间件处理函数
exports.asyncHandler = (handler) => {
return async (req, res, next) => {
console.log(req);
try {
const result = await handler(req, res, next);
res.send(exports.getResult(result));
} catch (err) {
next(err);
}
};
};