SpringCloud Feign服務(wù)調(diào)用請求方式總結(jié)
前言
最近做微服務(wù)架構(gòu)的項目,在用feign來進行服務(wù)間的調(diào)用。在互調(diào)的過程中,難免出現(xiàn)問題,根據(jù)錯誤總結(jié)了一下,主要是請求方式的錯誤和接參數(shù)的錯誤造成的。在此進行一下總結(jié)記錄。以下通過分為三種情況說明,無參數(shù),單參數(shù),多參數(shù)。每種情況再分get和post兩種請求方式進行說明。這樣的話,6種情況涵蓋了feign調(diào)用的所有情況。
有個建議就是為了保證不必要的麻煩,在寫feign接口的時候,與我們的映射方法保持絕對一致,同時請求方式,請求參數(shù)注解也都不偷懶的寫上。如果遵循這種規(guī)范,可以避開90%的調(diào)用錯誤。
無參情況
無參情況就是說我們的方法內(nèi)不接收參數(shù)。
Get請求
當我們只寫RequestMapping,而不指定RequestMethod的時候。默認的method為一個get請求。
@RequestMapping("/noArgs/getDemo") public void noArgsGetDemo();
Post請求
@RequestMapping(value = "/noArgs/postDemo",method = RequestMethod.POST) public void noArgsPostDemo();
也可以直接使用PostMapping
@PostMapping(value = "/noArgs/postDemo") public void noArgsPostDemo();
單個參數(shù)的情況
方法內(nèi)只有一個參數(shù)
Get請求
get請求方式接參,只能使用RequestParam注解
@RequestMapping(value = "/singleArg/getDemo") public void singleArgGetDemo(@RequestParam String name);
不寫RequestMethod注解,默認就是get請求。
Post請求
post請求方式接參,可以使用三種方式,一種是不寫,一種是RequestParam,一種是RequestBody。
RequestParam
先說說RequestParam這種方式。需要指明method,如果不指明則和上方一樣了。默認是get。
@RequestMapping(value = "/singleArg/PostDemo",method = RequestMethod.POST) public void singleArgPostDemo(@RequestParam String name);
RequestBody
一旦使用RequestBody這種方式,他就是post請求,不用寫method了。
@RequestMapping(value = "/singleArg/PostDemo") public void singleArgPostDemo(@RequestBody String name);
這個注解就很強勢了,你寫post,不寫或者寫get都沒用,不會生效的,只要有這個方式那他就是Post請求了。
啥也不寫
@RequestMapping(value = "/singleArg/PostDemo") public void singleArgPostDemo(String name);
此時默認會在參數(shù)前加上RequestBody注解。然后就會變成Post請求。
多參
get請求
多個參數(shù)也是使用@RequestParam注解。
@RequestMapping(value = "/moreArgs/getDemo") public void moreArgGetDemo(@RequestParam String name,@RequestParam String sex);
使用了RequestParam注解,默認method就是get。
post請求
多個參數(shù)只能有一個是requestBody方式,其他應(yīng)該使用requestParam方式。
@RequestMapping(value = "/moreArgs/postDemo") public void moreArgPostDemo(@RequestBody String name,@RequestParam String sex);
也可以全部使用RequestParam方式,但是要指定post。
@RequestMapping(value = "/moreArgs/postDemo",method = RequestMethod.POST) public void moreArgPostDemo(@RequestParam String name,@RequestParam String sex);
如果要是參數(shù)前,都沒寫注解,則會報錯,因為會默認加上兩個RequestBody。
總結(jié)
至此feign的請求方式就說明白了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringCloud通過Nacos實現(xiàn)注冊中心與遠程服務(wù)調(diào)用詳解流程
- SpringCloud超詳細講解Feign聲明式服務(wù)調(diào)用
- springcloud使用feign調(diào)用服務(wù)時參數(shù)內(nèi)容過大問題
- springcloud?feign服務(wù)之間調(diào)用,date類型轉(zhuǎn)換錯誤的問題
- SpringCloud之Feign代理,聲明式服務(wù)調(diào)用方式
- SpringCloud 服務(wù)負載均衡和調(diào)用 Ribbon、OpenFeign的方法
- SpringCloud讓微服務(wù)實現(xiàn)指定程序調(diào)用
- SpringCloud服務(wù)的發(fā)現(xiàn)與調(diào)用詳解
- SpringCloud遠程服務(wù)調(diào)用三種方式及原理
相關(guān)文章
Java實現(xiàn)DFA算法對敏感詞、廣告詞過濾功能示例
本篇文章主要介紹了Java實現(xiàn)DFA算法對敏感詞、廣告詞過濾功能示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11SpringCloud+MyBatis分頁處理(前后端分離)
這篇文章主要為大家詳細介紹了SpringCloud+MyBatis分頁處理,前后端分離,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-10-10Flutter ListView 上拉加載更多下拉刷新功能實現(xiàn)方法
這篇文章主要介紹了Flutter ListView 上拉加載更多下拉刷新功能實現(xiàn)方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07Java字節(jié)與字符流永久存儲json數(shù)據(jù)
本篇文章給大家詳細講述了Java字節(jié)與字符流永久存儲json數(shù)據(jù)的方法,以及代碼分享,有興趣的參考學(xué)習(xí)下。2018-02-02Mybatis如何使用@Mapper和@MapperScan注解實現(xiàn)映射關(guān)系
這篇文章主要介紹了Mybatis使用@Mapper和@MapperScan注解實現(xiàn)映射關(guān)系,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10