我的团队正在开发一个带有express的API nodejs,我们想知道这些路线是否会发生冲突:
如果有人得到了相关信息,请。
答案 0 :(得分:1)
他们会发生冲突。例如,
如果您先定义GET /aws/volumes/:id
,则以下所有内容都会指向它:
GET /aws/volumes/example
GET /aws/volumes/qwerty
GET /aws/volumes/types
您也可以选择第二条路线来解决上述问题:
GET /aws/volumes?q=types
答案 1 :(得分:1)
是的,这些路线会发生冲突。如果您按以下顺序提供路线,虽然您拨打' / aws / volumes / types'但它始终会在第一条路线上出现。
如果您提供如下路线,则不会导致冲突。
答案 2 :(得分:0)
匹配请求的第一条路线将获胜!这意味着两者都可以匹配相同的请求。因此,您应该首先使用最具体的一个,即“/ aws / volumes / types”。这样,如果您请求“/ aws / volumes / types”,它将运行“types”路由的处理程序,否则,它将运行“:id”路由的处理程序。
此外,如果您希望更精确地使用您期望的“:id”,则可以使用正则表达式。点击此处查看:“路径路径”部分中的http://expressjs.com/en/guide/routing.html。
最后,在这种情况下,您还可以尝试next('route')
指令。 next()
不会仅调用将调用同一路由的下一个中间件的next('route')
,而是将控制传递给下一个匹配的路由处理程序。请在此处查看答案:What is the difference between next() and next('route') in an expressjs app.VERB call?