The Request ID middleware generates a unique ID for each request and stores it in the Router context, this can be useful to log the request and response information and correlate them.
import { unstable_createRequestIDMiddleware } from "remix-utils/middleware/request-id";export const [requestIDMiddleware, getRequestID] = unstable_createRequestIDMiddleware(); Copy
import { unstable_createRequestIDMiddleware } from "remix-utils/middleware/request-id";export const [requestIDMiddleware, getRequestID] = unstable_createRequestIDMiddleware();
To use it, you need to add it to the unstable_middleware array in your app/root.tsx file.
unstable_middleware
app/root.tsx
import { requestIDMiddleware } from "~/middleware/request-id.server";export const unstable_middleware = [requestIDMiddleware]; Copy
import { requestIDMiddleware } from "~/middleware/request-id.server";export const unstable_middleware = [requestIDMiddleware];
And you can use the getRequestID function in your loaders, actions, and other middleware to get the request ID.
getRequestID
import { getRequestID } from "~/middleware/request-id.server";export async function loader({ request }: LoaderFunctionArgs) { let requestID = getRequestID(); // ...} Copy
import { getRequestID } from "~/middleware/request-id.server";export async function loader({ request }: LoaderFunctionArgs) { let requestID = getRequestID(); // ...}
By default the request ID is a UUID, but you can customize it by passing a function to the unstable_createRequestIDMiddleware function.
unstable_createRequestIDMiddleware
import { unstable_createRequestIDMiddleware } from "remix-utils/middleware/request-id";export const [requestIDMiddleware, getRequestID] = unstable_createRequestIDMiddleware({ generator() { return Math.random().toString(36).slice(2); }, }); Copy
import { unstable_createRequestIDMiddleware } from "remix-utils/middleware/request-id";export const [requestIDMiddleware, getRequestID] = unstable_createRequestIDMiddleware({ generator() { return Math.random().toString(36).slice(2); }, });
The middleware also gets the request ID from the X-Request-ID header if it's present, this can be useful to correlate requests between services.
X-Request-ID
If you want to use a different header you can pass the header name to the unstable_createRequestIDMiddleware function.
import { unstable_createRequestIDMiddleware } from "remix-utils/middleware/request-id";export const [requestIDMiddleware, getRequestID] = unstable_createRequestIDMiddleware({ header: "X-Correlation-ID", }); Copy
import { unstable_createRequestIDMiddleware } from "remix-utils/middleware/request-id";export const [requestIDMiddleware, getRequestID] = unstable_createRequestIDMiddleware({ header: "X-Correlation-ID", });
Sergio XalambrÃ
The Request ID middleware generates a unique ID for each request and stores it in the Router context, this can be useful to log the request and response information and correlate them.
To use it, you need to add it to the
unstable_middleware
array in yourapp/root.tsx
file.And you can use the
getRequestID
function in your loaders, actions, and other middleware to get the request ID.By default the request ID is a UUID, but you can customize it by passing a function to the
unstable_createRequestIDMiddleware
function.The middleware also gets the request ID from the
X-Request-ID
header if it's present, this can be useful to correlate requests between services.If you want to use a different header you can pass the header name to the
unstable_createRequestIDMiddleware
function.Author
Sergio XalambrÃ