我正在尝试将其他查询参数捕获到Map<String,String>
例如:http://url.example/route?lastIndex=10&sort=-afield&othera=test&otherb=test
我希望将othera
和otherb
存储在地图中。有可能吗?
class MyRequest {
private String lastIndex;
private String sort;
private Map<String,String> myFilters;
}
@RestControler
class MyController {
@GetMapping("/route")
public String get(MyRequest request) {
return "OK";
}
}
答案 0 :(得分:0)
我认为,如果您要使用MyRequest
类,它可能会起作用。鉴于这些是 AJAX GET请求(因为它是@RestController
),因此可以使用@RequestBody
:
@RestControler
class MyController {
@GetMapping("/route")
public String get(@RequestBody MyRequest request) {
return "OK";
}
}
并像这样以JSON形式发送请求,而不使用查询参数:
curl -X GET \
http://url.example/route/ \
-H 'Content-Type: application/json' \
-d '{
"lastIndex": "var",
"sort": "there",
"myFilters":{
"hello": "there",
"hello1": "there1"
}'
}
GET请求可以包含正文吗?
关于它的规范有点模糊-您可以在here
上阅读更多内容。但是,如果您使用的是AJAX GET请求,则Spring Boot运行时容器(我在Spring Boot 2.0.4.RELEASE中检查了Tomcat,Jetty和UnderTow)支持它们。
答案 1 :(得分:0)
由于MyRequset类仅包含字符串参数,因此使用
之类的方法是明智的。 @GetMapping("/route")
public MyRequest get(@RequsetParam Map<String,String> allParams)
,然后按照您喜欢的方式转换参数映射。