Я будую 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 для відповіді № 1Express використовує шлях до повторного вирівнювання для відповідностімаршрутні шляхи; перегляньте документацію "шлях до повторного випромінювання" для всіх можливостей визначення маршрутів маршрутів. Тестер експрес-маршрутів - це зручний інструмент для тестування основних маршрутів експресів, хоча він не підтримує відповідність шаблонів.
Ви можете використовувати /^(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.