如何在Laravel 5中获取原始json请求有效负载?

zar*_*rax 6 json http-post laravel laravel-5

假设这是请求的有效负载:

{name : 'John', age: 42}
Run Code Online (Sandbox Code Playgroud)

你可以得到所有的参数Request::all().

如何获取请求负载correctyly如果有效载荷是一个原始类型像true42

Request::getContent() 接收它们作为字符串,我希望它们也是正确的类型.

Ant*_*iro 14

您可以使用json_decode将原始json有效负载解码为数组:

Route::post('/request', function () {
    $payLoad = json_decode(request()->getContent(), true);

    dd($payLoad['name']);
});
Run Code Online (Sandbox Code Playgroud)

你应该得到

John
Run Code Online (Sandbox Code Playgroud)

或者可以用来json_decode从查询参数解码您的有效负载或发布数据:

Route::get('/primitive', function () {
    $payLoad = json_decode(request()->get('payload'));

    dd($payLoad);
});
Run Code Online (Sandbox Code Playgroud)

打:

http://app.dev/primitive?payload={%20%22name%22:%20%22John%22,%20%22age%22:%2042,%20%22male%22:%20true%20}
Run Code Online (Sandbox Code Playgroud)

你应该得到

在此输入图像描述

  • Payload 不是键值对。只是 POST 请求正文中的一个 json 值。然后我可以使用`json_decode(request()->getContent())`。谢谢 (2认同)