从路由中获取参数
app.route('/projects/:projectId/test_targets')
.all(function(req, res, next) {
const projectId: string = req.params.projectId;
next();
})
route的应用
app.route('/projects/:projectId')
.all(function(req, res, next) {
const projectId: string = req.params.projectId;
let project;
/* 获取project*/
if (project === undefined) {
res.send({ status: -1, msg: '项目id无效' });
return;
}
res.locals.project = project;
next();
})
.get(function(req, res) {
let project = res.locals.project;
/* 获取项目数据*/
res.send({ status: 0, msg: '获取项目数据成功', data: project });
})
.put(function(req, res, next) {
let project = res.locals.project;
/* 更新代码*/
res.send({ status: 0, msg: '修改项目成功', data: project });
next();
})
.delete(function(req, res, next) {
let project = res.locals.project;
/* 删除代码*/
res.send({ status: 0, msg: '删除项目成功', data: project });
next();
})
.all(function(req, res) {
/* 持久化代码*/
});
res.locals可以保存一些临时数据,可在一系列的中间件之间传递.
对比app.locals,app.locals是对app中所有中间件有效,而res.locals则仅对处理当前请求的中间件有效.