HttpClient — API
Высокоуровневый Client
Заголовок раздела «Высокоуровневый Client»| Метод | Аргументы |
|---|---|
__construct(array $options = []) | Настройки ConnectionPool, с особенностью recursive merge. |
get(string $url, array $headers = [], $success = null, $error = null): mixed | GET и callbacks результата. |
post(string $url, array $data = [], array $headers = [], $success = null, $error = null): mixed | POST с массивом данных. |
request(string $url, string $method = 'GET', array $data = [], array $headers = [], array $options = []) | Общий запрос; method/data/headers/url в options перезаписываются явными аргументами. |
При наличии success callback запрос не возвращает Response синхронно. Без success на Unix используется suspension loop; фактическая возможность такого ожидания зависит от event backend и контекста вызова.
process($address) и recycleConnectionFromRequest($request, $response) публичны, но управляют внутренней очередью и pool lifecycle. Не вызывайте их вручную для повторного выполнения пользовательского запроса.
Request options
Заголовок раздела «Request options»| Поле | Значение |
|---|---|
success | Callable с HTTP Response. |
error | Callable с ошибкой. |
progress | Callable с очередным фрагментом body. |
version | Версия HTTP, передаваемая в объект запроса. |
query | Строка/массив query; массив превращается в RFC3986-query через http_build_query(). |
allow_redirects.max | Default 5; учитывайте recursive merge и отсутствие boolean disable-контракта. |
Не добавляйте сюда наугад json, verify, auth, sink, cookies и другие параметры знакомого стороннего HTTP-клиента: этот пакет не объявляет их обработку.
Низкоуровневый Client\Request
Заголовок раздела «Низкоуровневый Client\Request»new Request(string $url) создаёт GET-запрос и emitter. setOptions() меняет локальные опции через recursive merge; getOptions() возвращает их. write() дополняет body; массив становится form body либо multipart при ключе multipart. end() применяет опции и завершает отправку. После начала отправки повторная запись не разрешается.
attachConnection()/detachConnection() связывают request с AsyncTcpConnection. getConnection() читает эту связь. Обработчики onConnect/onMessage/onError/onUnexpectClose обслуживают сетевой lifecycle; они не предназначены для самостоятельной симуляции успешного ответа в приложении.
События: success, error, progress. on, once, removeListener, removeAllListeners делегируют emitter. Метод listeners() в Request имеет несовместимый с возвращаемым массивом declared return type static; не используйте его как корректный публичный способ инспекции подписок.
Request::redirect() возвращает новый message либо false, использует относительное разрешение Location и guardMax. Для repeat body нужен перематываемый stream; это не означает, что произвольный одноразовый поток можно повторно отправить.
ConnectionPool
Заголовок раздела «ConnectionPool»fetch($address, $ssl) выдаёт свободное соединение либо создаёт новое, пока не достигнут лимит. При исчерпании соединений Client оставляет запрос в очереди.
recycle() возвращает установленное соединение в idle, очищая request callbacks; неустановленное соединение не становится reusable. delete() удаляет запись из pool maps. closeTimeoutConnection() обслуживается Timer и закрывает соединения по idle/connect/request-времени.
Нет публичного transaction, per-request cancellation token, retry policy или circuit breaker. Освобождение соединения не означает повторной безопасной отправки бизнес-операции.
Response и ParallelClient
Заголовок раздела «Response и ParallelClient»Client\Response добавляет строковое представление body к базовому PSR7 Response; другие методы наследуются с его семантикой изменения объектов.
ParallelClient::push($url, $options) и batch($set) накапливают элементы. await(bool $errorThrow = false) пытается вернуть index => [successFlag, responseOrException], но текущий вызов request внутри него несовместим с сигнатурой Client. Обработка errorThrow не исправляет эту несовместимость.