poem-web / poem

A full-featured and easy-to-use web framework with the Rust programming language.
Apache License 2.0
3.62k stars 295 forks source link

RequestId Middleware #806

Closed vbrandl closed 6 months ago

vbrandl commented 6 months ago

This PR introduces a feature-gated RequestId middleware that associates an unique ID with each incoming request. ReqId can be extracted in request handlers and returned as a response (e.g. for error pages). Each response contains a header with the ID (default name: x-request-id but the header name is configurable).

The Tracing middleware was made aware of the request ID and adds it to the request span (for this to work, the order of the middlewares is important. Tracing must be applied before RequestId.

If ReuseId::Use is set, the middleware will propagate the request ID from an incoming request. If the request contained an x-request-id header (or whatever header name is configured), this value will be used.

sunli829 commented 6 months ago

thanks 🙂