嘟嘟嘟 / http-factory
支持symfony集成的HTTP请求解码和响应编码的HTTP工厂
0.1.0
2024-03-17 13:03 UTC
Requires
- php: ^8.3
- symfony/http-foundation: ^5.4|^6.0|^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.49
- phpunit/phpunit: ^10.5
- rybakit/msgpack: ^0.9|^1.0
- symfony/config: ^5.4|^6.0|^7.0
- symfony/dependency-injection: ^5.4|^6.0|^7.0
- symfony/http-kernel: ^5.4|^6.0|^7.0
- symfony/var-dumper: ^5.4|^6.0|^7.0
- symfony/yaml: ^5.4|^6.0|^7.0
- vimeo/psalm: ^5.21
Suggests
- ext-json: Adds JSON decoder and encoder
- rybakit/msgpack: Adds MSGPACK decoder and encoder
- symfony/config: For Symfony Bundle support
- symfony/dependency-injection: For Symfony Bundle support
- symfony/http-kernel: For Symfony Bundle support
- symfony/yaml: Adds YAML decoder and encoder
This package is auto-updated.
Last update: 2024-08-23 12:03:34 UTC
README
HTTP工厂
一组编码HTTP响应和解码HTTP请求的驱动程序。
安装
PewPew HTTP工厂可以作为Composer仓库使用,您可以使用以下命令在项目根目录下安装
$ composer require pew-pew/http-factory
更详细的安装说明请在这里查看。
使用方法
解码器
// Symfony Request $request = new \Symfony\Component\HttpFoundation\Request(); // Requests Factory $requests = new \PewPew\HttpFactory\RequestDecoderFactory([ new \PewPew\HttpFactory\Driver\JsonDriver(), ]); $payload = $requests ->createDecoder($request) // Detect passed "content-type" header and // create decoder if available. ?->decode($request->getContent(true)); // Decode request body.
编码器
// Symfony Request $request = new \Symfony\Component\HttpFoundation\Request(); // Responses Factory $responses = new \PewPew\HttpFactory\ResponseEncoderFactory([ new \PewPew\HttpFactory\Driver\JsonDriver(), ]); $response = $responses ->createEncoder($request) // Detect passed "accept" header and create // encoder if available. ?->encode(['some' => 'any'], 200); // Encode payload and create response.
symfony集成
将捆绑包添加到您的bundles.php
文件中
// bundles.php return [ // ... PewPew\HttpFactory\HttpFactoryBundle::class => ['all' => true], ];
在您的服务中使用ResponseEncoderFactoryInterface
和RequestDecoderFactoryInterface
use PewPew\HttpFactory\ResponseEncoderFactoryInterface; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; final readonly class ExampleController { public function __construct( private ResponseEncoderFactoryInterface $responses, ) {} public function someAction(Request $request): Response { $encoder = $this->responses->createEncoder($request); if ($encoder === null) { throw new \Symfony\Component\HttpFoundation\Exception\BadRequestException( 'Unsupported "accept" request header', ); } return $encoder->encode([ 'status' => 'ok' ], Response::HTTP_OK); } }