@QueryMap 是 Netflix Feign 中的一个注解,用于将一个 Java 对象的属性以查询参数(Query Parameter)的形式添加到 HTTP 请求的 URL 中。
在进行 RESTful API 调用时,如果需要传递多个查询参数,使用这个注解可以方便地将一个对象的属性自动转换为查询参数,而不需要手动拼接 URL 字符串。这有助于保持代码的整洁性和可读性,同时减少因手动拼接参数而可能出现的错误。
定义一个查询服务,该服务接收 id、name 和 age 查询参数,然后通过 @QueryMap 注解将 POJO 对象的属性批量传递给查询服务。步骤如下:
(1)定义 User 实体
@Data
@Builder
@ToString
public class User {
private Long id;
private String name;
private Integer age;
}(2)查询服务
@GetMapping("/query")
public User query(@RequestParam("id") Long id, @RequestParam("name") String name, @RequestParam("age") Integer age) {
return User.builder().id(id).name(name).age(age).build();
}(3)定义 Feign 客户端,通过 @QueryMap 将 User 查询参数的属性自动添加到 URL 的查询参数:
@RequestLine("GET /simple/query")
User query(@QueryMap User user);(4)调用 Feign 客户端
@GetMapping("/")
public String index() {
return SimpleFeign.createJson().query(User.builder().id(100L).name("Tom").age(20).build()).toString();
}输出结果如下:
