/ / Експрес, прослуховуйте на маршруті декілька - node.js, express

Експрес, прослуховуй по кратному маршруту - node.js, express

Я будую API REST, заснований на експресі, я хочу попередити користувача, коли він використовував неправильне дієслово HTTP для свого запиту.

Наразі додаю

app.all("/", (req, res) => {
answer(req, res, {code: 400, error: "Wrong method"});
});

після кожного маршруту, і він починає бути несуттєвим, я, скоріше, маю його в одному місці, і перелічу всі маршрути, які я хочу слухати.

Чи є спосіб зробити щось на кшталт:

app.all(["/", "/signup", "/login"], (req, res) => {
answer(req, res, {code: 400, error: "Wrong method"});
});

так що я маю лише одну точку відмови, замість того, щоб перевіряти кожен маршрут?

Відповіді:

1 для відповіді № 1

Express використовує шлях до повторного вирівнювання для відповідностімаршрутні шляхи; перегляньте документацію "шлях до повторного випромінювання" для всіх можливостей визначення маршрутів маршрутів. Тестер експрес-маршрутів - це зручний інструмент для тестування основних маршрутів експресів, хоча він не підтримує відповідність шаблонів.

Ви можете використовувати /^(signup|login)/(.+)/. Побачити DOCS

У вашому випадку:

app.all(["/^(signup|login)/(.+)/"], (req, res) => {
answer(req, res, {code: 400, error: "Wrong method"});
});

2 для відповіді № 2

Шляхи можуть бути і регулярними виразами, тож має працювати щось наступне:

app.all(/(signup|login)/, (req, res) => {
answer(req, res, {code: 400, error: "Wrong method"});
});

1 для відповіді № 3

Ви можете визначити функцію за допомогою перевірки шляху та методу до url та використовувати її в середньому програмному забезпеченні, яке ви передаєте в додаток для вирішення цієї ситуації з помилками.

Просто визначте це перед маршрутами.

Ось приклад:

app.use(function(req, res, next){
if (checkIfIsWrongMethod(req)) {
answer(req, res, {code: 400, error: "Wrong method"});
} else {
next();
}
});

Ось експрес FAQ.