feat: add request id middleware for api responses

This commit is contained in:
Nico 2026-02-16 01:10:26 -08:00
parent 7fb28e659f
commit b3f607d8f8
2 changed files with 47 additions and 8 deletions

View File

@ -2,8 +2,10 @@ const express = require("express");
const cors = require("cors");
const path = require("path");
const User = require("./models/user.model");
const requestIdMiddleware = require("./middleware/request-id");
const app = express();
app.use(requestIdMiddleware);
app.use(express.json());
// Serve static files from public directory

View File

@ -0,0 +1,37 @@
const crypto = require("crypto");
function generateRequestId() {
if (typeof crypto.randomUUID === "function") {
return crypto.randomUUID();
}
return crypto.randomBytes(16).toString("hex");
}
function isPlainObject(value) {
return (
value !== null &&
typeof value === "object" &&
!Array.isArray(value) &&
Object.prototype.toString.call(value) === "[object Object]"
);
}
function requestIdMiddleware(req, res, next) {
const requestId = generateRequestId();
req.request_id = requestId;
res.locals.request_id = requestId;
res.setHeader("X-Request-Id", requestId);
const originalJson = res.json.bind(res);
res.json = (payload) => {
if (isPlainObject(payload) && payload.request_id === undefined) {
return originalJson({ ...payload, request_id: requestId });
}
return originalJson(payload);
};
next();
}
module.exports = requestIdMiddleware;