本文说明FeignClient传参的几种方式。
传基本类型参数
使用@RequestParam,注意注解的value参数不可少,代码如下:
1 |
|
传Map传参数
参数太多的时候,上面的方式就要写一堆,可以直接上map
注意,需要加@RequestParam注解,但不需要加注解的value参数
1 |
|
传对象
Fegin传对象的时候,需要加@RequestBody注解,如下:
1 |
|
注意,服务提供者的Controller的接收参数前也需要加@RequestBody注解
1 |
|
@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象
如果这时候要使用postman直接请求上面的test3接口,那么需要将Content-Type修改为application/json
这样做虽然解决了feign传对象的问题,但是直接请求/test3接口就麻烦了,不能直接使用form-data的形式了。 这里使用RequestInteceptor来解决。
传对象 + RequestInteceptor
处理思路:feign发请求的时候,将json body转成query。
服务提供者的Controller的接收参数前==不需要@RequestBody注解==
在上例DemoService所在的项目中增加如下代码即可:
1 |
|