Laravel 框架下如何在 middleware 中获取请求 URL 的 HTTP 状态码
Laravel 中间件获取响应HTTP状态码实现方案
你需要在后置中间件逻辑中获取状态码,HTTP状态码是服务端处理请求生成响应后才附带的参数,前置中间件阶段请求还未被应用处理,不存在响应对象,无法获取状态码。
具体实现代码如下:
- 打开你的中间件文件
app/Http/Middleware/ExampleMiddleware.php,按以下结构编写逻辑:
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class ExampleMiddleware { public function handle(Request $request, Closure $next) { // 前置逻辑区域:此处在请求进入控制器前执行,无法获取状态码 // 先将请求传入应用层处理,拿到生成的响应对象 $response = $next($request); // 后置逻辑区域:直接从响应实例中获取状态码 $statusCode = $response->status(); // 此处编写拿到状态码后的业务逻辑即可,例如日志记录、统一逻辑判断等 // 示例代码:\Log::debug('请求响应状态码', ['code' => $statusCode]); return $response; } }
注意事项
- Laravel 6.x及以上版本都可以直接使用
$response->status()方法获取状态码,更低版本可以替换为$response->getStatusCode(),二者效果完全一致 - 异常场景下如果要正常获取状态码,需要确保异常已经被Laravel异常处理器转为响应对象返回,否则可以在异常处理器中补充对应逻辑同步获取状态值
内容的提问来源于stack exchange,提问作者Behzad
相关产品推荐
相关产品推荐

