feign实现传递参数的三种方式小结
作者:想喝咖啡的Alex 发布时间:2021-06-18 00:09:53
需要注意的一点是,feign好像是无法传递list集合类型的,但是你可以通过传递对象类型,然后在接收方再次将对象装在集合中达到集合传递的效果
传递方式一:传递的都是基本数据类型
restful风格参数,用@PathVariable写着走就行了
传递方式二:传递数组类型的参数
不使用restful风格,直接用@RequestParam声明参数之间的对应关系。
传递方式三:传递带有对象的参数
1.使用restful风格的参数要用@Pathvarible声明参数对应关系,@Pathvariable用于非字符串参数。
2.不适用restful风格的字符串参数用@Requestparam,
3.对象必须用@RequestBody注解声明
特别小知识:
默认情况下,Feign会将标有@RequestParam注解的参数转换成字符串添加到URL中,将没有注解的参数通过Jackson转换成json放到请求体中。
注意,如果在@RequetMapping中的method将请求方式指定为POST,那么所有未标注解的参数将会被忽略
spring cloud feign传参注意
最近在用SpringCloud尝试重构以前的项目,使用Feign客户端组件来调用微服务,经常出现参数传不过去变成null的问题,网上查了一下发现feign在参数上的使用还是有一定的限制的,主要是要注意:
当参数比较复杂时,feign即使声明为get请求也会强行使用post请求
不支持@GetMapping类似注解声明请求,需使用@RequestMapping(value = “url”,method = RequestMethod.GET)
使用@RequestParam注解时必须要在后面加上参数名
写了一个简单案例,同时传输一个对象和一个字符串作为请求参数,主要关注参数的声明,其余比如eureka和feign的依赖和配置和后续使用相关的知识请另行查阅。仅供参考:
服务端(生产者)
准备:
已经配置将服务注册在eureka,服务名为“item-service”
service层和dao层已经实现好了
逻辑:ItemController接收参数,调用service层,service中为商品Item对象添加详情desc,然后调用dao保存Item对象,返回Result结果封装对象
@RestController
public class ItemController {
@Autowired
private ItemService itemService;
/**
* 添加
* @param item
* @param desc
* @return
*/
@RequestMapping("/item/save")
public Result addItem(@RequestBody Item item, @RequestParam("desc") String desc){
return itemService.addItem(item, desc);
}
}
客户端(消费者)
准备:已经配置注册到eureka
逻辑:
声明ItemFeignClient调用eureka上名为"item-service"的服务,返回Result对象
使用Post请求,传递两个参数:
TbItem对象,使用@RequestBody来声明
String字符串,使用@RequestParam(“xxx”)来声明
@FeignClient("item-service")
public interface ItemFeignClient {
/**
* 添加
* @param item
* @param desc
* @return
*/
@RequestMapping(value = "/item/save",method = RequestMethod.POST)
Result addItem(@RequestBody TbItem item, @RequestParam("desc") String desc);
来源:https://blog.csdn.net/m0_45294725/article/details/109880416


猜你喜欢
- 本文实例为大家分享了Android圆形菜单的使用方法,供大家参考,具体内容如下MainActivity.java代码:package sis
- 前言今天是2021LOL全球总决赛,一直不被大家看好的EDG冲到了决赛对战韩国队的DK,可以说EDG面对如此强大的对手,想赢是比较难的,为了
- 本次和大家分享的是怎么来消费服务,上篇文章讲了使用Feign来消费,本篇来使用rest+ribbon消费服务,并且通过轮询方式来自定义了个简
- 前言 最近项目有一个节点进度条的小需求,完成后,想分享出来希望可以帮到有需要的同学。真机效果图自定义View完整代码开箱即用~,注释已经炒鸡
- 项目中需要实现一个状态显示的悬浮框,要求可以设置两种模式:拖动模式和不可拖动模式。实现效果图如下:实现步骤:1.首先要设置该悬浮框的基本属性
- 在学习SpringBoot的过程中遇到一个问题,因为SpringBoot是集成了tomcat的,所以项目是打成jar包,通过SpringMV
- 本文实例为大家分享了Unity3D Shader实现镜子效果的具体代码,供大家参考,具体内容如下/p>Shader部分代码:Shade
- 前言每次update Maven Project 的时候,看着进度条寸步难行,心里憋得十分难受,明显阻碍我学习的热情。 maven仓库默认在
- 本文实例为大家分享了基于C#实现网页爬虫的详细代码,供大家参考,具体内容如下HTTP请求工具类:功能:1、获取网页html2、下载网络图片u
- 本文实例为大家分享了Android Studio实现帧动画的具体代码,供大家参考,具体内容如下按一定的顺序播放静态的图片1、几张联系的图片2
- 本文为大家分享了使用entrySet方法获取Map集合中元素的具体代码,供大家参考,具体内容如下/*--------------------
- 1. F1弹出帮助文档先找个后缀是pdf、docx等格式的的帮助文档,将它放在项目的helpDoc下。设置其“复制到输出
- 前言日志接口(slf4j)slf4j是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,因为接口并不能独立使用,需要和具
- 前言消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构,是大型分
- SpringBoot控制配置类加载顺序@Configuration配置被加载进容器的方式大体上可分为3种手动:构建ApplicationCo
- SpringBoot版本2.2.4.RELEASE。【1】SpringBoot接收到请求① springboot接收到一个请求返回json格
- 目标多级表头、分页、动态数据实现依赖<!-- poi工具类--> &nbs
- @Autowired加到接口上但获取的是实现类问题Spring的@Autowired加到接口上但获取的是实现类? &
- 本文实例汇总了Java各种排序算法。分享给大家供大家参考,具体如下:1. 冒泡排序:public class SortTest { pub
- 0 写在前面相信用过相机的同学都知道虚化特效,这是一种使焦点聚集在拍摄主题上,让背景变得朦胧的效果,例如本文最后实现的背景虚化效果相机虚化特