xepozz/request-id

此包的最新版本(1.0.0)没有可用的许可证信息。

跟踪 Yii 3 请求和响应 ID

1.0.0 2023-04-08 12:04 UTC

This package is auto-updated.

Last update: 2024-08-24 08:29:23 UTC


README

这是一个用于生成唯一请求和响应 ID 的简单库,用于跟踪目的。

Latest Stable Version Total Downloads phpunit codecov type-coverage

安装

composer require xepozz/request-id

用法

将中间件添加到您的应用程序配置中,例如 config/web/params.php

use Xepozz\RequestID\SetRequestIDMiddleware;

return [
    'middlewares' => [
        SetRequestIDMiddleware::class,
        // ErrorCatcher::class,
        // SentryMiddleware::class,
        // Router::class,
        // ...
    ],
];

注意:如果您想查看错误页面中的响应 ID,必须在 ErrorCatcher 中间件之前添加中间件。

请求 ID 提供器

您可以使用 Xepozz\RequestID\RequestIDProviderInterface 接口获取请求 ID

use Xepozz\RequestID\RequestIDProviderInterface;

class HttpClient
{
    public function __construct(
        private RequestIDProviderInterface $requestIDProvider,
    ) {
    }
    
    public function sendRequest(): void
    {
        $requestID = $this->requestIDProvider->get();
        
        // ...
    }
}

配置

使用传入请求 ID

如果您不想使用传入请求的请求 ID,您可以通过在应用程序配置中指定 useIncomingRequestID 参数来禁用此行为

return [
    'xepozz/request-id' => [
        'useIncomingRequestID' => false,
    ],
];

注意:默认情况下,库始终使用标题从传入请求中获取请求 ID。

请求 ID 标题

默认情况下,库使用 X-Request-ID 标题存储请求 ID。相同的标题名称用于设置响应 ID。您可以通过在应用程序配置中指定 headerName 参数来更改标题名称

return [
    'xepozz/request-id' => [
        'headerName' => 'X-Request-ID',
    ],
];

响应 ID 标题

默认情况下,库在请求结束时将标题设置为响应。您可以通过在应用程序配置中指定 setResponseHeader 参数来禁用此行为

return [
    'xepozz/request-id' => [
        'setResponseHeader' => false,
    ],
];

策略

默认情况下,库使用 Xepozz\RequestID\UuidGenerator 生成器。您可以通过在容器中指定 Xepozz\RequestID\RequestIDGeneratorInterface 接口的实现来更改策略

use Xepozz\RequestID\RequestIDGeneratorInterface;
use Xepozz\RequestID\UuidGenerator;

return [
    RequestIDGeneratorInterface::class => UuidGenerator::class,
];

寻找更多模块?

  • Unique ID - 允许您跟踪应用程序中的唯一用户。
  • AB - 一个简单的库,允许您根据一组规则启用 A/B 测试。
  • Feature Flag - 一个简单的库,允许您根据一组规则启用/禁用功能。
  • Shortcut - 为 Yii 3 应用程序的快速开发提供一系列辅助函数。