chocofamilyme/smart-http

HTTP клинте для общения между сервисами

1.1.1 2022-09-16 09:50 UTC

README

HTTP client на основе Guzzle с предустановленными настройками. Можно выполнять настроенные запросы - класс Request, так и самому тонко настраивать запросы - класс Client

Возможности

  • Кэширование GET запросов
  • Автовыключение неработоспособных сервисов (Pattern: Circuit Breaker)
  • Повтор запроса, если сервис не отвечает за тайм аут или отвечает не успешным статусом
  • Выполнение нескольких параллельных асинхронных запросов (Pattern: API Composition)

Требования

  • PHP 7.2+
  • guzzlehttp/guzzle 6.0+
  • ejsmont-artur/php-circuit-breaker

Установка

$ composer require chocofamilyme/smart-http

Пример

Простой GET запрос

    $request = new Chocofamily\SmartHttp\Http\Request($config, $cache);

    $options = [
        'serviceName' => 'serviceA',
        'cache'       => 3600,
        'data'        => [
            'id' => 1
        ],
    ];

    $response = $request->send('GET', 'http://service/item', $options);

Параметр $cache не обязательный. Если он отсутсвует, не работает кэширование запросов и автотключение сервисов.

Парметры, которые содержит объект $config

Парметры $options

Кэширование ответов

Можно кэшировать запросы на время указанное в параметре cache, ключом кэша является url запроса. При формирования ключа на основе url игнорируется query параметры correlation_id и span_id