amphp / http-client-psr7
Amp HTTP 客户端的 PSR-7 适配器。
v1.1.0
2024-09-04 00:17 UTC
Requires
- php: >=8.1
- amphp/amp: ^3
- amphp/byte-stream: ^2
- amphp/http-client: ^5
- psr/http-client: ^1
- psr/http-factory: ^1
- psr/http-factory-implementation: ^1
- psr/http-message: ^1.1 || ^2
- revolt/event-loop: ^1
Requires (Dev)
Provides
README
AMPHP 是一个为 PHP 设计的事件驱动库集合,考虑到纤维和并发。本包提供 PSR-7 适配器和 PSR-18 客户端作为 amphp/http-client
的插件。
安装
此包可以作为 Composer 依赖项安装。
composer require amphp/http-client-psr7
要求
- PHP 8.1+
使用方法
创建 Amp\Http\Client\Psr7\PsrAdapter
实例以在本地 Amp 和 PSR-7 格式之间转换客户端请求和响应。适配器不依赖于任何具体的 PSR-7 实现,因此需要 PSR-17 工厂接口来创建 PSR-7 请求和响应。
使用 Amp\Http\Client\Psr7\PsrHttpClient
作为 PSR-18 的 ClientInterface
的直接实现。
<?php require 'vendor/autoload.php'; use Amp\Http\Client\HttpClientBuilder; use Amp\Http\Client\Psr7\PsrAdapter; use Amp\Http\Client\Psr7\PsrHttpClient; use Laminas\Diactoros\RequestFactory; use Laminas\Diactoros\ResponseFactory; // Note the laminas/laminas-diactoros library is used only as an example. // You can use any library providing an implementation of PSR-17. // PSR-17 request factory $psrRequestFactory = new RequestFactory(); // PSR-17 response factory $psrResponseFactory = new ResponseFactory(); $psrAdapter = new PsrAdapter($psrRequestFactory, $psrResponseFactory); $ampHttpClient = HttpClientBuilder::buildDefault(); $psrHttpClient = new PsrHttpClient($ampHttpClient, $psrAdapter); $request = $psrRequestFactory->createRequest('GET', 'https://google.com'); // $response is a PSR-7 ResponseInterface instance. $response = $psrHttpClient->sendRequest($request);
Amp 和 PSR-7 实现之间存在一些不兼容性,可能需要特殊处理。
- PSR-7 请求仅包含一个协议版本,但 Amp 请求可以包含多个版本。在这种情况下,适配器会检查协议版本列表是否包含当前 PSR-7 实现的默认版本,否则会抛出异常。您也可以使用
toPsrRequest()
方法的可选参数显式设置协议版本。 - Amp 响应包含对
Request
实例的引用,但 PSR-7 响应不包含;因此您需要显式提供请求实例。
示例
更详细的代码示例位于 examples
目录中。
版本控制
amphp/http-client-psr7
遵循与其他所有 amphp
包一样 semver 语义版本规范。
安全
如果您发现任何安全相关的问题,请使用私人安全问题报告者,而不是使用公共问题跟踪器。
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 LICENSE
。