@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 работаю вторую неделю, поэтому такой вопрос. Нид хелп!
  • Вопрос задан
  • 5645 просмотров
Решения вопроса 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 - вообще непонятно.

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

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

Войти через центр авторизации
Похожие вопросы