lmc / cqrs-http
一个包含帮助处理Http查询和命令的基本实现的库
Requires
- php: ^8.2
- ext-json: *
- ext-mbstring: *
- fig/http-message-util: ^1.1
- lmc/cqrs-types: ^3.2
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.0 || ^2.0
Requires (Dev)
- ergebnis/composer-normalize: ^2.5
- guzzlehttp/psr7: ^2.1
- lmc/coding-standard: ^3.3
- nyholm/psr7: ^1.4
- php-parallel-lint/php-parallel-lint: ^1.2
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ^1.4
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^11.0.4
README
一个包含帮助处理Http查询和命令的基本实现的库。此库是CQRS/Bundle的扩展,并增加了对PSR-7的支持。
目录
安装
composer require lmc/cqrs-http
注意:您还需要为HTTP扩展的实现提供PSR-7、PSR-17和PSR-18的实现。
查询
查询是一个请求,它获取数据但不改变任何内容。了解更多信息
AbstractHttpQuery
一个基本的HTTP查询,它抽象了使用Psr\Http\Message\RequestFactoryInterface
(PSR-17)创建Psr\Http\Message\RequestInterface
(PSR-7)的过程(它直接需要被注入到查询中)。
它还实现了ProfileableInterface
功能。
AbstractHttpGetQuery
一个基本的HTTP GET 查询,它抽象了使用Psr\Http\Message\RequestFactoryInterface
(PSR-17)创建Psr\Http\Message\RequestInterface
(PSR-7)的过程(它直接需要被注入到查询中)。
它扩展了基本的AbstractHttpQuery
并预定义了一些抽象方法。它还增加了CacheableInterface
功能,因为GET请求通常是可以缓存的
提示:如果您想使用此实现但不需要缓存,您可以在getCacheTime
方法的实现中简单地返回CacheTime::noCache()
。
查询处理器
它负责处理特定的查询请求并将结果传递给OnSuccess
回调。了解更多信息。
Http查询处理器
此处理器支持Psr\Http\Message\RequestInterface
并将它处理成Psr\Http\Message\ResponseInterface
。
它还会检查响应的状态码,并将其标记为错误,如果它是错误代码
- 400 ->
HttpBadRequestException
- 500 ->
HttpServerErrorException
命令
命令是一个请求,它改变数据并且可能返回结果数据。了解更多信息
AbstractHttpCommand
一个基本的HTTP命令,它抽象了使用Psr\Http\Message\RequestFactoryInterface
(PSR-17)创建Psr\Http\Message\RequestInterface
(PSR-7)的过程(它直接需要被注入到命令中)。
它还实现了ProfileableInterface
功能。
AbstractHttpDeleteCommand
一个基本的HTTP DELETE 命令,它抽象了使用Psr\Http\Message\RequestFactoryInterface
(PSR-17)创建Psr\Http\Message\RequestInterface
(PSR-7)的过程(它直接需要被注入到命令中)。
它扩展了基本的AbstractHttpCommand
并预定义了一些抽象方法。
AbstractHttpPatchCommand
一个基本的HTTP PATCH 命令,它通过使用Psr\Http\Message\RequestFactoryInterface
(PSR-17) 抽象创建一个Psr\Http\Message\RequestInterface
(PSR-7)(直接需要注入到命令中)。
它扩展了基本的AbstractHttpCommand
并预定义了一些抽象方法。
AbstractHttpPostCommand
一个基本的HTTP POST 命令,它通过使用Psr\Http\Message\RequestFactoryInterface
(PSR-17) 抽象创建一个Psr\Http\Message\RequestInterface
(PSR-7)(直接需要注入到命令中)。
它扩展了基本的AbstractHttpCommand
并预定义了一些抽象方法。
AbstractHttpPutCommand
一个基本的HTTP PATCH 命令,它通过使用Psr\Http\Message\RequestFactoryInterface
(PSR-17) 抽象创建一个Psr\Http\Message\RequestInterface
(PSR-7)(直接需要注入到命令中)。
它扩展了基本的AbstractHttpCommand
并预定义了一些抽象方法。
发送命令处理器
它负责处理特定的命令请求,并将结果传递给OnSuccess
回调。 了解更多。
Http Send Command Handler
此处理器支持Psr\Http\Message\RequestInterface
并将它处理成Psr\Http\Message\ResponseInterface
。
它还会检查响应的状态码,并将其标记为错误,如果它是错误代码
- 400 ->
HttpBadRequestException
- 500 ->
HttpServerErrorException
响应解码器
它旨在解码响应(无论是QueryHandlerInterface
还是SendCommandHandlerInterface
的结果)。 了解更多。
HttpMessageResponseDecoder
它通过获取响应体将Psr\Http\Message\ResponseInterface
解码为Psr\Http\Message\StreamInterface
。
StreamResponseDecoder
它通过获取流内容将Psr\Http\Message\StreamInterface
解码为string
(如果可能的话)。
注意:还有一个JsonResponseDecoder,它将字符串解码为数组。
分析器格式化工具
HttpProfilerFormatter
它将Psr\Http\Message\MessageInterface
和Psr\Http\Message\StreamInterface
格式化为可读格式,以便在分析器中数据看起来更美观。