SpringCloud中Feign服務調用請求方式及參數總結

前言

最近作微服務架構的項目,在用feign來進行服務間的調用。在互調的過程當中,不免出現問題,根據錯誤總結了一下,主要是請求方式的錯誤和接參數的錯誤形成的。在此進行一下總結記錄。如下經過分爲三種狀況說明,無參數,單參數,多參數。每種狀況再分get和post兩種請求方式進行說明。這樣的話,6種狀況涵蓋了feign調用的全部狀況。
有個建議就是爲了保證沒必要要的麻煩,在寫feign接口的時候,與咱們的映射方法保持絕對一致,同時請求方式,請求參數註解也都不偷懶的寫上。若是遵循這種規範,能夠避開90%的調用錯誤。架構

無參狀況

無參狀況就是說咱們的方法內不接收參數。app

Get請求

當咱們只寫RequestMapping,而不指定RequestMethod的時候。默認的method爲一個get請求。微服務

@RequestMapping("/noArgs/getDemo")
    public void noArgsGetDemo();

Post請求

@RequestMapping(value = "/noArgs/postDemo",method = RequestMethod.POST)
    public void noArgsPostDemo();

也能夠直接使用PostMappingpost

@PostMapping(value = "/noArgs/postDemo")
    public void noArgsPostDemo();

單個參數的狀況

方法內只有一個參數code

Get請求

get請求方式接參,只能使用RequestParam註解接口

@RequestMapping(value = "/singleArg/getDemo")
    public void singleArgGetDemo(@RequestParam String name);

不寫RequestMethod註解,默認就是get請求。get

Post請求

post請求方式接參,可使用三種方式,一種是不寫,一種是RequestParam,一種是RequestBody。request

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);

此時默認會在參數前加上RequestBody註解。而後就會變成Post請求。

多參

get請求

多個參數也是使用@RequestParam註解。

@RequestMapping(value = "/moreArgs/getDemo")
    public void moreArgGetDemo(@RequestParam String name,@RequestParam String sex);

使用了RequestParam註解,默認method就是get。

post請求

多個參數只能有一個是requestBody方式,其餘應該使用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);

若是要是參數前,都沒寫註解,則會報錯,由於會默認加上兩個RequestBody。

總結

至此feign的請求方式就說明白了。

相關文章
相關標籤/搜索