Controller 语义不能重复
出于性能考虑,Restlight中的所有RequestMapping
的path属性不允许有语义上的重复(除非业务能容忍这个问题), 如果存在语义上的重复Restlight既不会在启动时报错提示,也不保证真正调用时的稳定性
。
Note
这里的稳定性
指的是不保证任何的优先级,比如Controller A和Controller B重复,Restlight不保证真正调用的时候会调用Controller A或者Controller B。
- 错误示例1:
@RequestMapping("/foo")
public void foo() {
// ...
}
@PostMapping("/foo")
public void foo1() {
// ...
}
Warning
Controller中的path重复- 错误示例2:
@RequestMapping("/foo/{bar}")
public void foo(@PathVariable String bar) {
// ...
}
@PostMapping("/foo/bar")
public void foo1() {
// ...
}
Warning
Controller中的@PathVariable
与第二个Congroller的path重复
Note
同样的道理,如果Controller语义存在相交的语义(可能存在使用复杂的正则等方式定义的Controller接口,因此可能存在相交的情况)也适用。Restlight检测到歧义时会打印WARNING日志
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
Last modified March 10, 2022: introduce docsy as the website framework and add docs-v1.0.0 (#120) (79630ff)