В Node.js и Express Framework я не могу получить значение из HTTP-контекста для запросов POST и PUT, пока он работает для GET. Я использую httpContext, чтобы установить уникальный идентификатор requestId, чтобы я мог использовать его при ведении журнала для отслеживания запросов API.
Я обнаружил, что HttpContext может быть сброшен некоторыми другими пакетами в промежуточном программном обеспечении, есть ли лучший способ хранить данные для области запроса, к которой можно обращаться во всех модулях.
файл app.js
//define dependencies
const express = require("express");
const helmet = require("helmet");
const morgan = require("morgan");
const config = require("config");
const instagram = require("passport-instagram");
const passport = require("passport");
const authRouter = require("./router/authRouter");
const userRouter = require("./router/userRouter");
const customerRouter = require("./router/customerRouter");
const cartRouter = require("./router/cartRouter");
const orderRouter = require("./router/orderRouter");
const reviewRouter = require("./router/reviewRouter");
const providerRouter = require("./router/providerRouter");
const itemRouter = require("./router/itemRouter");
const superAdminRouter = require("./router/superAdminRouter");
const baseRouter = require("./router/baseRouter");
const goCreditRouter = require("./router/goCreditRouter");
const Connection = require("./database/connection.js");
const providerAppRouter = require("./router/providerAppRouter.js");
const paymentRouter =require("./router/paymentRouter.js");
const UserBean =require("./businessobjects/UserBean.js");
const CustomerBean =require("./businessobjects/CustomerBean.js");
const express_logger = require('express-logger-unique-req-id');
const app = express();
const app = express();
app.use(httpContext.middleware);
//Assign unique identifier to each req
app.use(function (req, res, next) {
let test = uuidv1();
httpContext.set("reqId", test);
next();
});
const PORT = process.env.PORT || 3001;
Connection.setupPool();
app.use(express.json());
app.use(helmet());
if (app.get("env") === "development") {
app.use(morgan("tiny"));
}
//use to access a resource in the root through url
app.use(express.static("resource"));
app.use("/users", userRouter);
//Code For Instagram authentication Using Passport
logger.info("End-Instagram Authentication Configuration");
app.listen(PORT, () => {
logger.info(`app running port ${PORT}`);
});
Мой код для получения reqId из httpContext
logger.js
message = httpContext.get("reqId") ? "RequestId: " +
httpContext.get("reqId")+" "+ message: ""+ message ;