php-middleware/request-id

支持PSR-7的请求ID中间件

4.1.0 2020-12-08 00:15 UTC

README

Build Status

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