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

hc2pp10m  于 2023-11-16  发布在  PHP
关注(0)|答案(3)|浏览(146)
return response()->json([
        'message' => 'No new orders!'
    ]);

字符串
不幸的是,这个响应不起作用?理想情况下,我想返回一个JSON响应,其中'Message' => 'No new orders!'状态码为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);
    }
}

insrf1ej

insrf1ej1#

要将数据返回为json,请执行以下操作:

public function myCoolFunction()
{
    $data = ['message' => 'No new orders!'];
    
    return response()->json($data, 204);
}

字符串
从文档中:

JSON响应

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

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


PS:返回的默认响应代码是200,所以,如果你想返回一个200响应代码,你可以省略第二个参数。
请注意,为了以json格式接收错误详细信息,前端发出请求时告诉后端它需要json响应会有所帮助。为此,在发出请求时添加此头:

accept: application/json

kcwpcxri

kcwpcxri2#

问题是当你使用代码204时,内容将不起作用。正如你所写的,状态204意味着没有内容,所以如果你放入任何内容,它将不会被使用。
因此,如果您需要从响应中返回内容,则需要使用其他状态代码(例如200)。
然而:

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

字符串
应该没有任何问题,因为状态200在这里使用,所以如果它不工作删除vendor目录,并再次运行composer install,因为也许你在供应商目录中做了一些意外的变化。此外,你应该验证存储在storage/logs目录中的日志文件,以验证真实的问题。

pgvzfuti

pgvzfuti3#

如果由于某种原因响应助手不工作,你可以使用这个:
https://laravel.com/api/5.8/Illuminate/Contracts/Routing/ResponseFactory.html#method_json
基本上:

use Illuminate\Support\Facades\Response;

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

字符串

相关问题