Laravel Unirest и Rapid Api не принимают параметры формы - PullRequest
0 голосов
/ 08 марта 2020

Программист среднего уровня, но это мой первый опыт использования API и RapidAPI в частности. Я использую API "WorldWide Restaurants" ( Здесь документация )

При использовании примера кода прямо с сайта для доступа к API:

 $response = Unirest\Request::post("https://worldwide-restaurants.p.rapidapi.com/search",
  array(
    "X-RapidAPI-Host" => "worldwide-restaurants.p.rapidapi.com",
    "X-RapidAPI-Key" => "myrapidapikey",
    "Content-Type" => "application/x-www-form-urlencoded"
  ),
  array(
    "language" => "en_US",
    "location_id" => "15333482",
    "currency" => "USD",
    "limit" => 15
  )
);

Объект я получаю обратно «Ошибки проверки», поэтому он не получает мой второй массив или неправильно передает его.

code: 200
  +raw_body: "{"status":201,"msg":"validation errors","results":["The location id field is required.","The limit field is required.","The language field is required.","The cu ▶"
  +body: {#175 ▶}
  +headers: array:16 [▶]

Я также пробовал это:

 $headers =  [
                'x-rapidapi-host' => 'worldwide-restaurants.p.rapidapi.com/',
                'x-rapidapi-key' => 'myrapidapikey',
                'content-type' => 'application/x-www-form-urlencoded'
            ];

        $data =  [
                'limit' => '30',
                'language' => 'en_US',
                'location_id' => '154913',
                'currency' => 'CAD'
            ];

        $response = Unirest\Request::post("https://worldwide-restaurants.p.rapidapi.com/search", $headers, $data);

        dd($response);

И Я изменил имя массива «data» на все, что я мог придумать, с теми же результатами. Я также пошел и попытался использовать пакет Guzzle laravel, и при его использовании я не получаю ошибки проверки, но я также Кажется, я не могу получить никаких полезных данных.

У меня такое чувство, что я пропускаю шаг и всюду искал ответ. Надеюсь, кто-то умнее меня поймет, что я делаю неправильно. Спасибо.

РЕДАКТИРОВАТЬ: В случае, если это имеет значение, я запускаю это из WAMP на моей локальной машине.

1 Ответ

0 голосов
/ 08 марта 2020

Для всех, кто боролся с этим, я решил решить эту проблему с помощью помощника Unirest \ Request \ Body :: form. Обновленный код ниже:

 $headers = array(
                'x-rapidapi-host' => 'worldwide-restaurants.p.rapidapi.com/',
                'x-rapidapi-key' => 'myapikey',
                'content-type' => 'application/x-www-form-urlencoded'
        );

        $data = array(
                'location_id' => '154913',
                'limit' => 30,
                'language' => 'en_US',
                'currency' => 'CAD'
        );

        $body = Unirest\Request\Body::form($data);

        $response = Unirest\Request::post("https://worldwide-restaurants.p.rapidapi.com/search",
            $headers, $body);

        dd($response);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...