在Spring Boot中的同一变量上使用@RequestParam和@PathVariable

时间:2018-07-10 13:13:47

标签: spring-boot request-mapping

在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 ) {

}

是否可以将两个都映射到一个变量?

1 个答案:

答案 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);

}