метод form_params получить жрать php - PullRequest
0 голосов
/ 16 марта 2020

У меня есть пользовательский список получения API. почтальоны enter image description here

и заголовки Content-Type = application / json - В laravel я использую guzzle для вызова демо-кода API: $ client = new Client ();

    $headers = ['Content-Type' => 'application/json'];
    $body = [
        'json' => [
            "filter" => "{}",
            "skip" => 0,
            "limit" => 20,
            "sort" => "{\"createAt\": 1}",
            "select" => "fullname username",
            "populate" => "'right', 'group'",
        ]
    ];
    \Debugbar::info($body);
    $response = $client->get('http://sa-vn.com:2020/api/users/user', [
        'form_params' => $body
    ]);
    echo $response->getBody();

Но это не работает! пожалуйста, помогите мне

Ответы [ 2 ]

1 голос
/ 16 марта 2020

form_params и body - это разные параметры в жрете. проверьте json

$json = [
    "filter" => json_encode((object)[]),
    "skip" => 0,
    "limit" => 20,
    "sort" => json_encode((object)['createAt'=>1]),
    "select" => "fullname username",
    "populate" => "'right', 'group'"
];

$response = $client->request('get', 'http://sa-vn.com:2020/api/users/user', [
                                                'json' => $json,
                                            ]);

Если возникнет какая-либо ошибка, попробуйте также без json_encode.

$json = [
        "filter" => (object)[],
        "skip" => 0,
        "limit" => 20,
        "sort" => (object)['createAt'=>1],
        "select" => "fullname username",
        "populate" => "'right', 'group'"
    ];
0 голосов
/ 16 марта 2020

В соответствии с документацией Guzzle

form_params

Используется для отправки заявки / x- www-form-urlencoded POST-запрос.

json

Опция json используется для простой загрузки закодированных данных JSON в качестве тела запроса. Заголовок Content-Type приложения / json будет добавлен, если в сообщении уже отсутствует заголовок Content-Type.

Вы передаете json данные почтальону. Таким образом, вы можете использовать json вместо form_params

Изменить

$response = $client->get('http://sa-vn.com:2020/api/users/user', [
    'form_params' => $body
]);

на

$response = $client->get('http://sa-vn.com:2020/api/users/user', [
    'json' => $body
]);
...