ExpressJS: срабатывает неправильная конечная точка api

#javascript #node.js #express

#javascript #node.js #экспресс

Вопрос:

У меня есть этот запрос api:

 http://localhost:5000/api/courses/get_public_course_data_by_id?course_id=454545
 

И у меня есть эти два маршрута ExpressJS:

 router.get("/:id", (req, res) => {});
router.get("/get_public_course_data_by_id", (req, res) => {});
 

По какой-то причине всегда срабатывает первая конечная точка, а не вторая.

Комментарии:

1. Как Экспресс узнает об этой api/courses/ части маршрута?

2. @Christian Об этом позаботились в server.js файл

Ответ №1:

Вам нужно добавить статический маршрут перед динамическим маршрутом

Вот так:

 router.get("/get_public_course_data_by_id", (req, res) => {}); // 1st this
router.get("/:id", (req, res) => {}); // then this

 

Причина в том, что маршрутизатор узла принимает get_public_course_data_by_id <— this как id и обрабатывает запрос соответствующим образом и get_public_course_data_by_id никогда не выполняется.