首页 > 解决方案 > 有没有办法在 Spring 中从 URI 中获取路径变量列表?

问题描述

@RequestMapping(value = "/{ids}", method=RequestMethod.GET)
public String getMethod(@PathVariable List<String> ids){

}

我想要类似的东西,但我需要将请求映射到类似的东西:localhost:8080/id1/id2/id3/.../idn

我不知道路径变量(id)的数量,也不知道它们的名称。

标签: javaspringspring-boothttprequestpath-variables

解决方案


当您使用路径时,它实际上会添加到 uri 。uri 有长度限制。相关文章:HTTP GET 请求的最大长度

所以在不限制数量的情况下,不建议向uri添加多个参数作为路径变量。

您可以使用如下查询参数:

@RequestMapping(value = "/{ids}", method=RequestMethod.GET)
public String getMethod(@RequestParam("myparam") List<String> ids) 
{ 
}

相反,您可以将其转换为发布请求,并拥有一个将数据列表作为对象的请求正文。

@PostMapping("/")
public ResponseEntity postController(
  @RequestBody CustomPojo data) {
 
    exampleService.fakeAuthenticate(data);
    return ResponseEntity.ok(HttpStatus.OK);
}

class CustomPoJo {
  List<String> ids;
//getter setter etc
}

json可能看起来像:

{"custompojo":["id1","id2"]}

推荐阅读