expressjs中的next理解

一些轻量级项目开发,TEAM常使用expressJS作为backend,原因是足够的简单,上手很容易,而且天然的适合做RESTful。在使用中,也逐步对express加深些了解,发现在官网对于next讲解的很少,这里就梳理下,权当加深理解。

Next的作用

next负责将控制权交给下一个中间件函数。

Next使用场景即我们为何需要next

当我们处理路由请求时,可能需要下一个中间件处理,那么就应该使用next函数。比如异常处理,或者请求处理分支化。

上代码

例子1

1
2
3
4
5
6
7
8
9
10
router.get("/hello", function (req, res, next) {
res.write("hello");
next();
});

router.get("/hello", function (req, res) {
res.write(" world");
res.end();
});

执行后,结果截图


当我们没有结束请求回复时,利用next可以继续进行处理。

例子2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
router.get("/hello", function (req, res, next) {
if (req.query.name) {
return res.json("hello");
}
else {
next(new Error("没有name"));
}
});

router.use(function (err, req, res, next) {
res.json({
message: err.message,
error: {}
});
});

执行请求http://localhost:3001/api/hello
结果截图

异常处理其实是next使用的一种场景。

*注意:*因为这里是先路由请求之后进行的异常处理,所以这里异常中间件处理在路由请求处理之后。

相关文档