[英]Some Express.Router() routes do not execute middleware function
我試圖圍繞我的 express.router() 實現而不是觸發分配給它的中間件功能。 我編寫了一個相當大的應用程序並嘗試向我的路徑添加更多端點,但由於某種原因,第 9 條路由被加載但沒有觸發該功能。
應用程序.js
server.use(cors());
server.use(function (req, res, next) {
next();
});
server.use("/", express.static("./assets"));
server.use("/api", api);
server.use("/debug", debug);
server.use("/config", config);
server.use("/control", control);
server.use("/tools", files);
這就是我用各自的功能聲明我的路線的地方。
router.get("/teams", onGetTeams);
router.get("/players", onGetPlayers);
router.get("/achievements", getTop3);
router.get("/xpression", onXprPayload);
router.get("/snapshot", onRequestSnapshot);
router.get("/round-timeline", onRequestTimelinePayload);
router.get("/:half", onRequestHalf);
router.get("/dashboard-message", onSetDashboardMessage);
router.get("/get-match-odds", getTeamOdds);
function getTeamOdds(req, res) {
console.log("Sent odds");
res.json(odds);
res.end();
}
當我請求最后一條路由時,該函數沒有被執行,我得到了一個 200 響應。
我錯過了什么大事嗎?
謝謝 !
您的路線定義在這里:
router.get("/:half", onRequestHalf);
是匹配所有路由的通配符路由,因此除非該特定路由調用next()
以繼續路由,否則不會調用它之后的任何路由。
由於這個原因,頂級通配符路由存在問題。 我建議避免它們。 有一些臨時的解決方法,比如將它們的定義移動到最后一個頂級路由定義,但它們仍然可以限制定義未來的路由,因為它們太貪婪了。
我的建議是不要讓它成為頂級路線:
router.get("/half/:half", onRequestHalf);
因此,它不會與其他頂級路由沖突,並且它本質上擁有自己的 URL 范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.