davidecesarano/胚胎中间件

PSR-15 中间件调度器。

1.0.0 2020-11-14 13:30 UTC

This package is auto-updated.

Last update: 2024-09-14 22:01:17 UTC


README

简单的调度器 (PSR-15 服务器请求处理器) 用于 PSR-15 中间件队列。请求处理器和中间件组件是任何 Web 应用的基本部分。服务器端代码接收请求消息,处理它,并产生响应消息。HTTP 中间件是将常见请求和响应处理从应用层移动出去的一种方式。

要求

安装

使用 Composer

$ composer require davidecesarano/embryo-middleware

使用方法

RequestHandler 是一个 PSR-15 中间件队列的容器。它有三个方法

  • 方法 add 将中间件添加到队列的末尾。
  • 方法 prepend 将中间件添加到队列的开始。
  • 方法 dispatch 需要两个参数,一个 ServerRequest 对象和一个 Response 对象(由终止器用于返回空响应)。

设置 ServerRequest 和 Response

创建 ServerRequestResponse 对象。

use Embryo\Http\Server\RequestHandler;
use Embryo\Http\Factory\{ServerRequestFactory, ResponseFactory};
use Middlewares\{Uuid, ResponseTime};
use Psr\Http\Message\ServerRequestInterface;

// PSR-7 implementation
$request = (new ServerRequestFactory)->createServerRequestFromServer();
$response = (new ResponseFactory)->createResponse(200);

添加中间件

使用 add 方法或构造函数创建 PSR-15 中间件队列。添加(和 prepend)方法必须是一个字符串或 MiddlewareInterface 的实例。在构造函数中,您可以创建一个包含字符串或 MiddlewareInterface 实例的队列。

在这个示例中,我们使用了两个 PSR-15 兼容的中间件: Uuid 中间件ResponseTime 中间件

// PSR-15 MiddlewareInterface implementation
$middleware = new RequestHandler([
    Uuid::class,
    ResponseTime::class
]);
$response = $middleware->dispatch($request, $response);

结果

调度器产生响应消息。

echo 'X-Response-Time: ' . $response->getHeaderLine('X-Response-Time').'<br/>';
echo 'X-Uuid: ' . $response->getHeaderLine('X-Uuid').'<br/>';

echo '<pre>';
    print_r($response->getHeaders());
echo '</pre>';

示例

您可以通过内置的 PHP 服务器快速测试此功能,访问 https://:8000

$ cd example
$ php -S localhost:8000