返回respone()-> json()时要声明的返回类型

时间:2019-04-26 03:07:29

标签: json laravel php-7

我将返回类型声明为字符串,并获得了标头。我只想获取json。返回json且返回类型为字符串时如何删除标头。

这就是我得到的

enter image description here

从此

enter image description here

2 个答案:

答案 0 :(得分:0)

我误解了为什么需要将返回类型声明为字符串。但是,实际上您希望将数据作为json响应。

答案 1 :(得分:0)

通过将返回类型提示为string,您将使PHP将response()->json()的返回类型\Illuminate\Http\JsonResponse强制转换为字符串。这将导致它调用__toString()方法

如下所示:

public function __toString()
{
    return
        sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText)."\r\n".
        $this->headers."\r\n".
        $this->getContent();
}

我建议您将返回类型键入为\Illuminate\Http\JsonResponse,而不是string,因为这就是您要返回的内容。如果您真的要返回string,则可以执行return response()->json()->getContent();,但是您需要标头(因为返回的是json,所以Content-Type标头就变得很重要)