使用 @RequestParam
@FeignClient(name = "user-center") public interface ITestUserCenterFeignClient { @RequestMapping(value = "/users/q",method = RequestMethod.GET) public UserDTO query(@RequestParam("id") Long id,@RequestParam("name") String name); }使用Map构建,(不推荐)
@FeignClient(name = "user-center") public interface ITestUserCenterFeignClient { @RequestMapping(value = "/users/q",method = RequestMethod.GET) public UserDTO query(@RequestParam Map<String,Object> conditions); }注意:这种方式不建议使用。主要是因为可读性不好,而且如果参数为空的时候会有一些问题,例如map.put("username", null); 会导致user-center 服务接收到的username是"" ,而不是null。
Post服务提供者方法
@PostMapping("/create") public User createUser(@RequestBody User user){ return null; }服务调用者
@FeignClient(name = "user-center") public interface ITestUserCenterFeignClient { @RequestMapping(value = "/users/q",method = RequestMethod.POST) public UserDTO query(@RequestBody UserDTO user); } Feign脱离服务注册/Ribbon调用 @FeignClient(name = "xxxxx",url = "http://www.baidu.com") public interface ITestBaiduFeignClient { @GetMapping("") public String getBaidu(); } Feign 性能优化 使用连接池 httpClient加依赖
<!--Feign 性能优化,需要使用连接池,引入依赖--> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-httpclient</artifactId> </dependency>加注解(不需要)
改配置
httpclient: # 为feign启用 apache httpclient 做请求,而不使用默认的urlconection enabled: true # feign 最大连接数 max-connections: 200 # feign 单个路径请求的最大连接数 max-connections-per-route: 50 okHttp加依赖
<!--Feign 性能优化,需要使用连接池,引入依赖--> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-okhttp</artifactId> </dependency>加注解(不需要)
改配置
httpclient: # 为feign启用 apache httpclient 做请求,而不使用默认的urlconection #enabled: true # feign 最大连接数 max-connections: 200 # feign 单个路径请求的最大连接数 max-connections-per-route: 50 okhttp: enabled: true 合理使用Feign日志生产环境使用Logger.Level.BASIC
RestTemplate RestTemplate VS. Feign