在Spring Boot微服务中,我需要具有专用的端点来映射下一个URL
/delivery-options/myLabel
/delivery-options?label=myLabel
为处理这两种情况,我尝试同时使用@RequestParam
和@PathVariable
作为控制器的方法参数,但在两种情况下均不起作用
@RequestMapping({"/delivery-options", "/delivery-options/{label}"})
public ResponseEntity<?> getDeliveryOptions(@RequestParam(value = "label", required = false) @PathVariable(value = "label", required = false) String label ) {
}
是否可以将两个都映射到一个变量?
答案 0 :(得分:1)
我相信我们只能通过为两个不同的变量赋值并将两者都设置为false来做到这一点。
我知道这不是您要寻找的解决方案,我也相信另一种方法是声明两种不同的方法并将每个请求映射到其中一个,即使由于您正在处理请求和映射而不会产生重复的代码基于输入的服务层
background.js
输出:
@RequestMapping(value= {"/hello/{hi}","/hellodiff"}, method=RequestMethod.GET)
public void hello(@PathVariable(value="hi", required=false) String hi,
@RequestParam(value="key", required=false) String key) {
System.out.println("Output: "+ hi +" "+ key);
}