Я пытаюсь сделать API-запрос API Github только для тестирования. Я установил последнюю версию Guzzle («жмет / жрать»: «^ 3.9») на моем Laravel 5.1 APP. В моих routes.php
меня есть следующий код:
Route::get('guzzle/{username}', function($username) { $client = new Client([ 'base_uri' => 'https://api.github.com/users/', ]); $response = $client->get("/users/$username"); dd($response); });
Если я сейчас перейду на URL-адрес domain.dev/github/kayyyy, я получу ошибку cURL error 6: Could not resolve host: users
.
Почему я получаю эту ошибку?
Если я посещаю https://api.github.com/users/kayyyy, я могу увидеть выход json
.
Я также использую Homestead / Vagrant, может быть, это проблема, которую не может решить хозяин?
EDIT Если я попробую это без base_uri, это сработает.
Route::get('guzzle/{username}', function($username) { $client = new GuzzleHttp\Client(); $response = $client->get("https://api.github.com/users/$username"); dd($response); });
Почему вы вызываете $client->get->()->send()
? В частности, почему вы цепляете метод send () в конце? Документация не добавляет метод send()
при демонстрации того, что похоже на одно и то же действие:
http://guzzle.readthedocs.org/en/latest/quickstart.html#creating-a-client
Кроме того, рассмотрели ли вы последствия этого заявления на вышеприведенной странице руководства?
Когда относительный URI предоставляется клиенту, клиент будет комбинировать базовый URI с относительным URI, используя правила, описанные в RFC 3986, раздел 2.
Фактически переменная интерполяция невозможна в одинарных кавычках. Это означает, что вы в настоящее время вызываете users/$username
а переменная $username
не заменяется ее значением.
Чтобы получить его, вы должны использовать его одним из следующих способов:
$response = $client->get("users/$username")->send(); $response = $client->get('users/' . $username)->send();
Я лично предпочитаю второй, так как предполагается, что он быстрее.
Хорошо, я решил, глупая ошибка. Я использовал new Client
.
И это должен быть, конечно, new GuzzleHttp\Client
Поскольку это просто для тестирования на моих routes.php
я не routes.php
Namespace
Спасибо за вашу помощь.