A library containing base implementations to help with Http Queries and Commands. This library is an extension for CQRS/Bundle and adds support for PSR-7.
- Installation
- Queries
- Commands
- Response Decoders
- Profiler Formatters
composer require lmc/cqrs-http
NOTE: You will also need an implementation for PSR-7, PSR-17 and PSR-18 for HTTP extensions to work.
Query is a request which fetch a data without changing anything. See more here
A base HTTP Query, it abstracts a creating of a Psr\Http\Message\RequestInterface
(PSR-7) using a Psr\Http\Message\RequestFactoryInterface
(PSR-17) (it is directly required to be injected into a query).
It also implements a ProfileableInterface
feature.
Method | Type | Description |
---|---|---|
getRequestType |
final | It declares a request type of a Http query to be a Psr\Http\Message\RequestInterface |
getHttpMethod |
abstract | It requires a query to return a http method of a query. (see PSR Http Message Util) |
getUri |
abstract | This method returns a URI of the Query - it may be just a string or a Psr\Http\Message\UriInterface (PSR-7) instance. |
modifyRequest |
base | If you overwrite this method, you can manipulate a RequestInterface instance. |
getProfilerId |
base | It's a predefined creating of profiler id for a http query. It creates a profiler id based on http method and uri . |
getProfilerData |
base | If you overwrite this method, you can specify additional profiler data. Default is null (no data). |
__toString |
base | It's a predefined casting a Query into string, it returns a string representation of uri . |
A base HTTP GET Query, it abstracts a creating of a Psr\Http\Message\RequestInterface
(PSR-7) using a Psr\Http\Message\RequestFactoryInterface
(PSR-17) (it is directly required to be injected into a query).
It extends a base AbstractHttpQuery
and predefine some abstract methods. It also adds CacheableInterface
feature, since a GET request is mostly cacheable
Method | Type | Description |
---|---|---|
getHttpMethod |
final | It declares a http method of this query to be GET . |
getUri |
abstract | This method returns a URI of the Query - it may be just a string or a Psr\Http\Message\UriInterface (PSR-7) instance. |
getCacheTime |
base | It returns a default value for a cache time of 30 minutes. |
getCacheKey |
base | It creates a CacheKey out of a static class name (your implementation class name) and a uri , which should create a unique enough cache key for most queries. |
TIP: If you want to use this implementation but don't need a cache, you can simply return a CacheTime::noCache()
in your implementation of getCacheTime
method.
It is responsible for handling a specific Query request and passing a result into OnSuccess
callback. See more here.
This handler supports Psr\Http\Message\RequestInterface
and handles it into Psr\Http\Message\ResponseInterface
.
It also checks a status code of a response and marks it as error if it is an error code:
- 400 ->
HttpBadRequestException
- 500 ->
HttpServerErrorException
Command is a request which change a data and may return result data. See more here
A base HTTP Command, it abstracts a creating of a Psr\Http\Message\RequestInterface
(PSR-7) using a Psr\Http\Message\RequestFactoryInterface
(PSR-17) (it is directly required to be injected into a command).
It also implements a ProfileableInterface
feature.
Method | Type | Description |
---|---|---|
getRequestType |
final | It declares a request type of a Http command to be a Psr\Http\Message\RequestInterface |
getHttpMethod |
abstract | It requires a command to return a http method of a command. (see PSR Http Message Util) |
getUri |
abstract | This method returns a URI of the Command - it may be just a string or a Psr\Http\Message\UriInterface (PSR-7) instance. |
modifyRequest |
base | If you overwrite this method, you can manipulate a RequestInterface instance. |
getProfilerId |
base | It's a predefined creating of profiler id for a http command. It creates a profiler id based on http method and uri . |
getProfilerData |
base | If you overwrite this method, you can specify additional profiler data. Default is null (no data). |
__toString |
base | It's a predefined casting a Command into string, it returns a string representation of uri . |
A base HTTP DELETE Command, it abstracts a creating of a Psr\Http\Message\RequestInterface
(PSR-7) using a Psr\Http\Message\RequestFactoryInterface
(PSR-17) (it is directly required to be injected into a command).
It extends a base AbstractHttpCommand
and predefine some abstract methods.
Method | Type | Description |
---|---|---|
getHttpMethod |
final | It declares a http method of this query to be DELETE . |
A base HTTP PATCH Command, it abstracts a creating of a Psr\Http\Message\RequestInterface
(PSR-7) using a Psr\Http\Message\RequestFactoryInterface
(PSR-17) (it is directly required to be injected into a command).
It extends a base AbstractHttpCommand
and predefine some abstract methods.
Method | Type | Description |
---|---|---|
getHttpMethod |
final | It declares a http method of this query to be PATCH . |
A base HTTP POST Command, it abstracts a creating of a Psr\Http\Message\RequestInterface
(PSR-7) using a Psr\Http\Message\RequestFactoryInterface
(PSR-17) (it is directly required to be injected into a command).
It extends a base AbstractHttpCommand
and predefine some abstract methods.
Method | Type | Description |
---|---|---|
getHttpMethod |
final | It declares a http method of this query to be POST . |
createBody |
abstract | It requires a command to return an instance of Psr\Http\Message\StreamInterface which is used as a POST request body. |
createRequest |
base | It creates a request with a body. |
getProfilerData |
base | It adds a Body into additional data for profiler, so it may be shown later in profiler. |
A base HTTP PATCH Command, it abstracts a creating of a Psr\Http\Message\RequestInterface
(PSR-7) using a Psr\Http\Message\RequestFactoryInterface
(PSR-17) (it is directly required to be injected into a command).
It extends a base AbstractHttpCommand
and predefine some abstract methods.
Method | Type | Description |
---|---|---|
getHttpMethod |
final | It declares a http method of this query to be PATCH . |
It is responsible for handling a specific Command request and passing a result into OnSuccess
callback. See more here.
This handler supports Psr\Http\Message\RequestInterface
and handles it into Psr\Http\Message\ResponseInterface
.
It also checks a status code of a response and marks it as error if it is an error code:
- 400 ->
HttpBadRequestException
- 500 ->
HttpServerErrorException
It is meant to decode a response (a result of either QueryHandlerInterface
or a SendCommandHandlerInterface
). See more here.
It decodes a Psr\Http\Message\ResponseInterface
into a Psr\Http\Message\StreamInterface
by getting a body of a response.
It decodes a Psr\Http\Message\StreamInterface
into a string
by getting a stream contents (if possible).
Note: There is also a JsonResponseDecoder which decodes a string into an array.
It formats a Psr\Http\Message\MessageInterface
and Psr\Http\Message\StreamInterface
into a readable format, so a data is nicer in profiler.