Почему метод глагола с параметрами блокирует другой из того же маршрута? - PullRequest
0 голосов
/ 02 февраля 2019

Я практикую node.js и express.js, написав несколько случайных вещей.Поэтому после того, как я написал метод get с параметрами, он заблокировал запуск другого метода get.Я хотел бы знать, почему.

Я уверен, что это из-за 1-го метода.Я удалил это и переместил это после второго, и это работало просто отлично.Но когда он до 2-го, он заблокировал его.

// the following code is the one that blocks
app.get("/animes/:id", (req, res)=>{
res.send(animes[req.params.id]);
});

app.get("/animes/add", (req, res)=>{
console.log(req.query);
res.send("yes")
}); 

// the following code works fine
app.get("/animes/add", (req, res)=>{
console.log(req.query);
res.send("yes")
});

app.get("/animes/:id", (req, res)=>{
res.send(animes[req.params.id]);
});

У меня есть два других метода get с маршрутами, такими как "/" и "animes".Я уверен, что они не причина, почему это блокирует.

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

В вашем первом примере первый маршрут "/ animes /: id" совпадает, если вы вызываете "animes / add".«add» будет в этом случае параметром id.второстепенный маршрут будет игнорироваться.

0 голосов
/ 02 февраля 2019

Промежуточные программы оцениваются в порядке их регистрации.

Так что для:

app.get("/animes/:id", ... )
app.get("/animes/add", ... )

Экспресс сначала проверит, соответствует ли запрошенный URL-адрес /animes/:id и /animes/:id1008 *, промежуточное программное обеспечение с зарегистрированным app.get("/animes/add", ... ) никогда не будет достигнуто.

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