Home > Software design >  laravel : how to get requested url http status code in middleware
laravel : how to get requested url http status code in middleware

Time:09-28

we have an application in laravel and have a route:

Route::get('/example-route', "exampleController@index")->middleware("example_middleware");

i want to get http status code of this request in middleware . how can i do it?

I mean blue part that selected in this image

CodePudding user response:

You can't get the status code inside the middleware because it doesn't exist yet.

The status code is part of the response, not the request, therefore it's not "available" in a middleware.

The 200 you see is the code returned by your application:

  • Laravel receives a request to /example-route
  • All required middlewares handle the request one after another
  • The route finally hits the controller: exampleController@index
  • The index method in the controller returns a status code: this is the status code highlighted in blue in your screenshot.
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...
}

By default, if there is no error, Laravel sends a 200 and as you probably know, a 500 is the generic error code when there is a server error.

The full list of HTTP status codes can be found here: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes


Again, since this code is what you return (or what Laravel returns depending of the request outcome), it can't be "accessed" in the middleware since it doesn't event exist at this point.


I want to have status code (for requested url) in user activity logs

If you want to log the status code, you'll have to log it right before the response is sent.

public function index()
{
    // the logs should be created here
    return response('This is a code 200', 200); //returns 200
}
  • Related