Как сохранить переменную для запроса Http - PullRequest
0 голосов
/ 17 января 2020

Я делаю очень простое nodejs приложение, которое использовалось для получения HTTP-запросов и ответов.

Короче говоря, возможно ли хранить переменную глобально для каждого HTTP-запроса? Поэтому мне не нужно передавать эту переменную где-либо в моем приложении. Я знаю, что есть process.env. Однако он будет перезаписан, если одновременно поступит другой запрос.

Причина, по которой я нуждаюсь в этом, заключается в том, что я хочу вести журнал для каждого запроса. * * * * * * * * * * * * * * * * * * * * * * JavaScript программа, которая так запутывает, когда я смотрю на логи.

Например:

  1. Запрос получен (первый запрос)
  2. Запрос получен (второй запрос)
  3. Результатом процесса является zzzzzzz
  4. Результат процесса: ггггггг

Итак, результаты процесса в строке 4 относятся к первому или второму запросу?

Пример моего кода

//In Init.js 
var process = require("process");
http.createServer(function (request, res){
    Console.log("Request Received");
    //Parse the request
    //Generate a unique ID for the requests
    var RequestID = UUID();
    console.log("Request ID is "+ RequestID);  // I don't want to pass this via function parameter as there are so many function involved. 

    process.handler(Request);
}

//In process.js
function handler(Request){
    //do sth with DB / API call and generate the result.
    //the time required is various. 
    console.log("Process result is" + result);
}

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Если у вас нет возражений против «загрязнения» вещей, которыми вы не владеете, вы всегда можете перетащить идентификатор на запрос:

http.createServer(function (request, res){
    var requestID = UUID();
    console.log("Request ID is "+ requestID);
    request.requestId = requestID;
    process.handler(request, res);
}

и вниз по строке вы можете снять его снова чтобы использовать это:

myModule.action(request, response, next) {
    console.log("[" + request.requestId + "]: I made it!");
    next();
}
0 голосов
/ 17 января 2020

Я бы предложил использовать контекстный пакет http-запроса для того, что вы хотите сделать. Взгляните сюда: https://www.npmjs.com/package/http-request-context

...