spring cloud Feign使用@RequestLine遇到的坑
如何在微服務(wù)項(xiàng)目中調(diào)用其它項(xiàng)目的接口試使用spring cloud feign聲明式調(diào)用。
/** * 客戶端請(qǐng)去 * @author RAY * */@FeignClient(name='store',configuration=FooConfiguration .class)public interface UserFeignClient { @RequestLine('GET /simple/{id}') public User findById(@Param('id') Long id);}
但是啟動(dòng)得時(shí)候報(bào)錯(cuò):
Method getLinksForTrack not annotated with HTTP method type (ex. GET, POST)
官方文檔說(shuō)明
@RequestLine is a core Feign annotation, but you are using the Spring Cloud @FeignClientwhich uses Spring MVC annotations.

意思就是feign 默認(rèn)使用的是spring mvc 注解(就是RequestMapping 之類(lèi)的) ,所以需要通過(guò)新增一個(gè)配置類(lèi)來(lái)修改其“契約”。
@Configurationpublic class FooConfiguration { @Bean public Contract feignContract() {return new feign.Contract.Default();//使用feign自帶契約 }}
PS : feignContract方法名不要跟一樣。否則啟動(dòng)得時(shí)候會(huì)報(bào)錯(cuò)。 得改一個(gè)跟類(lèi)名不一樣得方法名!
@RequestLine的使用及配置@RequestLine與其它請(qǐng)求不同,只需要簡(jiǎn)單寫(xiě)請(qǐng)求方式和路徑就能達(dá)到請(qǐng)求其它服務(wù)的目的。
@FeignClient(value = 'feign-server',configuration = FeignConfig.class) //需要一個(gè)配置文件public interface TestService { @RequestLine('POST /feign/test') //對(duì)應(yīng)請(qǐng)求方式和路徑 String feign(@RequestBody UserDO userDO);}
@EnableFeignClients@SpringBootConfigurationpublic class FeignConfig { @Bean public Contract contract(){return new feign.Contract.Default(); }}
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Spring Boot和Thymeleaf整合結(jié)合JPA實(shí)現(xiàn)分頁(yè)效果(實(shí)例代碼)2. 詳解Android studio 動(dòng)態(tài)fragment的用法3. 什么是python的自省4. 解決Android studio xml界面無(wú)法預(yù)覽問(wèn)題5. Springboot Druid 自定義加密數(shù)據(jù)庫(kù)密碼的幾種方案6. Vuex localStorage的具體使用7. php模擬實(shí)現(xiàn)斗地主發(fā)牌8. Vue封裝一個(gè)TodoList的案例與瀏覽器本地緩存的應(yīng)用實(shí)現(xiàn)9. Spring MVC+ajax進(jìn)行信息驗(yàn)證的方法10. vue 使用localstorage實(shí)現(xiàn)面包屑的操作

網(wǎng)公網(wǎng)安備