feign请求参数

1.SpringCloud中微服务之间的调用,传递参数时需要加相应的注解。用到的主要是三个注解@RequestBody,@RequestParam(),@PathVariable()
2.get和post请求中对于传递单个引用类型的参数,比如String,Integer....用@RequestParam(),括号中一定要有值(参数的别名)。调用方需要加注解,被调用方不需要加。当然加上也不会出错。被调用方的参数名和调用方的别名保持一致即可。
3.post请求中对于javaBean,map,list类型的参数的传递,用@RequestBody,调用方不需要加注解,被调用方加注解即可。
注:get请求中使用@RequestBody会出错,同时也不能传递javaBean,map,list类型的参数
4.参数位于路径中用@PathVariable(),调用方需要指定别名。别调用方加注解即可。
5.引用类型的参数传递时可以自动转化。比如调用方传递String类型的“11”,被调用方可以直接用Integer变量接收
6.返回值为javaBean,可以用String接收JSON字符串,然后自行转化。也可以用javaBean或者Map接收。调用方的属性名和类型要和被调用方的保持一致

 

 

1、传基本类型参数

  使用@RequestParam,注意注解的value参数不可少,代码如下:

  2、传Map参数

  参数太多的时候,上面的方式就要写一堆,可以直接上map

  注意,需要加@RequestParam注解,但不需要加注解的value参数

  3、传对象参数

  Fegin传对象的时候,需要加@RequestBody注解,如下:

  注意,服务提供者的Controller的接收参数前也需要加@RequestBody注解

  @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。 如果这时候要使用postman直接请求上面的test3接口,那么需要将Content-Type修改为application/json,如下图

  这样做虽然解决了feign传对象的问题,但是直接请求/test3接口就麻烦了,不能直接使用form-data的形式了。

  这里使用RequestInteceptor来解决。

  可参考这里https://github.com/spring-cloud/spring-cloud-netflix/issues/1253

  4、传对象 + RequestInteceptor

  处理思路:feign发请求的时候,将json body转成query。

  服务提供者的Controller的接收参数前不需要@RequestBody注解,即无需改动了 。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值