快递:如何正确定义路线?

时间:2018-02-21 14:12:28

标签: express

假设我有两条如下定义的路线。
第一条路线总是被执行,但第二条路线不是。
我应该如何定义路由,以便正确路由 / about .. 的请求?

// First route
router.get('/:id', function (req, res) {
  // This will always be executed
})

// Second route
router.get('/about/:name', function (req, res) {
  // This will not be executed
})

1 个答案:

答案 0 :(得分:1)

撤销订单

路由按照router.get()函数调用的顺序存储。这是路由针对匹配模式进行测试的顺序。如果您的路线可能匹配所有内容,例如/:Id路线,那么您希望将其放在最后。然后将静态不变的辅助页面放在它之前。

在下面的例子中,我颠倒了顺序,所以我的静态不太具体的路线" / about /"首先检查,如果没有匹配,则express会将请求与下一个路由进行比较以进行URL匹配。

// Executed if match is found
router.get('/about/:name', function (req, res) {
})

// No match found on the above routes so try this one
router.get('/:id', function (req, res) {
})

//TODO: Good place for 404 handler...