Задать вопрос
@slava_pv

Как сделать запрос к API в Laravel?

Доброго времени суток!
Делаю ajax-запрос из js на бэк. Дальше нужно отправить get-запрос на сторонний api. Подскажите, пожалуйста, как правильно отправить запрос и получить ответ. Пересмотрел кучу статей, видео и ничего не выходит.

1) Пробовал делать, используя Guzzle

use GuzzleHttp\Client;
public function getData() {

$client = new Client([
            'headers' => [
                'content-type' => 'application/json',
                'Accept' => 'application/json'
                ],
            ]);

$response = $client->request('GET', ' link ']);

$data = $response->getBody();

return response()->json(
            [
                'response' => [
                    'test' => $data
                ]
            ], 200);

}


2) Пробовал еще таким способом

public function getData() {

$url = " link ";

        $opts = [
            'http' => [
                'method' => "GET",
            ]
        ];

        $context = stream_context_create($opts);

        $data = file_get_contents($url, false, $context);

return response()->json(
            [
                'response' => [
                    'test' => $data
                ]
            ], 200);

}


Проверял на 2 API. Первый метод не работает ни с одним. Второй - работает только с одним. Вставляя link просто в адресной строке в браузере получаю ответы с двух API. Как правильно отправить запрос и принять ответ.

P.S. С Laravel работаю вторую неделю, поэтому такой вопрос. Нид хелп!
  • Вопрос задан
  • 6113 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@fauther_i
Возможно ответ кому-то пригодится: Не смотрите в сторону CSRF - он не для Api!
У Laravel есть в route/api.php , который не проверяет CSRF
Route::post('/post/{id}','IndexController@post');
В контроллере проверяйте:
public function post(Request $request){
	  // например json
         $post = json_encode($request->all(), JSON_UNESCAPED_UNICODE);
         //... 
 }

В /route/api.php вы можете делать пост запросы без проверок и не только. Главное, в контроллере обрабатывайте их правильно.
А лучше всего почитайте про API Laravel.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@tvbird
А вы csrf от laravel указали в хидере запроса?
Скорее всего срабатывает банальная защита ларки
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
Первый пример про Guzzle, второй - про file_get_contents. При чем тут Laravel - вообще непонятно.

Опишите, что такое "не работает". Ошибки при этом выдает?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽