gpt4 book ai didi

java - 将 map 作为请求参数发送到 Spring Boot 应用程序中的 GET 请求

转载 作者:行者123 更新时间:2023-12-01 19:15:48 30 4
gpt4 key购买 nike

基本上,我需要在 GET 请求中接受 map 以及其他请求参数。

Controller :

@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"}

是否可以在请求中传递 map 并使其在 GET REST 调用中工作?

根据我所掌握的知识,我能想到的唯一其他选择是,使用带有逗号分隔值的列表代替 map ,并进行一些反序列化破解。

最佳答案

您可以尝试的最佳方法是将此请求设为发布请求。然后你可以使用as,

请求对象

{
"age" : 20,
"gender" : "Male",
"names" : {
"john" : "doe"
}
}

DTO

@AllArgsConstructor
@NoArgsConstructor
@Data
class UserParams {
String age;
String gender;
Map<String, String> names;
}
@PostMapping("/test2")
public void search2(@RequestBody UserParams params) {
log.info("This is the object we got", params);
}

如果您希望它是 GET 则可以像这样使用,

/test?age=20&gender=Male&john=doe&Harry=Potter
    @GetMapping("/test")
public void search(UserParams params, @RequestParam Map<String, String> names) {
log.info("This is the object we got", params);
}

您将在 UserParams 中获取年龄和性别以及名称 Map 中的所有对,您需要忽略名称 requestparam 中的前两个条目,因为年龄和性别也会出现在其中。

您可以只保留 Map 而不是 Userparam 对象 This is result I am getting

关于java - 将 map 作为请求参数发送到 Spring Boot 应用程序中的 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59420202/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com