accruio/response-middleware

兼容Relay的响应中间件。

1.0.0 2016-02-22 18:18 UTC

This package is not auto-updated.

Last update: 2024-09-20 18:38:59 UTC


README

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

本包包含以下兼容Relay的响应中间件

  • ResponseSender 发送PSR-7响应
  • ExceptionHandler 处理后续中间件抛出的异常
  • FormContentHandler 反序列化PSR-7请求的URL编码有效负载
  • JsonContentHandler 反序列化PSR-7请求的JSON有效负载
  • JsonDecoder 反序列化PSR-7请求的JSON有效负载 (已弃用)

本包可以通过Composer以relay/middleware的方式安装和自动加载。

ResponseSender

ResponseSender 正如其名,它发送PSR-7响应对象。

ResponseSender$request$response不进行任何操作,立即将它们传递给$next。之后,它获取返回的$response并使用header()echo发送它,并返回发送的$response

ResponseSender 应该放在Relay队列的顶部,以便它是最后一个有机会对返回的响应进行操作的中间件。

要将ResponseSender添加到您的Relay队列中,直接实例化它...

$queue[] = new \Relay\Middleware\ResponseSender();

...或使用您选择的$resolver$queue中实例化它。

ExceptionHandler

同样,ExceptionHandler 正如其名,它捕获通过后续中间件装饰器冒泡上来的任何异常。

ExceptionHandler$request$response不进行任何操作,并在try/catch块内部直接将它们传递给$next。如果没有异常冒泡,它返回来自$next$response。但是,如果它捕获到异常,它返回一个包含异常消息和HTTP 500状态码的全新的$response对象。然后返回新的$response对象。

ExceptionHandler 应该放在Relay队列的顶部附近,但在ResponseSender之后,这样ResponseSender就可以发送返回的$response

要将ExceptionHandler添加到您的队列中,直接用空的$response实现对象实例化...

$queue = new \Relay\Middleware\ExceptionHandler(new ResponseImplementation());

...或使用您选择的$resolver$queue中实例化它。

JsonContentHandler

同样,JsonContentHandler 正如其名,它反序列化PSR-7请求对象的JSON有效负载,并将参数提供给后续中间件装饰器。

JsonContentHandler 检查传入请求的方法是否不是GET,以及是否有application/jsonapplication/vnd.api+jsonContent-Type头。如果找到这两个条件,它解析JSON并将其作为$request解析后的正文提供,然后在传递给$next之前和$response一起传递。如果方法是GETContent-Type头定义了不同的MIME类型,则JsonContentHandler忽略$request并继续链。

要将JsonContentHandler添加到您的队列中,直接实例化...

$queue = new \Relay\Middleware\JsonContentHandler();

...或使用您选择的$resolver$queue中实例化它。

要访问后续中间件中的解码参数,请使用$requestgetParsedBody()方法

$decodedJsonData = $request->getParsedBody();

FormContentHandler

FormContentHandler 几乎与JsonContentHandler完全相同,但它解析以application/x-www-form-urlencoded作为Content-Type的请求的有效负载。

JsonDecoder

注意:此处理程序已被JsonContentHandler取代!

同样,JsonDecoder 正如其名,它反序列化PSR-7请求对象的JSON有效负载,并将参数提供给后续中间件装饰器。

JsonDecoder 检查传入请求的方法是否不是 GET 以及是否包含 application/jsonContent-Type 头部。如果这两个条件都满足,它会解码 JSON 并将其作为 $request解析后的主体 可用,然后在传递给 $next 之前将解码后的 JSON 和响应传递。如果方法是 GET 或者 Content-Type 头部没有指定 application/json,则 JsonDecoder$request 不做任何操作,并将其和响应传递给 $next

要将 JsonDecoder 添加到您的队列中,直接实例化它...

$queue = new \Relay\Middleware\JsonDecoder();

...或使用您选择的$resolver$queue中实例化它。

要访问后续中间件中的解码参数,请使用$requestgetParsedBody()方法

$decodedJsonData = $request->getParsedBody();