Лучшая практика при внедрении сервисного клиента, который упаковывает Guzzle Stack Overflow

Я должен построить класс PHP, в основном, клиент, который упаковывает PHP-клиент Guzzles для получения и отправки данных в REST API. Этот клиент будет находиться в пакете композитора, который потребуется приложению Laravel

Что было бы лучшим способом реализовать это таким образом, чтобы я мог проверить пакет / клиент.

В настоящее время моя реализация должна иметь метод в классе ‘call ()’
это обернет жадности -> запрос

похожий на

    public function call(string $method , string $path, array $query = [], array $auth = [])
{
$query   = array_merge($query, ['api_key' => $this->apikey]);
$uriPath = $this->buildApiUri($path);

try {
$resp = $this->client->request($method, $uriPath, [
'auth'  => $auth,
'query' => $query,
]);

} catch (RequestException $e) {
Log::error('FAIL ' . $uriPath . ' fetch: ' . $e->getMessage());
}

return $this->jsonDecodeOrError($uriPath, $resp);
}

protected function buildApiUri($path)
{
return '/api/' . $this->api_version . $path;
}

Я также думаю, что единственный способ проверить это — передать клиент guzzle в мой собственный клиент, чтобы я мог использовать обработчики имитации Guzzles.

use GuzzleHttp\Client;

public function __construct($apikey, Client $client, $max_retries = 5)

Мой клиент будет иметь только несколько методов для запуска, которые по существу вызывают различные конечные точки отдыха.

Другая проблема, с которой я сталкиваюсь, — это нумерация страниц. Остальной API, о котором я говорю, возвращает постраничные данные, и я хотел бы обработать нумерацию страниц в моем клиенте.

т.е. — если звонок в / пользователей возвращается 10 пользователей на страницу, всего 100 пользователей, Я хотел бы -> getUsers () метод в моем клиентском классе, чтобы вернуть 100 записей.

Можно использовать рывок или сделать цикл по каждому запросу, пока я не верну все записи из API.

Пакет не должен быть специфичным для Laravel (поставщик услуг)

заранее спасибо

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector