Grails URL映射优先级规则

时间:2016-03-02 03:57:08

标签: grails url-routing

使用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/abcdefAbcDefController.index()

但在任何一种情况下,/api/abc123都会使用AbcController.index() format参数解析为123

URL映射优先级的机制是什么?以上行为是对的吗?我使用的是Groovy 2.4.5和Grails 2.5.3。

1 个答案:

答案 0 :(得分:0)

  

[W]两个映射可以应用于相同的传入URI,即那个   胜利就是:

     
      
  1. 较少的双通配符(**或$ var **),或两者都相等
  2.   
  3. 较少的单个通配符(*或$ var),或两者都相等
  4.   
  5. 更多非通配符路径段,或两者均等于
  6.   
  7. 最左边的通配符(/ foo / / baz beats / foo / bar / ),或者如果它们的最左边的通配符在同一个地方那么
  8.   
  9. 具有更多约束的那个
  10.   

来源:https://stackoverflow.com/a/12214694/715608