базовый 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.