如何在Laravel中正确返回JSON响应?

时间:2019-10-24 00:47:01

标签: php laravel response laravel-6

    return response()->json([
        'message' => 'No new orders!'
    ]);

不幸的是,此响应不起作用吗?理想情况下,我想使用“消息” =>“没有新订单!”返回JSON响应。状态代码为204 No Content。

我在控制器中包含了这2个文件...

use OhMyBrew\BasicShopifyAPI;
use GuzzleHttp\Client;

这利用了来自 vendor / laravel / framework / src / Illuminate / foundation / helpers.php

的内置帮助器
if (! function_exists('response')) {
    /**
     * Return a new response from the application.
     *
     * @param  \Illuminate\View\View|string|array|null  $content
     * @param  int     $status
     * @param  array   $headers
     * @return \Illuminate\Http\Response|\Illuminate\Contracts\Routing\ResponseFactory
     */
    function response($content = '', $status = 200, array $headers = [])
    {
        $factory = app(ResponseFactory::class);

        if (func_num_args() === 0) {
            return $factory;
        }

        return $factory->make($content, $status, $headers);
    }
}

3 个答案:

答案 0 :(得分:0)

如果由于某种原因响应帮助器不起作用,则可以使用以下方法:

https://laravel.com/api/5.8/Illuminate/Contracts/Routing/ResponseFactory.html#method_json

基本上:

use Illuminate\Support\Facades\Response;

return Response::json(['data' => 'data'], 200);

答案 1 :(得分:0)

要将数据作为json ..只需执行以下操作:

public function myCoolFunction()
{
    $data = ['message' => 'No new orders!'];

    return response()->json($data, 204);
}

来自documentation

  

JSON响应

     

json方法将自动将Content-Type标头设置为   application/json,以及使用以下命令将给定数组转换为JSON   json_encode PHP函数:

return response()->json([
    'name' => 'Abigail',
    'state' => 'CA'
]);

PS:返回的默认响应代码为200,因此,如果要返回200响应代码,则可以省略第二个参数。


请注意,为了同时接收json格式的错误详细信息,它可以帮助您的前端发出请求,告诉您的后端它希望获得json响应。为此,请在发出请求时添加此标头:

accept: application/json

更多信息

答案 2 :(得分:0)

问题是,当您使用代码204时,内容将不起作用。当您编写状态204时,意味着没有内容,因此,如果您放置任何内容,它将不会被使用。

因此,如果您需要从响应中返回内容,则需要使用其他状态代码(例如200)。

但是:

 return response()->json([
        'message' => 'No new orders!'
    ]);

应该没有问题,因为此处使用状态200,因此如果不起作用,请删除vendor目录并再次运行composer install,因为您可能是偶然更改了供应商目录。另外,您还应该验证存储在storage/logs目录中的日志文件,以验证实际问题。