Guzzle - Команда и службы: базовая аутентификация HTTP
Ранее я успешно использовал guzzlehttp/guzzle v.6.*
Пакет с параметрами аутентификации выглядит так:
$client = new GuzzleClient([
'base_uri' => $base_uri ,
'auth' => [ $username, $password ]
]);
Это прекрасно работает. Тем не менее, я сейчас пытаюсь использовать "guzzlehttp/guzzle-services": "0.5.*"
пакет, облегчающий работу с конечными точками API.
Используя следующий пример со страницы Github-сервисов Guzzle-Services:
use GuzzleHttp\Client;
use GuzzleHttp\Command\Guzzle\GuzzleClient;
use GuzzleHttp\Command\Guzzle\Description;
$client = new Client();
$description = new Description([
'baseUrl' => 'http://httpbin.org/',
'operations' => [
'testing' => [
'httpMethod' => 'GET',
'uri' => '/get/{foo}',
'responseModel' => 'getResponse',
'parameters' => [
'foo' => [
'type' => 'string',
'location' => 'uri'
],
'bar' => [
'type' => 'string',
'location' => 'query'
]
]
]
],
'models' => [
'getResponse' => [
'type' => 'object',
'additionalProperties' => [
'location' => 'json'
]
]
]
]);
$guzzleClient = new GuzzleClient($client, $description);
$result = $guzzleClient->testing(['foo' => 'bar']);
Как и где в мире добавить параметры аутентификации при использовании "guzzlehttp/guzzle-services": "0.5.*"
пакет?
Я старался всеми возможными способами, но не могу заставить его работать.
2 ответа
Мне удалось использовать Guzzle 6.2.2 и Guzzle Services 1.0.0 с Basic Auth с этим кодом:
$config['auth'] = array('user', 'pass');
$client = new Client($config);
Конечно, вам могут понадобиться другие настройки, но для Basic Auth требуется только это. Проверить GuzzleHttp\Client::applyOptions
метод класса, чтобы увидеть, когда Guzzle использует этот параметр.
Это очень похоже на ответ @revo, но без основного массива 'defaults'.
Это мои установленные пакеты:
"
gimler/guzzle-description-loader v0.0.2 Load guzzle service description from various file formats
guzzlehttp/command 1.0.0 Provides the foundation for building command-based web service clients
guzzlehttp/guzzle 6.2.2 Guzzle is a PHP HTTP client library
guzzlehttp/guzzle-services 1.0.0 Provides an implementation of the Guzzle Command library that uses Guzzle service descriptions to describe web services, se...
guzzlehttp/promises 1.3.0 Guzzle promises library
guzzlehttp/psr7 1.3.1 PSR-7 message implementation
"
Я сомневаюсь, если Description
Класс предоставляет способ объединения аутентификационной информации с запросом. Но вы можете добавить их при создании нового Client
в Guzzle v5.x вот так:
$client = new Client(['defaults' => ['auth' => ['user', 'pass']]]);