SpringCloud組件OpenFeign之默認(rèn)HTTP請求方式詳解
OpenFeign的默認(rèn)HTTP請求方式
OpenFeign相較于Feign新增了對SpringMvc的支持,通過以下方式可以調(diào)用服務(wù)端對應(yīng)的方法。

但是如果使用@RequestMapping注解不指定請求方式時,通過客戶端打印的OpenFein日志可以看出,客戶端都是使用的GET請求。
只有使用@PostMapping或者@RequestMapping中指定請求類型@RequestMapping(method = RequestMethod.POST)發(fā)送的才是POST請求。
那么使用@RequestMapping()時OpenFiegn默認(rèn)是使用GET請求?
OK,問題的答案還需要從OpenFeign的源碼中查找。
在SpringMvcContract類中有個這樣的方法processAnnotationOnMethod。
見名思意,這個方法就是處理Feign接口下方法上的注解的。

與本問題相關(guān)的關(guān)鍵代碼為上圖中第218~225行,粘貼以下并添加注解。
// 獲取指定方法上的RequestMapping注解信息
RequestMapping methodMapping = findMergedAnnotation(method, RequestMapping.class);
// 指定方法上的RequestMapping注解信息method屬性的屬性值數(shù)組
RequestMethod[] methods = methodMapping.method();
// 如果沒有設(shè)置請求方式,那么默認(rèn)創(chuàng)建GET請求
if (methods.length == 0) {
methods = new RequestMethod[] { RequestMethod.GET };
}
// 校驗(yàn)是否只有一種請求方式
checkOne(method, methods, "method");
// 若是則將RequestMethod.GET作為該方法的請求方式,并存放到RequestTemplate中template的method中供后續(xù)處理并使用
data.template().method(Request.HttpMethod.valueOf(methods[0].name()));
所以,如果@FeignClient注解修飾的接口中使用@RequestMapping且不指定請求方式,那么默認(rèn)是使用GET請求的。
到此這篇關(guān)于SpringCloud組件OpenFeign之默認(rèn)HTTP請求方式詳解的文章就介紹到這了,更多相關(guān)OpenFeign的默認(rèn)HTTP請求方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 知識難點(diǎn)之異常的認(rèn)知與使用詳解
所謂異常是指程序在運(yùn)行時出現(xiàn)錯誤時提示調(diào)用者的機(jī)制,異常的種類有很多,不同種類的異常有不同的含義,也有不同的處理方式,通讀本篇對大家的學(xué)習(xí)或工作具有一定的價值,需要的朋友可以參考下2021-09-09
Java設(shè)計模式編程中的責(zé)任鏈模式使用示例
這篇文章主要介紹了Java設(shè)計模式編程中的責(zé)任鏈模式使用示例,責(zé)任鏈模式可以避免很多請求的發(fā)送者和接收者之間的耦合關(guān)系,需要的朋友可以參考下2016-05-05
Java設(shè)計模式之代理模式_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java設(shè)計模式之代理模式,本文詳細(xì)的介紹了什么事代理模式和相關(guān)的類和接口,有興趣的可以了解一下2017-08-08
HotSpot的Java對象模型之Oop-Klass模型詳解
這篇文章主要介紹了HotSpot的Java對象模型之Oop-Klass模型詳解,在JVM層面,不僅Java類是對象,Java 方法也是對象, 字節(jié)碼常量池也是對象,一切皆是對象,JVM使用不同的oop-klass模型來表示各種不同的對象,需要的朋友可以參考下2023-08-08
線程池運(yùn)用不當(dāng)引發(fā)的一次線上事故解決記錄分析
遇到了一個比較典型的線上問題,剛好和線程池有關(guān),另外涉及到死鎖、jstack命令的使用、JDK不同線程池的適合場景等知識點(diǎn),同時整個調(diào)查思路可以借鑒,特此記錄和分享一下2024-01-01
自定義的Troop<T>泛型類( c++, java和c#)的實(shí)現(xiàn)代碼
這篇文章主要介紹了自定義的Troop<T>泛型類( c++, java和c#)的實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05
idea中g(shù)it如何修改commit(ChangeList的使用)
這篇文章主要介紹了idea中g(shù)it如何修改commit(ChangeList的使用),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04

