art4 / requests-psr18-adapter
使用 WordPress/Requests 作为 PSR-18 HTTP 客户端
1.2.0
2023-11-28 08:52 UTC
Requires
- php: ^7.2 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.1 || ^2.0
- rmccue/requests: ^1.8 || ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^8 || ^9 || ^10
- yoast/phpunit-polyfills: ^2
Provides
This package is auto-updated.
Last update: 2024-08-28 10:18:57 UTC
README
使用 WordPress/Requests 作为 PSR-18 HTTP 客户端适配器。
- 需要 PHP 7.2+
- 支持 Requests v1.8+ 和 v2
为什么?
Requests 是一个用 PHP 编写的 HTTP 库,由于与 PHP 5.6+ 的兼容性,它不支持 PSR-7,也不支持 PSR-18。
我在 Requests 中创建了一个 PR 以添加 PSR-7 支持,但这会给 Requests 增加新的直接依赖。因此,我创建了此库作为 Requests 的可选包装器。如果有一天 Requests 本地支持 PSR-7 和 PSR-18,此库可能会变得过时。
如何使用
使用 Composer 安装
WordPress/Requests PSR-18 Adapter 可在 Packagist 上找到,并可以使用 Composer 进行安装。
composer require art4/requests-psr18-adapter
如果您想在 WordPress 实例的上下文中使用 WordPress/Requests PSR-18 Adapter(例如,在插件或主题中),则应将 "rmccue/requests": "*"
作为 replace
包链接添加。这将防止 Composer 两次安装 rmccue/requests
,导致致命错误。
示例 composer.json
{ "require": { "art4/requests-psr18-adapter": "^1.1" }, "replace": { "rmccue/requests": "*" } }
示例
请查看 示例目录 了解更多示例。
<?php // First, include the Composer autoload.php require_once dirname(__DIR__) . '/vendor/autoload.php'; // Define Requests options $options = [ 'proxy' => '127.0.0.1:8080', 'transport' => $customTransport, // other Requests options ]; // Create the HTTP client $httpClient = new \Art4\Requests\Psr\HttpClient($options); // Create a PSR-7 request and optional set other headers $request = $httpClient->createRequest('GET', 'http://httpbin.org/get'); $request = $request->withHeader('Accept', 'application/json'); try { // Send the request $response = $httpClient->sendRequest($request); } catch (\Psr\Http\Client\ClientExceptionInterface $th) { // Handle errors throw $th; } // Use the PSR-7 Response var_dump($response->getBody()->__toString());