Как я могу извлечь имя маршрута (путь) на экспресс-узел (во время вызова, из запроса) - PullRequest
0 голосов
/ 28 октября 2018

У меня есть экспресс-сервер nodejs, содержащий общее промежуточное ПО.Там я бы хотел получить название маршрута.Например:

app.use(function (req, res, next) {
  //using some npm pkg allowing me to run function after res.status was sent. This code runs at the very end of the request (after the response)
  onHeaders(res, function () {
    //console #1
    console.log(req.route.path); }) 
  next(); 
});


app.use((req, res, next) => {
  //This code will run before the handler of the api, at the beginning of the request 
  //console #2
  console.log(req.route.path);
});


app.post('/chnagePass/:id', handeler...) //etc

Итак, консоль №1, появляющаяся в конце запроса, печатает / chnagePass /: id.Консоль # 2 не работает, req.route на этом этапе не определена.

Но я хотел бы получить это имя пути на консоли # 2 (в моем случае, по имени маршрута я могурешить, какой будет тайм-аут из некоторой конфигурации).

Как я могу получить имя маршрута в этой точке (например, / chnagePass /: id)?Возможно ли это?

Большое спасибо!

1 Ответ

0 голосов
/ 28 октября 2018

req.route заполняется только для промежуточного программного обеспечения с маршрутом.Но так как вы выполняете консоль # 1 после запроса, я считаю, что объект req уже был мутирован.

Мне удалось воспроизвести то, что вы видите с этим кодом

const express = require("express");

const app = express();

app.use(function(req, res, next) {
  setTimeout(function() {
    console.log("1: " + JSON.stringify(req.route));
  }, 2000);
  next();
});

app.use(function(req, res, next) {
  console.log("2: Route: " + JSON.stringify(req.route));
  console.log("2: Path: " + req.originalUrl);
  next();
});

app.get("/magic/:id", function(req, res) {
  console.log("3: " + JSON.stringify(req.route));
  res.send("Houdini " + req.params.id);
});

app.listen(3300, function() {
  console.log("Server UP!");
});

Вы все еще можете получить точный путь запроса, введя req.originalUrl, как в приведенном выше коде, но это дает вам точный используемый путь, а не определенное совпадение.

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