您好,登錄后才能下訂單哦!
這篇文章主要介紹“使用Feign消費服務時POST/GET請求方式的作用是什么”,在日常操作中,相信很多人在使用Feign消費服務時POST/GET請求方式的作用是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”使用Feign消費服務時POST/GET請求方式的作用是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
聲明:本結論基于Spring Cloud Dalston.RC1、Spring Boot1.5.2.RELEASE。
feign消費服務時,以GET方式請求的條件:
如果想讓服務消費者采用GET方式調用服務提供者,那么需要:
服務消費者這邊feign調用時,在所有參數前加上@RequestParam注解。
服務消費者這邊feign調用時,指明為GET方式(注:如果不指明method,那么在條件1滿足的情況下,采用的是默認的GET方式)。
注:這里條件1和條件2,是“且”的關系(都滿足時,才為GET)。
feign消費服務時,以POST方式請求的條件:
如果想讓服務消費者采用POST方式調用服務提供者,那么只需要:
服務消費者這邊feign調用時,在所有參數前加上@RequestParam注解,并指明feign消費服務的方式為POST。
服務消費者這邊feign調用時,有且只有一個參數前為@RequestBody或什么也沒有(如果有多個參數,那么其余參數前必須有@RequestParam)。
注:這里條件1和條件2,是“或”的關系(當至少一個滿足時,即為POST)。
注:在服務消費者中,使用feign消費服務時,如果參數前什么也不寫,那么默認是由@RequestBody指明的。
即:只要不滿足GET方式請求,那么POST方式請求是一定支持的。
服務消費者以GET方式請求消費服務的情況(示例):
不指定method,則默認為get,等同于
服務消費者以POST方式請求消費服務的情況(示例):
服務消費者以GET方式請求消費服務的情況(示例):
參數前使用了@RequestParam,且指明了用GET方式
等同于(當所有參數前都有@RequestParam時,這時不指明method,則默認為采用GET方式):
服務消費者以POST方式請求消費服務的情況(示例):
參數前使用了@RequestParam,且指明了用POST方式
參數前未使用@RequestParam或參數前使用了@RequestBody注解(此時不論是否手動指定請求方式、不論指定的方式是POST還是GET,那么最終都以POST方式消費服務)
注:在服務消費者中,使用feign消費服務時,如果參數前什么也不寫,那么默認是由@RequestBody指明的。
注:@RequestBody注解的參數,需要POST方式才能傳遞數據。
注:在服務提供者的Controller中,
如果要接收(服務消費中傳過來的)被@RequestBody指明的參數,那么對應方法的對應參數前一定要有@RequestBody;(如果沒有的話,收到的參數值就為null;如果寫成@RequestParam的話,那么feign調用會失敗)
如果要接收(服務消費中傳過來的)被@RequestParam指明的參數,那么可以寫@RequestParam,也可以不寫(當服務提供者中對應的參數名字與服務消費者傳過來的參數名字一致時,可以不寫,不一致時,需要寫)
服務消費者以GET方式請求消費服務的情況(示例):
如果想讓服務消費者采用GET方式調用服務提供者,那么需要:
服務消費者這邊feign調用時,在所有參數前加上@RequestParam注解。
服務消費者這邊feign調用時,指明為GET方式(注:如果不指明method,那么在條件1滿足的情況下,默認采用的也是GET方式)。
等同于
服務消費者以POST方式請求消費服務的情況(示例):
多參數時,如果服務消費者想采用POST進行feign調用,那么:服務消費者中該接口方法里的這些參數前,最多只能有一個參數是@RequestBody指明的,其余的參數必須使用@RequestParam指明。
如:
等同于(String name 這個參數前什么也不寫,那么默認的即為@RequestBody)
如果服務消費者這邊feign調用時,所有參數前面都使用了@RequestParam注解時,但是指明的是POST方式,那么最終還是以POST方式進行的:
如果服務消費者傳過來參數時,全都用的是@RequestParam的話,那么服務提供者的Controller中對應參數前可以寫@RequestParam,也可以不寫(當兩邊參數名字一致時,可以省略不寫)
如果服務消費者傳過來參數時,有@RequestBody的話,那么服務提供者的Controller中對應參數前必須要寫@RequestBody(如果是多參數的話,其余參數前視情況可以寫@RequestParam,也可以不寫)
注意:如果接口與接口的實現分別處于兩個服務中,那么接口就相當于服務消費者,而接口的實現則相當于服務提供者。兩者之間仍然滿足本文上所述要求。如:
服務消費者中的接口是這樣的:
那么對應的服務提供者中的Controller應該是這樣的:
到此,關于“使用Feign消費服務時POST/GET請求方式的作用是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。