【发布时间】:2019-12-20 05:20:53
【问题描述】:
基本上,我需要在 GET 请求中接受地图以及其他请求参数。
控制器:
@GetMapping
public Page<Users> search(@Valid final UsersParams params) {
return userService.search(params);
}
我的 params 对象如下所示:
public class UserParams {
private String age;
private String gender;
private MultiValuedMap<String, String> names;
}
所以,如果我使用这些参数值传递请求:
users?age=20&gender=Male&names={"john,doe","Harry,Potter","James,Bond"}
这甚至可以在请求中传递地图并使其在 GET REST 调用中工作吗?
根据我所掌握的任何知识,我能想到的唯一其他选择是,使用带有逗号分隔值的列表来代替地图,并进行一些反序列化破解。
【问题讨论】:
-
@Aakash,我的线程和他的线程之间的唯一区别是他需要将“所有参数”绑定到地图,而我需要映射到地图的字段,而其他字段应该仍然有效。
-
您的
names查询参数与您的names属性的形状不匹配;该参数看起来像无效的 JSON,它是一系列单个字符串,既不是MultiValued也不是Map。 -
@AMagic 在接受的答案中提供了一个 Spring MVC 指南链接,它告诉我们所有参数都将添加到地图中。要回答您的问题,这是可行的,但在该答案中有一个很好的说明。
-
@chrylis-onstrike- 我有一个非常粗略的例子,你想建议在 URL 中传递地图的正确方法吗?
标签: java rest spring-boot model-view-controller