borschphp / httpmessage
PSR-7 和 PSR-17 的实现。
2.1.0
2024-01-24 21:43 UTC
Requires
- php: ^8.1
- ext-json: *
- ext-simplexml: *
- psr/http-factory: ^1
- psr/http-message: ^1||^2
- ralouphie/getallheaders: ^3.0
Requires (Dev)
- nikic/php-parser: ^v4.18
- pestphp/pest: ^1.22
README
简单的 PSR-7 和 PSR-17 实现。
旨在提供一个简单高效的处理 HTTP 请求和响应的方式。
安装
该软件包可以通过 composer 安装。只需运行以下命令
composer require borschphp/httpmessage
用法
PSR-7
该软件包提供了以下 PSR-7 接口的实现
Psr\Http\Message\RequestInterface
Psr\Http\Message\ResponseInterface
Psr\Http\Message\ServerRequestInterface
Psr\Http\Message\StreamInterface
Psr\Http\Message\UriInterface
Psr\Http\Message\UploadedFileInterface
您可以使用该软件包提供的工厂来创建这些类的实例
use Borsch\Http\Factory\{ RequestFactory, ResponseFactory }; $requestFactory = new RequestFactory(); $request = $requestFactory->createRequest('GET', 'https://example.com'); $responseFactory = new ResponseFactory(); $response = $responseFactory->createResponse(200, 'OK'); $response->getBody()->write('<h1>Hello world !</h1>');
PSR-17
该软件包还提供了以下 PSR-17 接口的工厂
Psr\Http\Message\RequestFactoryInterface
Psr\Http\Message\ResponseFactoryInterface
Psr\Http\Message\ServerRequestFactoryInterface
Psr\Http\Message\StreamFactoryInterface
Psr\Http\Message\UriFactoryInterface
Psr\Http\Message\UploadedFileFactoryInterface
您可以使用这些工厂来创建 PSR-7 类的实例。
自定义响应
该软件包还包括自定义响应类以提高可用性和准备就绪
Borsch\Http\Response\EmptyResponse
Borsch\Http\Response\TextResponse
Borsch\Http\Response\HtmlResponse
Borsch\Http\Response\JsonResponse
Borsch\Http\Response\XmlResponse
Borsch\Http\Response\RedirectResponse
这些类建立在 PSR-7 实现之上,并提供了一种方便创建特定类型响应的方法。例如,您可以使用 JsonResponse
类自动设置 Content-Type
标头为 application/json
并将正文设置为 JSON 编码的数据,而不是手动创建响应并设置正确的标头和内容。
use Borsch\Http\Response\JsonResponse; $my_json_data = ['foo' => 'bar', 'baz' => 42]; return new JsonResponse($my_json_data);
测试
该软件包包含一组测试(使用 Pest 创建)以确保一切按预期工作。
您可以通过执行以下命令运行测试
./vendor/bin/pest
该软件包还使用了 Infection
来进行突变测试。
有关 Infection 页面 的更多信息。
要运行突变测试,请按文档中的说明安装 infection
,然后运行此命令
XDEBUG_MODE=coverage infection
将在项目文件夹中生成基于文本和 HTML 的报告。
许可
该软件包采用 MIT 许可证。有关更多信息,请参阅 许可文件。