initphp / http
HTTP
2.1
2023-08-26 14:43 UTC
Requires
- php: >=7.4
- ext-json: *
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.0
README
此库遵循 PSR-7 和 PSR-17 标准,提供 HTTP 消息和 HTTP 工厂解决方案。它还包含一个适用于 PSR-7 的 Emitter 类。
要求
- PHP 7.4 或更高版本
- PSR-7 HTTP 消息接口
- PSR-17 HTTP 工厂接口
- PSR-18 HTTP 客户端接口
安装
composer require initphp/http
使用方法
它遵循 PSR-7、PSR-17、PSR-18 标准,并在很大程度上严格实现了这些接口。
PSR-7 Emitter 使用方法
use \InitPHP\HTTP\Message\{Response, Stream}; use \InitPHP\HTTP\Emitter\Emitter; $response = new Response(200, [], new Stream('Hello World', null), '1.1'); $emitter = new Emitter(); $emitter->emit($response);
或
use \InitPHP\HTTP\Facade\Factory; use \InitPHP\HTTP\Facade\Emitter; $response = Factory::createResponse(200); $response->getBody()->write('Hello World'); Emitter::emit($response);
PSR-17 工厂使用方法
use \InitPHP\HTTP\Factory\Factory; $httpFactory = new Factory(); /** @var \Psr\Http\Message\RequestInterface $request */ $request = $httpFactory->createRequest('GET', 'http://example.com'); // ...
或
use InitPHP\HTTP\Facade\Factory; /** @var \Psr\Http\Message\RequestInterface $request */ $request = Factory::createRequest('GET', 'http://example.com');
PSR-18 客户端使用方法
use \InitPHP\HTTP\Message\Request; use \InitPHP\HTTP\Client\Client; $request = new Request('GET', 'http://example.com'); $client = new Client(); /** @var \Psr\Http\Message\ResponseInterface $response */ $response = $client->sendRequest($request);
或
use \InitPHP\HTTP\Facade\Factory; use \InitPHP\HTTP\Facade\Client; $request = Factory::createRequest('GET', 'http://example.com'); /** @var \Psr\Http\Message\ResponseInterface $response */ $response = Client::sendRequest($request);
PSR-7 流的小差异
如果您正在处理少量内容;PSR-7 流接口可能对您来说有些繁琐。这是因为 PSR-7 流接口会将内容写入 "php://temp" 或 "php://memory"。默认情况下,此库也将用您的内 容覆盖 "php://temp"。要更改此行为,必须在创建 Stream 对象时将其声明为构造函数的第二个参数。
use \InitPHP\HTTP\Stream; /** * This content is kept in memory as a variable. */ $variableStream = new Stream('String Content', null); /** * Content; "php://memory" is overwritten. */ $memoryStream = new Stream('Content', 'php://memory'); /** * Content; "php://temp" is overwritten. */ $tempStream = new Stream('Content', 'php://temp'); // or new Stream('Content');
致谢
许可
版权所有 © 2022 MIT 许可证