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

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

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

