Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将映射作为请求参数发送到Spring Boot应用程序中的GET请求_Java_Rest_Spring Boot_Model View Controller - Fatal编程技术网

Java 将映射作为请求参数发送到Spring Boot应用程序中的GET请求

Java 将映射作为请求参数发送到Spring Boot应用程序中的GET请求,java,rest,spring-boot,model-view-controller,Java,Rest,Spring Boot,Model View Controller,基本上,我需要在GET请求中接受映射和其他请求参数 控制器: @GetMapping public Page<Users> search(@Valid final UsersParams params) { return userService.search(params); } 甚至可以在请求中传递映射,并使其在GET-REST调用中工作吗 不管我有多少知识,我唯一能想到的另一个选择是,使用带有逗号分隔值的列表来代替映射,并进行一些反序列化 您可以尝试的最好方法是将此请求

基本上,我需要在GET请求中接受映射和其他请求参数

控制器:

@GetMapping
public Page<Users> search(@Valid final UsersParams params) {
    return userService.search(params);
}
甚至可以在请求中传递映射,并使其在GET-REST调用中工作吗


不管我有多少知识,我唯一能想到的另一个选择是,使用带有逗号分隔值的列表来代替映射,并进行一些反序列化

您可以尝试的最好方法是将此请求设置为post请求。 然后你可以用

请求对象

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

如果你想得到比你能用的更多的东西

/test?age=20&gender=Male&john=doe&Harry=Potter
@GetMapping(“/test”)
公共无效搜索(UserParams-params,@RequestParam-Map-names){
log.info(“这是我们得到的对象”,params);
}
在UserParams和names映射中的所有对中,您将获得年龄和性别,您需要忽略names requestparam中的前两个条目,因为年龄和性别也将包含在其中

您只能保留Map而不是Userparam对象

可能与@Aakash重复,我的线程和他的线程之间的唯一区别是他需要绑定到映射的“所有参数”,而我需要映射到映射的字段,而其他字段仍然可以工作。您的
名称
查询参数与
名称
属性的形状不匹配;参数看起来像是无效的JSON,它是一系列单个字符串,既不是
多值的
,也不是
映射
@AMagic在接受的答案中提供了一个Spring MVC指南链接,它告诉我们所有参数都将添加到映射中。为了回答您的问题,这是可行的,但在回答中有一个很好的警告。@chrylis onstrike-我有一个非常粗略的例子,您想建议在URL中传递地图的正确方法吗?
{
    "age" : 20,
    "gender" : "Male",
    "names" : {
        "john" : "doe"
    }
}
@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);
    }
/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);
    }