Feign解析不同的Content Type

2021-10-06 08:33:51 字數 932 閱讀 6498

feign呼叫的時候,從上游傳遞不同的content-type型別,不同的註解來匹配解析。

首先是從乙個錯誤引出來這個問題,在springboot中呼叫feign方法:

http status 400 - required string parameter 'xx' is not present
摘錄下面的檔案,解釋的很清楚。

摘錄其中一段,對比 @requestbody 和 @requestparam :

@requestparam

a) 常用來處理簡單型別的繫結,通過request.getparameter() 獲取的string可直接轉換為簡單型別的情況( string–> 簡單型別的轉換操作由conversionservice配置的轉換器來完成);因為使用request.getparameter()方式獲取引數,所以可以處理get 方式中querystring的值,也可以處理post方式中 body data的值;

c) 該註解有兩個屬性: value、required; value用來指定要傳入值的id名稱,required用來指示引數是否必須繫結;

示例**:

@controller  

@sessionattributes("pet")

public class editpetform

// ...

@requestbody

它是通過使用handleradapter 配置的httpmessageconverters來解析post data body,然後繫結到相應的bean上的。

示例**:

public void handle(@requestbody string body, writer writer) throws ioexception

Feign原始碼解析

首先我要說的是springcloud沒有rpc,這就涉及rpc和微服務的區別。springcloud的模組通訊工具feign跟httpclient和okhttp是一樣的東西,都是對http請求封裝的工具,其實feign可以選擇httpclient或者okhttp作為底層實現 修改配置即可 一 fei...

Feign原始碼解析 執行過程

不了解factorybean介面的,可以看如何使用spring的factorybean介面 作為乙個實現了factorybean的工廠類,那麼每次在spring context 建立實體類的時候會呼叫它的getobject 方法。class feignclientfactorybean implem...

feign的簡單實現

feign可以把rest的請求進行隱藏,偽裝成類似springmvc的controller一樣。你不用再自己拼接url,拼接引數等等操作,一切都交給feign去做。feign的使用 建立乙個介面,在介面上新增一些註解 feign支援多種註解,例如feign自帶的註解或者是jax rs註解等。spri...