1. spring boot 版本1.5.4.RELEASE spring cloud Dalston.SR1
2.服务端Controller实现
@RestController public class DcController { @Autowired private DiscoveryClient discoveryClient; @RequestMapping(value="/dc") public String dc() { String services = "Services: " + discoveryClient.getServices(); System.out.println(services); return services; } @RequestMapping(value = "dcGet",method = RequestMethod.GET) public User dcGet(@RequestBody User user){ System.out.println(user.getName()+"----"+user.getAge()+"-----"+user.getPrice()+"-----"+user.isFlag()); return user; } @RequestMapping(value = "dcPost",method = RequestMethod.POST) public User dcPost(@RequestBody User user){ System.out.println(user.getName()+"----"+user.getAge()+"-----"+user.getPrice()+"-----"+user.isFlag()); return user; } }
需要使用@RequestBody 进行接收 不然打印出的是null
3.消费端接口定义
@FeignClient(value = "eureka-client") public interface DcClient { @RequestMapping(value = "/dc") String consumer(); @RequestMapping(value = "dcGet",method = RequestMethod.GET, consumes = "application/json") User dcGet(User user); @RequestMapping(value = "dcPost",method = RequestMethod.POST, consumes = "application/json") User dcPost(User user); }
需要定义consumes 不然控制台会报错!
4.使用apache中的httpclient替换默认的 http通信工具,配置文件
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency> <dependency> <groupId>com.netflix.feign</groupId> <artifactId>feign-httpclient</artifactId> <version>8.17.0</version> </dependency>
5.feign消费端 开启属性
feign.httpclient.enabled = true