laravel : 如何在中间件中获取请求的 url http 状态码
laravel : how to get requested url http status code in middleware
我们在 laravel 有一个应用程序并且有一条路线:
Route::get('/example-route', "exampleController@index")->middleware("example_middleware");
我想在中间件中获取此请求的 http 状态代码。
我该怎么做?
I mean blue part that selected in this image
您无法获取中间件内部的状态代码,因为它尚不存在。
状态代码是响应的一部分,而不是请求的一部分,因此它在中间件中不“可用”。
您看到的 200
是您的应用程序 return 编辑的代码:
- Laravel 收到对
/example-route
的请求
- 所有需要的中间件依次处理请求
- 路由终于到达控制器:
exampleController@index
- 控制器中的
index
方法 return 是一个状态代码:这是在您的屏幕截图中以蓝色突出显示的状态代码。
public function index()
{
return response('This is a code 200', 200); //returns 200
return response('This is a code 400', 400); //returns 400
// and so on...
}
默认情况下,如果没有错误,Laravel 会发送一个 200
,您可能知道,500
是出现服务器错误时的一般错误代码。
完整的 HTTP 状态代码列表可以在这里找到:https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
同样,由于此代码是您 return(或 Laravel return 取决于请求结果),它不能在中间件中“访问”因为此时它不存在。
I want to have status code (for requested url) in user activity logs
如果您想记录状态代码,则必须在发送响应之前立即记录它。
public function index()
{
// the logs should be created here
return response('This is a code 200', 200); //returns 200
}
我们在 laravel 有一个应用程序并且有一条路线:
Route::get('/example-route', "exampleController@index")->middleware("example_middleware");
我想在中间件中获取此请求的 http 状态代码。 我该怎么做?
I mean blue part that selected in this image
您无法获取中间件内部的状态代码,因为它尚不存在。
状态代码是响应的一部分,而不是请求的一部分,因此它在中间件中不“可用”。
您看到的 200
是您的应用程序 return 编辑的代码:
- Laravel 收到对
/example-route
的请求
- 所有需要的中间件依次处理请求
- 路由终于到达控制器:
exampleController@index
- 控制器中的
index
方法 return 是一个状态代码:这是在您的屏幕截图中以蓝色突出显示的状态代码。
public function index()
{
return response('This is a code 200', 200); //returns 200
return response('This is a code 400', 400); //returns 400
// and so on...
}
默认情况下,如果没有错误,Laravel 会发送一个 200
,您可能知道,500
是出现服务器错误时的一般错误代码。
完整的 HTTP 状态代码列表可以在这里找到:https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
同样,由于此代码是您 return(或 Laravel return 取决于请求结果),它不能在中间件中“访问”因为此时它不存在。
I want to have status code (for requested url) in user activity logs
如果您想记录状态代码,则必须在发送响应之前立即记录它。
public function index()
{
// the logs should be created here
return response('This is a code 200', 200); //returns 200
}