Я должен построить класс 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 (поставщик услуг)
заранее спасибо
Задача ещё не решена.
Других решений пока нет …