Larave middleware understanding source
有人提到,有两种类型的中间件:前后。在处理请求之前处理中间件之前以及在处理请求之后处理中间件之后。
但可终止中间件的功能与中间件之后完全相同。那么这两者之间的核心区别是什么?感谢。
答案 0 :(得分:4)
Terminable Middleware
在响应准备好并准备好后运行。
After Middleware
在请求之后但在准备响应之前运行。
例如,假设您要在所有或一组响应上设置响应标头,您可以使用After middleware来实现。因为您需要在呈现请求之后但在返回响应之前设置标头。 但是,如果要将会话数据存储在存储中,则可以使用可终止的middlware。
这是TerminableInterface
中的终止方法:
/**
* Terminates a request/response cycle.
*
* Should be called after sending the response and before shutting down the kernel.
*/
public function terminate(Request $request, Response $response);
您在Terminable中间件的terminate方法中收到请求和响应对象,但更改响应将不会生效,因为已经返回了响应。