PHP规范PSR15(HTTP服务器请求处理程序)介绍

本文档描述了HTTP服务器请求处理程序(“请求处理程序”)和HTTP服务器中间件组件(“中间件”)的常用接口,这些接口使用PSR-7或后续替换PSR所描述的HTTP消息。

HTTP请求处理程序是任何Web应用程序的基本组成部分。服务器端代码接收请求消息,对其进行处理并生成响应消息。 HTTP中间件是一种将常见请求和响应处理从应用程序层移开的方法。

本文档中描述的接口是请求处理程序和中间件的抽象。

注意:对“请求处理程序”和“中间件”的所有引用都特定于服务器请求处理。

本文档中的关键词“必须”,“必须”,“必需”,“应该”,“不应该”,“应该”,“不应该”,“推荐”,“可以”和“可选”按照RFC 2119中的描述进行解释。

1.规格

1.1 请求处理程序

请求处理程序是处理请求并生成响应的单个组件,如PSR-7所定义。

如果请求条件阻止它生成响应,请求处理程序可能会抛出异常。未定义异常类型。

使用此标准的请求处理程序必须实现以下接口:

Psr\Http\Server\RequestHandlerInterface

1.2 中间件

中间件组件是一个单独的组件,通常与其他中间件组件一起参与处理传入请求和创建结果响应,如PSR-7所定义。

如果满足足够的条件,中间件组件可以创建并返回响应而不委托给请求处理程序。

使用此标准的中间件必须实现以下接口:

Psr\Http\Server\MiddlewareInterface

1.3 生成响应

建议生成响应的任何中间件或请求处理程序将组成PSR-7 ResponseInterface的原型或能够生成ResponseInterface实例的工厂,以防止依赖于特定的HTTP消息实现。

1.4 处理例外情况

建议使用中间件的任何应用程序都包含一个捕获异常并将其转换为响应的组件。这个中间件应该是第一个执行的组件,并包装所有进一步的处理,以确保始终生成响应。

2. Interfaces

2.1 Psr\Http\Server\RequestHandlerInterface

以下接口必须由请求处理程序实现。

namespace Psr\Http\Server;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;

/**
 * Handles a server request and produces a response
 *
 * An HTTP request handler process an HTTP request in order to produce an
 * HTTP response.
 */
interface RequestHandlerInterface
{
    /**
     * Handles a request and produces a response
     *
     * May call other collaborating code to generate the response.
     */
    public function handle(ServerRequestInterface $request): ResponseInterface;
}

2.2 Psr \ Http \ Server \ MiddlewareInterface

以下接口必须由兼容的中间件组件实现。

namespace Psr\Http\Server;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;

/**
 * Participant in processing a server request and response
 *
 * An HTTP middleware component participates in processing an HTTP message:
 * by acting on the request, generating the response, or forwarding the
 * request to a subsequent middleware and possibly acting on its response.
 */
interface MiddlewareInterface
{
    /**
     * Process an incoming server request
     *
     * Processes an incoming server request in order to produce a response.
     * If unable to produce the response itself, it may delegate to the provided
     * request handler to do so.
     */
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值