使用Grails
进行以下URL映射'/api/abcdef' (resources: 'abcDef')
'/api/abc' (resources: 'abc')
对/api/abcdef
的调用会调用AbcController.index()
format
参数def
,而不是AbcDefController
。但是,/api/abcdef/1
来电已正确解析为AbcDefController.show()
。这看起来像grails url-mapping-report
报告的错误
| GET | /api/abcdef | Action: index |
在AbcDefController
下。
但是,如果将两个URL的顺序更改为
'/api/abc' (resources: 'abc')
'/api/abcdef' (resources: 'abcDef')
Grails会正确解析/api/abcdef
到AbcDefController.index()
。
但在任何一种情况下,/api/abc123
都会使用AbcController.index()
format
参数解析为123
URL映射优先级的机制是什么?以上行为是对的吗?我使用的是Groovy 2.4.5和Grails 2.5.3。
答案 0 :(得分:0)
[W]两个映射可以应用于相同的传入URI,即那个 胜利就是:
- 较少的双通配符(**或$ var **),或两者都相等
- 较少的单个通配符(*或$ var),或两者都相等
- 更多非通配符路径段,或两者均等于
- 最左边的通配符(/ foo / / baz beats / foo / bar / ),或者如果它们的最左边的通配符在同一个地方那么
- 具有更多约束的那个
醇>