如何使用和不使用查询参数来分隔路由?

时间:2020-04-25 13:37:27

标签: node.js express

一个简单的问题,我该如何设置路线,以便转到正确的路线,

app.get("/:post",(req,res) => {})

AND

app.get("/post",(req,res) => {})

这种情况发生在我键入“ / post”时,如果服务器应该转到“ / post”路由或“ /:post”,则会感到困惑。这适用于类似“ / publish” /“ / logout” /“ / login”的路由。

请分享有关如何解决此问题的知识,谢谢。

3 个答案:

答案 0 :(得分:1)

如果您使用以下路线,则需要将一些parameters传递到URL

app.get("/:post",(req,res) => {})

但是,如果您正在寻找从URL不返回任何内容的路线,那么您就在下面的路线中使用了

app.get("/post",(req,res) => {})

因此,如果您使用1条路线,则需要在parameters中传递一些URL

答案 1 :(得分:0)

这是因为/:post与您提到的资源(/post/publish/logout等)匹配。要解决此问题,请在通配符前使用名词,例如/post/:post。这样,您就可以避免歧义。

答案 2 :(得分:0)

在这种情况下,路线的顺序也很重要。可以通过在app.get("/post",(req,res) => {})之前定义路由app.get("/:post",(req,res) => {})来解决。 在这种情况下,如果您拨打了http://localhost:3000/..../post之类的电话,请确保将其转到路由/post,其余的呼叫将转到下一条路由。

.................. app.get("/post",(req,res) => {}) app.get("/:post",(req,res) => {}) ...........................

如果我们像上面那样做,那么我认为服务器不会感到困惑。