我在我的项目中看到了这些代码。
当2个参数时:
app.use("*", (req: Request, res: Response) => {
});
当有3个参数时:
app.use("*", (req: Request, res: Response, next: NextFunction) => {
});
当有4个参数时:
app.use("*", (err: any, req: Request, res: Response, next: NextFunction) => {
});
问题1)有没有任何文档说明我们为什么使用err作为第一个参数?我对这种方法感到非常困惑。有多少种类型的争论!?
Q2)我需要在所有回复中添加标题。更准确地说,我需要在响应头中添加CSP。我应该使用中间件方法添加吗,例如,app.use(csp);
或任何建议。
1条答案
按热度按时间q3qa4bjr1#
问题一:
三参数函数是实际的Express中间件,它包含
req
:请求对象,res
:响应对象,next
:下一个函数next()
函数用于将当前流传递到下一个中间件。例如,假设我们有两个中间件。确保两个中间件应同时使用。
四参数功能中间件,基本上是ExpressJS提供的一个错误中间件。ExpressJS Error Handling
对于4个参数的中间件,第一个参数表示错误,让我们再次使用上面的例子
确保使用错误中间件来结束所有中间件。
问题二:
如果您想要为
res
对象设置任何标头,您可以使用如下所示确保该中间件高于所有中间件,这样你就可以在任何中间件中访问它,这会将它设置为所有中间件的全局标头
在ExpressJS中设置标头有多种方法。请按照此answer了解更多信息。
我希望这能帮助您了解Express Middleware。