Laravel可终止中间件和后中间件的区别
Laravel difference between terminable middleware and after middleware
Larave middleware understanding source
这里提到,中间件有两种类型:Before和After。处理请求之前处理中间件之前,处理请求之后处理中间件之后。
但是terminable中间件的功能和after中间件完全一样。那么这两者的核心区别是什么?谢谢
Terminable Middleware
在响应准备就绪后运行。
After Middleware
在请求之后但响应准备好之前运行。
例如,假设您要对所有或一组响应设置响应 header,您可以使用后中间件来实现。因为您需要在呈现请求之后但在 return 响应之前设置 header。
但是,如果您想将 session 数据存储在存储中,则可以使用可终止的中间件。
这是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 中间件的终止方法中收到请求和响应 object,但是更改响应不会生效,因为响应已经 returned。
Larave middleware understanding source
这里提到,中间件有两种类型:Before和After。处理请求之前处理中间件之前,处理请求之后处理中间件之后。
但是terminable中间件的功能和after中间件完全一样。那么这两者的核心区别是什么?谢谢
Terminable Middleware
在响应准备就绪后运行。
After Middleware
在请求之后但响应准备好之前运行。
例如,假设您要对所有或一组响应设置响应 header,您可以使用后中间件来实现。因为您需要在呈现请求之后但在 return 响应之前设置 header。 但是,如果您想将 session 数据存储在存储中,则可以使用可终止的中间件。
这是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 中间件的终止方法中收到请求和响应 object,但是更改响应不会生效,因为响应已经 returned。