Laravel 可终止中间件和后中间件的区别

Rav*_*yar 3 laravel laravel-middleware laravel-5.6

Larave 中间件理解源码

提到中间件有两种类型:之前和之后。在处理请求之前处理中间件之前和处理请求之后处理中间件之后。

但是可终止中间件的功能与后中间件完全相同。那么这两者的核心区别是什么呢?谢谢。

Far*_*nia 7

Terminable Middleware 在响应准备就绪后运行。

After Middleware 在请求之后但在响应准备之前运行。

例如,假设您想为所有或一组响应设置响应标头,您可以使用 after 中间件来实现。因为您需要在呈现请求之后但在返回响应之前设置标头。但是,如果要将会话数据存储在存储器中,则可以使用可终止中间件。

这是中的终止方法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);
Run Code Online (Sandbox Code Playgroud)

您在 Terminable 中间件的 terminate 方法中收到请求和响应对象,但更改响应不会生效,因为响应已经返回。