Я хочу получить объект из API с запросом HTTP (например, JQuery AJAX) на внешний api. Как начать? Я занимался исследованиями г-на Google, но я не могу найти ничего полезного.
Я начинаю удивляться, возможно ли это? В этом сообщении Laravel 4 делает запрос на отправку с контроллера на внешний URL с данными, похоже, что это можно сделать. Но нет ни одного примера, ни источника, где можно найти какую-либо документацию.
Пожалуйста, помогите мне?
На основании ответа на аналогичный вопрос: https://stackoverflow.com/a/22695523/1412268
Взгляните на Guzzle
$client = new GuzzleHttp\Client(); $res = $client->get('https://api.github.com/user', ['auth' => ['user', 'pass']]); echo $res->getStatusCode(); // 200 echo $res->getBody(); // { "type": "User", ....
Мы можем использовать пакет Guzzle в Laravel, это HTTP-клиент PHP для отправки HTTP-запросов.
Вы можете установить Guzzle через композитор
composer require guzzlehttp/guzzle:~6.0
Или вы можете указать Guzzle как зависимость от существующего в вашем проекте композитора.json
{ "require": { "guzzlehttp/guzzle": "~6.0" } }
Пример кода в laravel 5 с использованием Guzzle, как показано ниже,
use GuzzleHttp\Client; class yourController extends Controller { public function saveApiData() { $client = new Client(); $res = $client->request('POST', 'https://url_to_the_api', [ 'form_params' => [ 'client_id' => 'test_id', 'secret' => 'test_secret', ] ]); echo $res->getStatusCode(); // "200" echo $res->getHeader('content-type'); // 'application/json; charset=utf8' echo $res->getBody(); // {"type":"User"...' }
Вы просто хотите вызвать внешний URL-адрес и использовать результаты? PHP делает это из коробки, если мы говорим о простом запросе GET к чему-то, обслуживающему JSON:
$json = json_decode(file_get_contents('http://host.com/api/stuff/1'), true);
Если вы хотите сделать почтовый запрос, это немного сложнее, но есть множество примеров, как сделать это с помощью curl.
Поэтому я думаю, что вопрос: что именно вы хотите?
Если вам просто нужно запустить запрос на внешний API, вы можете использовать класс Laravel Request следующим образом (предположим, что вы используете GET-запрос)
$request = Request::create('http://your-api.com', 'GET');
Но если вам нужно получить содержание ответа, вы можете использовать пакет Laracurl следующим образом:
$response = Laracurl::get('http://your-api.com');
Вы можете использовать Httpful:
Веб-сайт: http://phphttpclient.com/
Вы можете делать запросы с использованием Laravel и без внешних пакетов
$request = \Illuminate\Http\Request::create('http://your-api.com', 'POST', ['param1' => 'value1', 'param2' => 'value2']);
Функция запроса предоставляется, поскольку Laravel опирается на пакет запроса Symfony.