spring 作为查询参数的列表列表

yjghlzjz  于 2023-05-05  发布在  Spring
关注(0)|答案(1)|浏览(146)

我如何声明一个控制器方法,它接受一个列表的列表作为查询参数?那我该怎么称呼它
我的具体意思是

suspend fun v1GetSearch( @PathVariable("id") id: String, @Valid @RequestParam(value = "options", required = false) options: List<List<String>>?): ResponseEntity<SearchResponse>

然后我想把它叫做:

http://localhost:8080/search/id?options=[["aaa","bbb","ccc","ddd"],["abcd","abcd","abcd","abcd"]]

这可能吗?
我也看到过关于同样事情的其他问题,但很多答案总是建议使用POST而不是GET,并通过请求体发送列表的列表。在我的例子中,这不是一个选项,因为我希望端点是完全幂等和可缓存的。

suzh9iv8

suzh9iv81#

正如duffymo所说,在param上发送很多数据不是一个好主意。但如果我想回答你的问题,你可以创建一个类或记录(如果你使用的是jdk14或以上)如下:

public class YourParamDto{
     private list<String> listOne;
     private list<String> listTwo;
//constructor ,getterand setter methods ...
}

然后在控制器类中使用它如下:

suspend fun v1GetSearch( @PathVariable("id") id: String, @Valid @RequestParam(value = "options", required = false) options: YourParamDto): ResponseEntity<SearchResponse>

因此您get请求将为:

http://localhost:8080/search/id?listOne=["aaa","bbb","ccc","ddd"]&listOne=["abcd","abcd","abcd","abcd"]

相关问题