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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/41452844/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 15:03:21  来源:igfitidea点击:

How to get primitive json request payload in Laravel 5?

jsonlaravellaravel-5http-post

提问by zarax

Let say that this is the payload of a request:

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

{name : 'John', age: 42}

You can get all paramters with Request::all().

您可以使用Request::all().

How do I get request payload correctyly if payload is a primitive type like trueor 42?

如果有效负载是原始类型(如true或 ),如何正确获取请求有效负载42

Request::getContent()receives them as strings, I want them to be in correct type as well.

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

回答by Antonio Carlos Ribeiro

You can use json_decodeto decode a raw json payload to an array:

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

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

    dd($payLoad['name']);
});

And you should get

你应该得到

John

Or can use json_decodeto decode your payload from a query parameter or post data:

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

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

    dd($payLoad);
});

Hitting:

打:

http://app.dev/primitive?payload={%20%22name%22:%20%22John%22,%20%22age%22:%2042,%20%22male%22:%20true%20}

You should get

你应该得到

enter image description here

在此处输入图片说明