Предположим, что каждый запрос к моему приложению содержит заголовок MAGIC
, и я хочу где-то ввести это значение заголовка, не обновляя все мои методы запроса. Похоже, что это работа для промежуточного программного обеспечения, не так ли?Использование промежуточного программного обеспечения Express для конфигурации модуля для каждого запроса?
Но это будет потокобезопасным? Есть ли способ сделать это, используя промежуточное ПО Express в мире, где одновременно могут выполняться несколько запросов?
Другими словами, я спрашиваю, является ли промежуточное ПО Express в примере кода заданием глобальной общей переменной или если каждый запрос обрабатывается независимым потоком, где myconfig
является изолированной копией для каждого отдельного запроса.
Пример кода:
var assert = require('assert');
var sleep = require('sleep');
var express = require('express');
var app = express();
var myconfig = {};
app.use(function(req, res, next) {
myconfig.MAGIC = req.headers['MAGIC'];
next();
});
app.get('/test', function(req, res) {
// Pause to make it easy to have overlap.
sleep(2);
// If another request comes in while this is sleeping,
// and changes the value of myconfig.MAGIC, will this
// assertion fail?
// Or is the copy of `myconfig` we're referencing here
// isolated and only updated by this single request?
assert.equal(myconfig.MAGIC, req.headers['MAGIC']);
});