内置中间件函数,如app.use(express.json())和app.get('/', () => res.send('Hello'))。
我听说它们也可以被称为中间件函数,我不知道‘内置中间件函数’是否是调用它们的最佳术语。它们是终止循环还是自动调用next()方法,将控制权传递给下一个中间件函数?
发布于 2020-07-10 03:57:38
它们会自动调用.id ()方法,否则会抛出错误
中间件函数是可以访问请求对象(req)、响应对象(res)和应用程序的请求-响应周期中的下一个中间件函数的函数。下一个中间件函数通常由一个名为next的变量表示。顾名思义,它出现在请求和响应周期的中间,中间件可以访问请求和响应对象,中间件可以访问请求-响应生命周期的下一个函数,post中间件函数可以执行以下任务:执行任何代码。对请求和响应对象进行更改。结束请求-响应周期。调用堆栈中的下一个中间件。如果当前中间件函数没有结束请求-响应周期,它必须调用next()将控制传递给下一个中间件函数。否则,请求将被挂起。
发布于 2020-07-10 04:18:02
app.get和app.use都不是中间件功能。中间件函数是作为回调传递给app.get、app.use等的函数。
在express中,中间件函数有一个预定义的签名,或者
function(req: express.Request, res: express.Response, next: express.NextFunction) 或
function(err: Error, req: express.Request, res: express.Response, next: express.NextFunction) 这取决于它是正常的还是错误的中间件。
任何对传入请求进行操作并具有上述签名的函数都可以称为中间件函数。
在中间件函数中只有两种可能的选择,要么向请求者发送一个响应,要么调用next函数将请求传递给下一个中间件(或者忘记在那里做任何事情,并想知道为什么客户端似乎卡住了)。
所以,是的,像正文解析器,记录器,会话处理程序,...一定要调用next函数,否则您自己的请求处理程序根本不会被执行(假设它们之前有提到的中间件函数)。
传递给app.get和类似方法的回调也是中间件函数,您可以在其中调用next并继续使用另一个处理程序。示例
// these are global middleware functions - they process every request
app.use(middleware1)
app.use(middleware2)
app.use(middleware3)
// functions middleware4 and middleware5 are executed only when GET /
// request is received
app.get('/', middleware4, middleware5, (req, res) => {
return res.send({})
})https://stackoverflow.com/questions/62822607
复制相似问题