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
}