Я хочу получить объект из API с запросом HTTP (например, jQuery AJAX) на внешний api. Как начать? Я исследовал г-на Google, но я не могу найти ничего полезного.
Мне кажется, что это возможно? В этом сообщении Laravel 4 делает запрос от контроллера к внешнему URL с данными, похоже, что это можно сделать. Но нет ни одного примера, ни источника, где можно найти какую-либо документацию.
Пожалуйста, помогите мне?
Основываясь на ответе на подобный вопрос здесь: https://stackoverflow.com/questions/22694289/call-external-api-function-from-controller-laravel-4
Взгляните на 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, это PHP-клиент HTTP для отправки HTTP-запросов.
Вы можете установить Guzzle через композитора
composer require guzzlehttp/guzzle:~6.0
Или вы можете указать Guzzle в качестве зависимости в вашем проекте существующего composer.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"...'
}
// "200"
должен быть // 200
потому что возвращаемое значение является целым числом.
Вы просто хотите вызвать внешний 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');
Вы можете делать запросы с использованием Laravel и без внешних пакетов
$request = \Illuminate\Http\Request::create('http://your-api.com', 'POST', ['param1' => 'value1', 'param2' => 'value2']);
Функция запроса предоставляется, поскольку Laravel использует пакет запроса Symfony.
Вы можете использовать Httpful:
Веб-сайт: http://phphttpclient.com/