php-middleware / request-id
Request Id middleware with PSR-7
Installs: 239 319
Dependents: 2
Suggesters: 0
Security: 0
Stars: 34
Watchers: 4
Forks: 4
Open Issues: 1
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-12-18 04:55:56 UTC
README
PSR-7 Request ID middleware
This middleware provide framework-agnostic possibility to generate and add to request/response's header Request ID (Correlation ID).
Installation
composer require php-middleware/request-id
Usage
This middleware require in contructor PhpMiddleware\RequestId\RequestIdProviderFactoryInterface
implementation which
must create a new RequestIdProviderInterface
object. We provide RequestIdProvider
default implementation.
$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);
All Provider factory constructor options:
PhpMiddleware\RequestId\Generator\GeneratorInterface
$generator
- generator implementation (required)bool|PhpMiddleware\RequestId\OverridePolicy\OverridePolicyInterface
$allowOverride
(defaulttrue
) - iftrue
and request id header exists in incoming request, then value from request header will be used in middleware, using generator will be avoidstring
$requestHeader
(defaultX-Request-Id
) - request header name
How to get request id in my application?
- Middleware implements
RequestIdProviderInterface
, so you are able to usegetRequestId()
method, - from
request-id
attribute inServerRequest
object ($request->getAttribute(RequestIdMiddleware::ATTRIBUTE_NAME)
).
Override policy
You can add your own logic to decide when override incoming request id. You can implement OverridePolicyInterface
and pass it as $allowOverride
variable in constructor.
Monolog processor
We provide simple Monolog processor to add request it to every log entry!
Request decorator
RequestDecorator adds header with request id to your request object. It's useful when your microservices communicate between using PSR-7 HTTP messages e.g. Guzzle.
Request Id generators
To generate request id you need to use implementation of PhpMiddleware\RequestId\Generator\GeneratorInterface
. There are predefined generators in PhpMiddleware\RequestId\Generator\
namespace:
PhpUniqidGenerator
Simple generator using uniqid function.
RamseyUuid1Generator
UUID1 implementations of Ramsey\Uuid. To use it you need to add ramsey/uuid
dependency to your composer.json
.
RamseyUuid3Generator
UUID3 implementations of Ramsey\Uuid. To use it you need to add ramsey/uuid
dependency to your composer.json
.
RamseyUuid4Generator
UUID4 implementations of Ramsey\Uuid. To use it you need to add ramsey/uuid
dependency to your composer.json
.
RamseyUuid4StaticGenerator
Generates Uuid4 like RamseyUuid4Generator
however it's not require any dependency (it use static factory method).
RamseyUuid5Generator
UUID5 implementations of Ramsey\Uuid. To use it you need to add ramsey/uuid
dependency to your composer.json
.
PrefixedGenerator
It adds prefix to generated request id.
Md5Generator
This generator converts generated request id to md5 hash.
It's just works with any modern php framework!
Middleware tested on:
Middleware should works with:
And any other modern framework supported middlewares and PSR-7.