在laravel中的json响应中获取HTTP代码

时间:2018-10-23 00:16:28

标签: php laravel laravel-5.7

我需要保存通过json发送的响应代码,例如404:

Route::fallback(function(){
    return response()->json(['message' => 'Not Found'], 404);
})->name('api.fallback.404');

我尝试了以下代码:

use Illuminate\Http\JsonResponse as Resp;

if (!$this->response_code) {
     $this->response_code = Resp::getStatusCode();
}

但是laravel向我返回此错误:

  

不应静态调用非静态方法Symfony \ Component \ HttpFoundation \ Response :: getStatusCode()

3 个答案:

答案 0 :(得分:0)

您试图从Class本身调用一个非静态方法(即属于该对象的方法)。试试这个:

use Illuminate\Http\JsonResponse as Resp;

if (!$this->response_code) {
  $this->response_code = $this->getStatusCode();
}

答案 1 :(得分:0)

Jaime的答案作为解决任何错误的通用解决方案都不错,因为他们说不能静态调用它,但是我根本看不到Illuminate\Http\JsonResponse对象上的方法,因此报告了500错误回来。

JsonResponse的Laravel文档表明,您可以在JsonResponse对象上调用status(),以获取响应代码的int值。

答案 2 :(得分:0)

您可以使用http_response_code()来获取响应代码。

$this->response_code = http_response_code;