requestID
Middleware for assigning a unique request ID to every incoming HTTP request. Useful for request tracking, logging, and debugging.
Import
import { requestID } from "tezx/middleware";Parameters
const requestID = (
headerName: string = "X-Request-ID",
contextKey: string = "requestID",
): Middleware => { ... }| Parameter | Type | Default | Description |
|---|---|---|---|
headerName | string | "X-Request-ID" | The HTTP header to store the request ID. |
contextKey | string | "requestID" | Key to store the request ID in the TezX context (ctx). |
Behavior
-
Checks if the incoming request already has the request ID header.
-
If not present, generates a new unique ID using
generateUUID(). -
Sets the request ID in:
- HTTP header (
ctx.headers.set(headerName, requestId)) - TezX context (
ctx[contextKey] = requestId)
- HTTP header (
-
Can be accessed by downstream middleware or handlers using
ctx[contextKey].
Usage
Basic Usage
import { requestID } from "tezx/middleware";
app.use(requestID());
// Access request ID in a route
router.get("/api/data", async (ctx) => {
console.log("Request ID:", ctx.requestID);
return ctx.json({ requestID: ctx.requestID });
});- Adds header:
X-Request-ID: req-<unique-id>Custom Header Name
app.use(requestID("X-Custom-Request-ID"));- Sets the request ID in
X-Custom-Request-IDheader and context keyrequestID:
ctx.requestID // contains the generated IDCustom Context Key
app.use(requestID("X-Request-ID", "reqId"));
// Access in route
router.get("/api/data", async (ctx) => {
console.log(ctx.reqId); // custom context key
return ctx.json({ reqId: ctx.reqId });
});Middleware Type
function requestID(headerName?: string, contextKey?: string): Middleware- Returns a
Middlewarefunction compatible with TezX. - Can be used globally or per-route.
Example with Logger Integration
import {requestID,logger} from "tezx/middleware";
app.use(requestID()); // assign request ID
app.use(logger()); // log requests including request ID
app.get("/api/users", async (ctx) => {
return ctx.json({ requestID: ctx.requestID });
});- Each log can include the unique request ID for traceability.
rateLimiter
The rateLimiter is a middleware for request throttling. It enforces maximum request limits per client using a sliding window and supports custom client identification, custom storage, and custom error handling.
sanitizeHeaders
Middleware for sanitizing HTTP headers to enhance security and compliance. It allows you to whitelist allowed headers, blacklist disallowed headers, and removes dangerous or unnecessary headers to prevent information leakage or header injection attacks.