Как выполнить рефакторинг нескольких app.post с помощью next () в route.post () - PullRequest
1 голос
/ 06 апреля 2020

Я выполняю рефакторинг некоторого кода из моего основного файла в подкаталог, используя маршрутизатор узла. На данный момент я использую:

main. js

const express = require('express');
const app = express();

// ... stuff
app.post('/api/authorize', (request, response, next) => {
  // some promise chain, that makes an external API-call and extracts data
  next();
})

app.post('/api/authorize', (request, response, next) => {
  // verify a JSON webtoken
})

Теперь я пытаюсь реорганизовать это в другой файл

main. js

// ... stuff
app.use( require('./api/authorize') );

api / authorize. js

let express = require('express')
let router = express.Router();

// ... stuff
router.post('api/authorize', (request, response, next) => {
  // some promise chain, that makes an external API-call and extracts data
  next();
})

router.post('/api/authorize', (request, response, next) => {
  // verify a JSON webtoken
})

module.exports = router;

Второй router.post('api/authorize'), кажется, перезаписывает первый один. Итак, первая часть не запускается.

Как мне добиться того же поведения, что и в начальном main.js в api/authorize.js?

1 Ответ

1 голос
/ 06 апреля 2020

Я не вижу такого поведения при попытке.

А также вы можете упростить ваши маршруты авторизации следующим образом:

В основном. js определить общий путь для этого маршрута :

app.use("/api/authorize", require("./routes/authorize"));

На маршруте авторизации теперь нам не нужно повторять /api/authorize.

let express = require("express");
let router = express.Router();

router.post("/", (request, response, next) => {
  // some promise chain, that makes an external API-call and extracts data
  console.log("First");
  next();
});

router.post("/", (request, response, next) => {
  // verify a JSON webtoken
  console.log("Second");
  response.send("Second result");
});

module.exports = router;

Когда я отправляю запрос на сообщение в /api/authorize, я вижу, что Первый также вызывается, так как выводит их в консоли:

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