是否总是调用特定的 @RequestMapping 以支持 Spring 中的变量 @RequestMapping
Is a specific @RequestMapping always called in favour of a variable @RequestMapping in Spring
让我们假设以下控制器:
@RestController
public class MyController {
@RequestMapping(method = GET, path = "/info")
public InfoModel getInfo(){
...
}
@RequestMapping(method = GET, path = "/{resourceId}")
public ResourceModel getResource(@PathVariable("resourceId") String resourceId){
...
}
}
问题是:curling时会调用哪个方法GET /info
。
在我所有的测试中都调用了 getInfo
,这似乎很清楚。
但我不能 100% 确定这是否只是一个幸运的竞争条件,或者是否指定静态路径的优先级高于可变路径。
即使经过一些研究,我也找不到这种情况的规范,只有一些非常古老(可能已经过时)的博客文章。
我正在使用 SpringBoot 2.0.2。
这不是幸运的比赛条件。没有路径变量的模式将始终优先。
请参阅 Spring MVC 文档,该文档在 Request Mapping 下详细解释了所有内容 Pattern Comparison
。
如果您在 class 级别指定了路径 (@RequestMapping("/home"),如下
@RestController
@RequestMapping("/home")
public class MyController {
@RequestMapping(method = GET, path = "/info")
public InfoModel getInfo(){
...
}
}
那么你将不得不 curl GET /home/info。所有 urls 路径都是你 defined/decided。
让我们假设以下控制器:
@RestController
public class MyController {
@RequestMapping(method = GET, path = "/info")
public InfoModel getInfo(){
...
}
@RequestMapping(method = GET, path = "/{resourceId}")
public ResourceModel getResource(@PathVariable("resourceId") String resourceId){
...
}
}
问题是:curling时会调用哪个方法GET /info
。
在我所有的测试中都调用了 getInfo
,这似乎很清楚。
但我不能 100% 确定这是否只是一个幸运的竞争条件,或者是否指定静态路径的优先级高于可变路径。
即使经过一些研究,我也找不到这种情况的规范,只有一些非常古老(可能已经过时)的博客文章。
我正在使用 SpringBoot 2.0.2。
这不是幸运的比赛条件。没有路径变量的模式将始终优先。
请参阅 Spring MVC 文档,该文档在 Request Mapping 下详细解释了所有内容 Pattern Comparison
。
如果您在 class 级别指定了路径 (@RequestMapping("/home"),如下
@RestController
@RequestMapping("/home")
public class MyController {
@RequestMapping(method = GET, path = "/info")
public InfoModel getInfo(){
...
}
}
那么你将不得不 curl GET /home/info。所有 urls 路径都是你 defined/decided。