Express 快车:如何正确定义路线?

Express 快车:如何正确定义路线?,express,Express,假设我有两条定义如下的路线。 始终执行第一条路由,但不执行第二条路由。 我应该如何定义路由,以便请求/关于。。路线是否正确 // 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 execute

假设我有两条定义如下的路线。
始终执行第一条路由,但不执行第二条路由。
我应该如何定义路由,以便请求/关于。。路线是否正确

// 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
})

颠倒顺序

路由按路由器的顺序存储。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...

您正在尝试的路由是什么?您的路由很好,但必须使用严格的地址模式来访问它们。根据您的第二条路线,您必须在/about/i之后使用附加参数调用它。我需要同时访问/about和/about/:name。“/about”返回所有可用数据,“/about/:name”返回特定数据。在这种情况下,我该怎么办?@d--b如果您只想访问/about,请使用/about再创建一条路由,并避免使用:名称我尝试了您的建议,但在请求“/about”或“/about/”时,它不起作用。由于某种原因,它总是被路由到“/:id”。当您执行/about/xxxx时会发生什么?我在当前应用程序中使用了/:Id。请参阅我之前的评论,但您是说您想将中的name参数作为可选字段吗?如果是这样的话,为什么不在“/about”的正上方加上“/about:name”的三条路由呢