Мне нужно создать класс PHP, в основном, клиент, который обертывает PHP-клиент Guzzles для получения и отправки данных в REST API.Этот клиент будет находиться в пакете композитора, который потребуется приложению Laravel
. Как лучше всего реализовать это таким образом, чтобы я мог протестировать пакет / клиент.
В настоящее время моя реализация должна иметь метод в классе 'call ()', который обернет Guzzles -> request
аналогично
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, о котором я говорю, возвращает постраничные данные, и я хотел бы обработать нумерацию страниц в моем клиенте.
, т. Е. - если вызов / users возвращает 10 пользователей настраница, в общей сложности 100 пользователей , я хотел бы, чтобы метод -> getUsers () в моем клиентском классе возвращал 100 записей.
Можно ли использовать жрет или сделатьЗацикливайтесь на каждом запросе до тех пор, пока я не получу все записи из API.
Пакет не обязательно должен быть привязан к Laravel (провайдеру услуг)
Заранее спасибо