依赖
| <dependency> |
| <groupId>org.springframework.cloud</groupId> |
| <artifactId>spring-cloud-starter-openfeign</artifactId> |
| </dependency> |
| <dependency> |
| <groupId>com.fasterxml.jackson.core</groupId> |
| <artifactId>jackson-databind</artifactId> |
| </dependency> |
启动类
| @SpringBootApplication |
| @EnableFeignClients |
| public class OpenFeignApplication { |
| public static void main(String[] args) { |
| SpringApplication.run(OpenFeignApplication.class, args); |
| } |
| } |
发送请求
解析:
name="HttpBin"
:name 可以是任意的客户端名称,用于创建 Spring Cloud LoadBalaner 客户端。如果使用注册中心,则通过该名称去查找服务物理地址。
url="httpbin.org"
:可以是 url 的绝对路径或主机名。
qulifiers
:Spring Bean 别名
@RequestParam
:如果不给参数添加注解,默认是 @RequestBody
| @FeignClient(name = "httpBin", url = "httpbin.org") |
| public interface HttpBinClient { |
| @GetMapping("/get") |
| Result<StudentDTO> get(@RequestParam String name, @RequestParam Integer age); |
| |
| @PostMapping("/post") |
| Result post(StudentDTO studentDTO); |
| } |
| @Data |
| public class Result<T> { |
| private T args; |
| private String data; |
| } |
| @Data |
| @Builder |
| @NoArgsConstructor |
| @AllArgsConstructor |
| public class StudentDTO { |
| private String name; |
| private Integer age; |
| } |
测试:
| @SpringBootTest |
| public class HttpBinClientTest { |
| @Autowired |
| private HttpBinClient httpBinClient; |
| |
| @Test |
| public void testGet() { |
| StudentDTO jerry = StudentDTO.builder() |
| .name("Jerry") |
| .age(18) |
| .build(); |
| Result<StudentDTO> result = httpBinClient.get("Jerry", 18); |
| Assertions.assertEquals(jerry.getName(), result.getArgs().getName()); |
| Assertions.assertEquals(jerry.getAge(), result.getArgs().getAge()); |
| } |
| |
| @Test |
| public void testPost() throws JsonProcessingException { |
| StudentDTO jerry = StudentDTO.builder() |
| .name("Jerry") |
| .age(18) |
| .build(); |
| Result result = httpBinClient.post(jerry); |
| StudentDTO studentDTO = new ObjectMapper().readValue(result.getData(), StudentDTO.class); |
| Assertions.assertEquals(jerry.getName(), studentDTO.getName()); |
| Assertions.assertEquals(jerry.getAge(), studentDTO.getAge()); |
| } |
| |
| } |
// todo
参阅
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)