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”的三条路由呢