davidecesarano / 胚胎中间件
PSR-15 中间件调度器。
1.0.0
2020-11-14 13:30 UTC
Requires
- php: >=7.1
- davidecesarano/embryo-http: dev-master
- psr/http-server-handler: 1.0.0
- psr/http-server-middleware: 1.0.0
Requires (Dev)
- middlewares/response-time: v1.0.0
- middlewares/uuid: v1.0.0
- phpstan/phpstan: ^0.12.55
This package is auto-updated.
Last update: 2024-09-14 22:01:17 UTC
README
简单的调度器 (PSR-15 服务器请求处理器) 用于 PSR-15 中间件队列。请求处理器和中间件组件是任何 Web 应用的基本部分。服务器端代码接收请求消息,处理它,并产生响应消息。HTTP 中间件是将常见请求和响应处理从应用层移动出去的一种方式。
要求
- PHP >= 7.1
- 一个 PSR-7 http 消息实现和一个 PSR-17 http 工厂实现 (例如 Embryo-Http)
安装
使用 Composer
$ composer require davidecesarano/embryo-middleware
使用方法
RequestHandler 是一个 PSR-15 中间件队列的容器。它有三个方法
- 方法
add
将中间件添加到队列的末尾。 - 方法
prepend
将中间件添加到队列的开始。 - 方法
dispatch
需要两个参数,一个ServerRequest
对象和一个Response
对象(由终止器用于返回空响应)。
设置 ServerRequest 和 Response
创建 ServerRequest
和 Response
对象。
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