В какой момент объекты запроса и ответа заполняются в экспресс-приложении - PullRequest
1 голос
/ 31 мая 2019

Я всегда кодирую API-интерфейсы бэкэнда, и я не совсем понимаю, как экспресс делает ставку с моим кодом. Я знаю, что предлагают объекты запроса и ответа, я просто не понимаю, как они появляются.

Это упрощенный код, например:

exports.getBlurts = function() {
    return function(req, res) { 

    // build query…

    qry.exec(function(err, results) {
            res.json(results);
        }
    });
  } 
}

Тогда я позвоню по одному из моих маршрутов:

app.get('/getblurts/, middleware.requireUser, routes.api.blurtapi.getBlurts());

Я понял, что функция вызывается при запросе маршрута. Хотя это очень абстрактно для меня, и я не понимаю, когда, где и как это относится к вводимым параметрам запроса.

Например. Я использую CMS, которая изменяет объект запроса, добавляя свойство пользователя, которое затем доступно глобально для всех запросов, сделанных AJAX или иным образом, что позволяет легко определить, вошел ли пользователь в систему.

Являются ли объекты req и res предварительно приготовленными экспрессом, но позволяют ли вам изменять их в соответствии с вашими потребностями? Когда они на самом деле «построены»

1 Ответ

1 голос
/ 31 мая 2019

В сущности, экспресс на самом деле использует http-модуль узла по умолчанию и передает экспресс-приложение в качестве обратного вызова функции http.createServer.Объекты запроса и ответа заполняются в этой точке, то есть от самого узла для каждого входящего соединения.См. документацию по nodeJS для получения более подробной информации о http-модуле узла и о том, что такое req / res.

Возможно, вы захотите проверить express 'исходный код , который показывает, какэкспресс-приложение передается в виде обратного вызова на http.createServer.

https://github.com/expressjs/express/blob/master/lib/request.js и https://github.com/expressjs/express/blob/master/lib/response.js, показывающих, как запрос / ответ узла расширяется специальными функциями экспресса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...