weblabel / http-client
HTTP客户端包装器
v1.1.1
2021-12-08 22:28 UTC
Requires
- php: >=7.4
- ext-json: *
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.3
- nyholm/psr7: ^1.4.1
- phpstan/phpstan: ^0.12.99
- phpunit/phpunit: ^9.0
- symfony/http-client: ^5.4
README
安装
确保Composer已全局安装,如Composer文档中的安装章节所述。
打开命令行控制台,进入您的项目目录并执行
$ composer require weblabel/http-client
此包使用PSR-7、PSR-17和PSR-18接口,但不提供它们的实现,因此您必须安装实现这些接口的库。
推荐库
$ composer require nyholm/psr7
$ composer require symfony/http-client
基本用法
<?php declare(strict_types=1); require 'vendor/autoload.php'; use Psr\Http\Client\ClientInterface; use Psr\Http\Message\ResponseInterface; use Nyholm\Psr7\Factory\Psr17Factory; use Symfony\Component\HttpClient\Psr18Client; use Weblabel\HttpClient\HttpClient; use Weblabel\HttpClient\RequestFactory; use Weblabel\HttpClient\Factory\JsonRequestFactory; $symfonyClient = new Psr18Client(); $httpClient = new HttpClient($symfonyClient); $psrFactory = new Psr17Factory(); $jsonRequestFactory = new JsonRequestFactory($psrFactory, $psrFactory); $simpleClient = new SimpleClient('https://example.com', $httpClient, $jsonRequestFactory); $statusResponse = $simpleClient->getStatus(); class SimpleClient { private ClientInterface $client; private RequestFactory $requestFactory; private string $baseUri; public function __construct(string $baseUri, ClientInterface $client, RequestFactory $requestFactory) { $this->client = $client; $this->requestFactory = $requestFactory; $this->baseUri = $baseUri; } public function getStatus(): ResponseInterface { $request = $this->requestFactory->get($this->baseUri . '/status'); return $this->client->sendRequest($request); } }