Loading... ## 使用方法 使用Feign发送自定义URL的请求,首先需要按照以下步骤设置您的Java项目: 1. 在pom.xml文件中添加Feign依赖项: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency> ``` 2. 创建一个接口,用于定义Feign客户端的请求方法。在该接口中,可以使用`@RequestMapping`注解来指定自定义的URL: ```java @FeignClient(name = "custom-client", url = "http://your-custom-url.com") public interface CustomClient { @GetMapping("/custom-endpoint") String getCustomData(); } ``` 在上述代码中,通过`@FeignClient`注解指定了客户端的名称和自定义的URL。 3. 在Spring Boot应用程序的主类或配置类上添加`@EnableFeignClients`注解以启用Feign客户端: ```java @SpringBootApplication @EnableFeignClients public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } } ``` 4. 现在,您可以在需要使用Feign客户端的地方注入该接口,并使用其中的方法发送自定义URL的请求: ```java @RestController public class YourController { @Autowired private CustomClient customClient; @GetMapping("/data") public String getData() { return customClient.getCustomData(); } } ``` 在上述代码中,通过在控制器中注入`CustomClient`接口,可以使用其中的方法发送自定义URL的请求。 ### 应用 - get请求带参数 ```java @FeignClient(name = "sqm-service", url = "${externalApis.sqm}") public interface SqmService { @GetMapping("/qstb/terminalQuery/getDevice") FeignResponse<SqmDeviceData> getDeviceData(@RequestParam("DeviceId") String DeviceId, @RequestParam("MAC") String MAC, @RequestParam("mKPIUTCSec") String mKPIUTCSec); } ``` - Post请求 ```java @FeignClient(name = "odn-service", url = "${externalApis.odn}") public interface OdnService { /** * 实时同步接口 */ @PostMapping("/ywzcwg/queryodn") FeignResponse<OdnData> queryOdn(@RequestBody OdnRequest request); /** * 增量同步接口 */ @GetMapping("/ywzcwg/newodn") FeignResponse<List<OdnData>> newOdn(); } ``` ```java @Data public class OdnRequest { private String logicId; private Map<String, String> logicArgument; } ``` ```java package com.tw.nms.fttx.feign.response; import lombok.Data; @Data public class OdnData { // 返回数据 } ``` ```java public class FeignResponse<T> { private Integer status; private String msg; private T data; } ``` ### 添加请求头 ```方法上 import com.alibaba.fastjson.JSONObject; import feign.Headers; import feign.RequestLine; import java.util.Map; public interface SqmService { @RequestLine("POST /qstb/terminalQuery/getDevice") @Headers({ "Content-Type: application/json", "Authorization: Bearer token123" }) FeignResponse<JSONObject> getDeviceData(@RequestBody Map<String, Object> request); } ``` 类上一样的 ```java import com.alibaba.fastjson.JSONObject; import feign.Headers; import feign.RequestLine; import java.util.Map; @Headers("Content-Type: application/json") public interface SqmService { @RequestLine("POST /qstb/terminalQuery/getDevice") FeignResponse<JSONObject> getDeviceData(@RequestBody Map<String, Object> request); } ``` 最后修改:2023 年 12 月 27 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏