快递授权所有路线
Express authorizes all routes
我目前正在调试,我注意到 Express 授权所有具有参数的路由:
router.get(
"/:type/:id",
passport.authenticate("jwt", { session: false }),
getOne
);
router.get("/my-search/:term", (req, res) => res.json({ hi: "joe" }));
router.get("/search/:term", search);
索引文件:
const express = require("express");
const router = express.Router();
const users = require("./users");
const movies = require("./movies");
router.use("/auth", users);
router.use("/movies", movies);
module.exports = router;
和server/root文件:
app.use("/api", routes);
如果我按预期删除 /:term
它 returns json。
Express 是否缓存路由或类似的东西。即使 'my-search' 路由也需要令牌。好像很奇怪。
问题是您的第一个处理程序中的 route
是动态的,但与您稍后定义的静态路由中的路由格式非常匹配。
JS 解释:
my-search
或 search
作为 :type
的值
以及您作为 :id
.
的值传入的 :term
重新排列路由处理程序可解决此问题,因为更具体的路径在顶部,而动态路径在底部。所以说,“search/ball”匹配第一个路由处理程序而不是最后一个。
router.get("/my-search/:term", (req, res) => res.json({ hi: "joe" }));
router.get("/search/:term", search);
router.get(
"/:type/:id",
passport.authenticate("jwt", { session: false }),
getOne
);
我目前正在调试,我注意到 Express 授权所有具有参数的路由:
router.get(
"/:type/:id",
passport.authenticate("jwt", { session: false }),
getOne
);
router.get("/my-search/:term", (req, res) => res.json({ hi: "joe" }));
router.get("/search/:term", search);
索引文件:
const express = require("express");
const router = express.Router();
const users = require("./users");
const movies = require("./movies");
router.use("/auth", users);
router.use("/movies", movies);
module.exports = router;
和server/root文件:
app.use("/api", routes);
如果我按预期删除 /:term
它 returns json。
Express 是否缓存路由或类似的东西。即使 'my-search' 路由也需要令牌。好像很奇怪。
问题是您的第一个处理程序中的 route
是动态的,但与您稍后定义的静态路由中的路由格式非常匹配。
JS 解释:
my-search
或 search
作为 :type
的值
以及您作为 :id
.
:term
重新排列路由处理程序可解决此问题,因为更具体的路径在顶部,而动态路径在底部。所以说,“search/ball”匹配第一个路由处理程序而不是最后一个。
router.get("/my-search/:term", (req, res) => res.json({ hi: "joe" }));
router.get("/search/:term", search);
router.get(
"/:type/:id",
passport.authenticate("jwt", { session: false }),
getOne
);