springcloudFeign使⽤@RequestLine遇到的坑Feign使⽤@RequestLine遇到的坑
如何在微服务项⽬中调⽤其它项⽬的接⼝试使⽤spring cloud feign声明式调⽤。
/**
* 客户端请去
* @author RAY
*
*/springcloud和springboot
@FeignClient(name="store",configuration=FooConfiguration .class)
public interface UserFeignClient {
@RequestLine("GET /simple/{id}")
public  User findById(@Param("id") Long id);
}
但是启动得时候报错:
Method getLinksForTrack not annotated with HTTP method type (ex. GET, POST)
官⽅⽂档说明
@RequestLine is a core Feign annotation, but you are using the Spring Cloud @FeignClientwhich uses Spring MVC annotations.
意思就是feign 默认使⽤的是spring mvc 注解(就是RequestMapping 之类的),所以需要通过新增⼀个配置类来修改其“契约”。
@Configuration
public class FooConfiguration {
@Bean
public Contract feignContract() {
return new feign.Contract.Default();
//使⽤feign⾃带契约
}
}
PS : feignContract⽅法名不要跟⼀样。否则启动得时候会报错。得改⼀个跟类名不⼀样得⽅法名!
@RequestLine的使⽤及配置
@RequestLine与其它请求不同,只需要简单写请求⽅式和路径就能达到请求其它服务的⽬的。
@FeignClient(value = "feign-server",configuration = FeignConfig.class)  //需要⼀个配置⽂件
public interface TestService {
@RequestLine("POST /feign/test")    //对应请求⽅式和路径
String feign(@RequestBody UserDO userDO);
}
@EnableFeignClients
@SpringBootConfiguration
public class FeignConfig {
@Bean
public Contract contract(){
return new feign.Contract.Default();
}
}
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。