базовый uri не основан на экземпляре клиента guzzle
я использую lumen, пытаясь настроить простые запросы api через guzzle.
проблема в том, что параметр base_uri не кажется правильно переданным на начальном new Client()
.
упрощенный пример:
use GuzzleHttpClient;
$client = new Client([
'base_uri' => 'https://siteurl.com/api/v2'
]);
затем вызов api через get
$res = $client->get('orders', [
'query' => [
'status' => 'completed'
]
]);
не работает. Я был осторожен, чтобы не использовать абсолютные URL-адреса, такие как /orders
. Если я полностью обойду base_uri и просто добавлю его в метод get $client->get('https://siteurl.com/api/v2/orders')
, он работает.
Я с помощью: "laravel / lumen-framework": "5.0.*", "guzzlehttp / guzzle": "^6.0"
*последующих:
я добавил флаг отладки, чтобы я мог сравнить заголовки, и заметная разница находится в строке запроса get.
абсолютный url в методе get (в обход base_uri):
GET / api/v2 / orders?status=завершено HTTP / 1.1
использование base_uri (версия удаляется):
вам / api / заказы?status=завершено HTTP / 1.1
1 ответов
вам нужно завершить base_uri с косой чертой/
Е. Г.,
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://siteurl.com/api/v2/'
]);
изменить: Примечание это base_uri для Guzzle 6+, тогда как предыдущие версии использовали base_url.