php-middleware / request-id
支持PSR-7的请求ID中间件
Requires
- php: ^7.1 | ^8.0
- psr/http-message: ^1.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- laminas/laminas-diactoros: ^2.2.1
- phpunit/phpunit: ^7.5.20 | ^8.5.8 | ^9.4.2
- ramsey/uuid: ^3.9.3
Suggests
- ramsey/uuid: To use Ramsey\Uuid 3.0 generator
This package is not auto-updated.
Last update: 2024-09-11 03:42:45 UTC
README
PSR-7 请求ID中间件
此中间件提供了框架无关的可能性,可以在请求/响应的头部中生成和添加请求ID(关联ID)。
安装
composer require php-middleware/request-id
使用方法
此中间件需要在构造函数中提供一个 PhpMiddleware\RequestId\RequestIdProviderFactoryInterface
实现对象,它必须创建一个新的 RequestIdProviderInterface
对象。我们提供了 RequestIdProvider
的默认实现。
$generator = new PhpMiddleware\RequestId\Generator\PhpUniqidGenerator(); $requestIdProvider = new PhpMiddleware\RequestId\RequestIdProviderFactory($generator); $requestIdMiddleware = new PhpMiddleware\RequestId\RequestIdMiddleware($requestIdProvider); $app = new MiddlewareRunner(); $app->add($requestIdMiddleware); $app->run($request, $response);
所有提供者工厂构造函数选项
PhpMiddleware\RequestId\Generator\GeneratorInterface
$generator
- 生成器实现(必需)bool|PhpMiddleware\RequestId\OverridePolicy\OverridePolicyInterface
$allowOverride
(默认true
)- 如果为true
且请求头中存在请求ID,则使用请求头中的值,避免使用生成器string
$requestHeader
(默认X-Request-Id
)- 请求头名称
如何在应用程序中获取请求ID?
- 中间件实现了
RequestIdProviderInterface
,因此您可以使用getRequestId()
方法, - 从
ServerRequest
对象的request-id
属性中获取($request->getAttribute(RequestIdMiddleware::ATTRIBUTE_NAME)
)。
覆盖策略
您可以为决定何时覆盖传入请求ID添加自己的逻辑。您可以实现 OverridePolicyInterface
并将其作为构造函数中的 $allowOverride
变量传递。
Monolog处理器
我们提供简单的 Monolog 处理器 以将请求ID添加到每个日志条目!
请求装饰器
RequestDecorator 将请求ID的头部添加到您的请求对象中。当您的微服务使用PSR-7 HTTP消息进行通信时很有用,例如 Guzzle。
请求ID生成器
要生成请求ID,您需要使用 PhpMiddleware\RequestId\Generator\GeneratorInterface
的实现。在 PhpMiddleware\RequestId\Generator\
命名空间中提供了预定义的生成器。
PhpUniqidGenerator
使用 uniqid 函数的简单生成器。
RamseyUuid1Generator
UUID1 实现 Ramsey\Uuid。要使用它,您需要在您的 composer.json
中添加 ramsey/uuid
依赖项。
RamseyUuid3Generator
UUID3 实现 Ramsey\Uuid。要使用它,您需要在您的 composer.json
中添加 ramsey/uuid
依赖项。
RamseyUuid4Generator
UUID4 实现 Ramsey\Uuid。要使用它,您需要在您的 composer.json
中添加 ramsey/uuid
依赖项。
RamseyUuid4StaticGenerator
生成类似于 RamseyUuid4Generator
的 Uuid4,但不需要任何依赖项(它使用静态工厂方法)。
RamseyUuid5Generator
UUID5 的实现。要使用它,您需要将 ramsey/uuid
依赖项添加到您的 composer.json
文件中。
PrefixGenerator
它为生成的请求 ID 添加前缀。
Md5Generator
该生成器将生成的请求 ID 转换为 MD5 哈希。
它与任何现代 PHP 框架都兼容!
测试过的中间件
中间件应与以下框架一起工作
以及任何其他支持中间件和 PSR-7 的现代框架 支持的中间件和 PSR-7。