From fec9f1ab252a51f6e8a908c4442484e7459c1029 Mon Sep 17 00:00:00 2001 From: Nico Date: Mon, 16 Feb 2026 01:23:42 -0800 Subject: [PATCH] feat: include request id in all json responses --- backend/middleware/request-id.js | 15 +++++++++------ frontend/src/api/axios.js | 16 +++++++++++++++- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/backend/middleware/request-id.js b/backend/middleware/request-id.js index 921d61a..4995420 100644 --- a/backend/middleware/request-id.js +++ b/backend/middleware/request-id.js @@ -28,14 +28,17 @@ function requestIdMiddleware(req, res, next) { res.json = (payload) => { const normalizedPayload = normalizeErrorPayload(payload, res.statusCode); - if ( - isPlainObject(normalizedPayload) && - normalizedPayload.request_id === undefined - ) { - return originalJson({ ...normalizedPayload, request_id: requestId }); + if (isPlainObject(normalizedPayload)) { + if (normalizedPayload.request_id === undefined) { + return originalJson({ ...normalizedPayload, request_id: requestId }); + } + return originalJson(normalizedPayload); } - return originalJson(normalizedPayload); + return originalJson({ + data: normalizedPayload, + request_id: requestId, + }); }; next(); diff --git a/frontend/src/api/axios.js b/frontend/src/api/axios.js index be106aa..3b302ad 100644 --- a/frontend/src/api/axios.js +++ b/frontend/src/api/axios.js @@ -17,7 +17,21 @@ api.interceptors.request.use((config => { })); api.interceptors.response.use( - response => response, + response => { + const payload = response.data; + if ( + payload && + typeof payload === "object" && + !Array.isArray(payload) && + Object.keys(payload).length === 2 && + Object.prototype.hasOwnProperty.call(payload, "data") && + Object.prototype.hasOwnProperty.call(payload, "request_id") + ) { + response.request_id = payload.request_id; + response.data = payload.data; + } + return response; + }, error => { const payload = error.response?.data; const normalizedMessage = payload?.error?.message || payload?.message;