微服务实战(二十) 微服务RPC feign如何进行实体对象传递与接收

2023-11-17

关于微服务RPC远程调用,之前已经简单介绍过feign以及openfeign,并且就参数传递与接收也进行过简单讲解。

Nacos+Feign简单使用:https://blog.csdn.net/u011177064/article/details/104309921

本文继续介绍feign采用实体对象作为请求响应参数具体怎么使用。

 

以下是几种常见的用法:

1、

请求参数: GET请求,请求参数按字段名使用@RequestParam注解,并且里面的 value 必须和 服务生产者的参数名一致

响应参数: 实体+泛型

消费者-请求

//表示该接口的方法由feign实现远程调用,
//目标接口地址示例: jfcloud-mall-storage/storage/getStorages

@FeignClient(name = "jfcloud-mall-storage")  //jfcloud-mall-storage在nacos中已注册
public interface StorageServiceClient {

    @GetMapping(path = "/storage/getStorages")
    public RespDataT<List<JfcloudStorage>> getStoragesByEntity(@RequestParam("productIds")  Long[] productIds);

}

生产者-响应   (springboot控制器)

@ApiOperation("商品库存查询")
@GetMapping(path = "/getStorages")
@ResponseBody
public RespDataT<List<JfcloudStorage>> getStorages(StorageQueryForm  query) 


//query对象
@Data
public class StorageQueryForm {

    @ApiModelProperty(value = "商品ID (多个)")
    private Long[] productIds;
}

2、

请求参数: POST请求,JSON数据,使用@RequestBody注解

消费者-请求

@FeignClient(name = ServiceNames.mall_storage)
public interface StorageServiceClient {

    @PostMapping(path = "/storage/deductStorage",consumes = "application/json", produces = "application/json")
    RespData deductStorage(@RequestBody StorageDeductForm form);
}

生产者-响应   (springboot控制器)

    @ApiOperation("扣减库存")
    @PostMapping(path = "/deductStorage",consumes = "application/json", produces = "application/json")
    @ResponseBody
    public RespDataT<JfcloudStorage> deductStorage(@RequestBody StorageDeductForm form)

使用实体接收数据时要注意泛型的正确使用。

public class RespDataT<T>{
	public static final int Success = 1;
	public static final int Error = 0;
	
	private int status;
	private T datas ;
	
	public RespDataT(T datas) {
		this.datas = (T)datas;
		this.status =Success;
	}
	

	public RespDataT() {
	}
	
	public int getStatus() {
		return status;
	}
	public void setStatus(int status) {
		this.status = status;
	}
	public T getDatas() {
		return datas;
	}
	public  void  setDatas(T datas) {
		this.datas = datas;
	}
	
}

最开始的时候,因为 public  void  setDatas(T datas)  写成了  public  void  setDatas(Object datas) 

所以feign把返回数据自动转成了Map,所以要注意一下

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微服务实战(二十) 微服务RPC feign如何进行实体对象传递与接收 的相关文章

  • SpringBoot+Dubbo分布式SOA项目骨架搭建(二)

    SpringBoot Dubbo分布式SOA项目骨架搭建 项目介绍 本项目是来自于上一篇文章http blog csdn net songxinjianqwe article details 77478385 中的服务化拆分这个部分 经过一
  • QSplitter(分离器或分隔符)

    QSplitter 分离器或分隔符 本文为原创文章 转载请注明出处 或注明转载自 黄邦勇帅 原名 黄勇 本文出自本人原创著作 Qt5 10 GUI完全参考手册 网盘地址 https pan baidu com s 1iqagt4SEC8PU
  • 顺序表的原理与初始化

    顺序表是简单的一种线性结构 逻辑上相邻的数据在计算机内的存储位置也是相邻的 可以 快速定位第几个元素 中间不允许有空值 插入 删除时需要移动大量元素 顺序表的三个要素 用 elems 记录存储位置的基地址 分配一段连续的存储空间 size
  • crontab的使用方法介绍

    使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令 例如系统管理员安排一个备份任务使其每天都运行 安装 apt get install cron 服务器环境下默认都会安装 使用 crontab e 进入编辑页
  • java常见面试题及答案 11-20(JVM)

    11 JVM内存分哪几个区 每个区的作用是什么 java虚拟机主要分为以下一个区 方法区 1 有时候也成为永久代 在该区内很少发生垃圾回收 但是并不代表不发生GC 在这里进行的GC主要是对方法区里的常量池和对类型的卸载 2 方法区主要用来存
  • 安全测试初体验-XSS

    XSS XSS攻击成功后 攻击者能够对用户当前浏览器的页面植入恶意脚本 通过恶意脚本 控制用户的浏览器 这些用以完成各种具体功能的恶意脚本 被称为 XSS Payload XSS Payload实际上就是JavaScript脚本 所以任何J
  • JS逆向之某头条jsvmp逻辑层算法分析

    今天我们来研究下 某头条的jsvmp逻辑层加密算法 其主要的目的是想在大家在接触此类算法时 给出点实质性的建议和思路 0x01 分析加密 进入到目标网站通过分析请求会发现一个动态的 signature 加密参数 0x02 定位加密 不同于以
  • 在matlab中编译C++和opencv

    1 在matlab中运行 mex setup命令 选择C 类型 2 运行mex build 此时matlab配置基本完成 3在VS中添加matlab中的库目录和头文件目录 附加库目录 matlab安装目录下面的 extern lib win
  • 【Docker】 使用Docker-Compose 搭建基于 WordPress 的博客网站

    引 本文将使用流行的博客搭建工具 WordPress 搭建一个私人博客站点 部署过程中使用到了 Docker MySQL 站点搭建完成后经行了发布文章的体验 WordPress WordPress 是一个广泛使用的开源内容管理系统 CMS
  • 报告老师!AICA 学员交作业了!

    关注 飞桨PaddlePaddle 公众号 获取更多技术内容
  • linux-ssh安全策略(sshd)

    实际使用中 为限制ssh高危端口我们一般做以下策略 1 修改端口 ssh默认用22 2 密码强口令 3 root限制 4 新增ssh登录白名单 5 开启端口防火墙 6 有条件的话整个密钥登录更安全 不过avatar目前不支持密钥登录 所以项
  • 最安全的加密算法

    在密码学里 有一种理想的加密方案 叫做一次一密乱码本 one time pad one time pad的算法有以下要求 1 密钥必须随机产生2 密钥不能重复使用3 密钥和密文的长度是一样的 one time pad是最安全的加密算法 双方
  • “汉堡+奶昔”怎么就成了精致生活的热门标签?

    图片来源 视觉中国 文章来源 DT财经 左手汉堡 右手奶昔 这是新天地Coco的时髦新日常 最近沪上刮起一阵打卡新风潮 汉堡竟然成了标记城市美好生活的一大利器 还在纠结晚餐去金拱门还是汉堡王的DT君 发现自己在吃汉堡这件事上竟然也要被划出潮
  • 一步一步教你怎样给Apache Spark贡献代码

    本文将教大家怎样用10个步骤完成给Apache Spark贡献代码这个任务 到 Apache Spark 的github 页面内点击 fork 按钮 你的github帐户中会出现 spark 这个项目 本地电脑上 使用 git clone
  • 用python开发了一个绘制股票k线图的工具,还可以预测股票涨跌!【文末附源码和教学视频】

    文章目录 聊一聊这个工具 效果展示 股票数据 运行项目 前端界面 后端接口 源码地址 聊一聊这个工具 起初 我并不在意echarts 这不过是一个偶然 一次选择 一条简单的代码 一个图表的诞生 直到我完成了K线图的绘制 股票 一个神奇的发明
  • JS的内存泄露及处理方式

    概念 应用程序不再需要占用内存的时候 由于某些原因 内存没有被操作系统或可用内存池回收 就叫做内存泄漏 memory leak 内存的生命周期 内存分配 当我们声明变量 函数 对象的时候 系统会自动为他们分配内存 内存使用 即读写内存 也就
  • 利用CSS调整图片大小

    通常 我们可以给图片 img 设置一个CSS属性 定义其高度和宽度 但有时候 我们只希望控制图片的最大可见大小 这样的操作 一般有两种办法 1 直接使用CSS属性值 2 使用JavaScript动态设置CSS值 一 固定大小 一般 为了限制
  • 新手傻瓜式推荐教程:anaconda+Tensorflow+keras的安装详细教程

    目录 一 Anaconda的安装 二 Anaconda下配置Tensorflow 三 keras下载 四 出现报错 You are using pip version 9 0 1 however version 21 1 3 is avai
  • Java-用for循环嵌套输出1~100的质数(素数)

    package kjul public class jgtd public static void main String args int i j for i 2 i lt 100 i boolean flag true for j 2

随机推荐

  • pg数据库(七)之备份还原

    一 备份数据库 1 切换到postgres用户 切换到postgres用户即可 不用psql sudo su postgres 2 备份数据库 pg dump host 数据库IP port 端口 user 用户名 password 密码
  • MySQL——规范数据库设计

    文章目录 1 为什么需要设计数据库 2 三大范式 2 1 第一范式 1NF 2 2 第二范式 2NF 2 3 第三范式 3NF 3 规范性和性能的问题 1 为什么需要设计数据库 当数据库比较复杂的时候 我们就需要设计 糟糕的数据库设计 数据
  • postgresql定位未使用的索引(unused index)

    unused index会导致不必要的io开销 如写操作 insert update 期间 必须维护所有index 1 鉴于pg stat reset 函数能够reset统计信息到0 查找unused index时 先参考pg stat d
  • echarts地图的tooltip自定义样式显示图表

    echarts地图的tooltip自定义样式显示图表 最近遇到一个需求 需要在地图中实现鼠标点击或者停留在地图中某一片区域时 该区域显示亮高和显示tooltip提示框信息 但是难点在于需要在tooltip提示框中再绘制一层图表 按以往我们做
  • elasticsearch的版本和支持的jdk版本情况

    elasticsearch的版本和支持的jdk版本情况 参加官网 https www elastic co cn support matrix matrix jvm
  • 快速选择算法

    快速选择算法 我们可以将快速排序算法稍作修改将其应用在选择问题上 该算法称为快速选择算法 复杂度O NlogN 最坏情况为O N 2 令 A 为A中的元素个数 查找A中第k个最小元 算法步骤如下 1 如果 A 1 那么k 1 则将A中的元素
  • H5 及 web 页面微信授权登录流程

    一 事先准备工作 配置参数测试公众平台信息 测试号相关配置示例 1 打开公众平台的测试账号 2 配置js接口安全域名 3 扫码关注测试公众号 4 修改网页授权地址 配置授权回调的域名 至于什么是OAuth2 0 大家自行百度吧 这里的域名也
  • 传奇数据库字段说明

    MagicDb 是你所修炼的法术和各种技能 1 magsid 物品代号 2 magname 物品名称 3 effect type 效果属性 4 effect 效果 放此魔法所产生的动画效果 5 spell 每次耗用魔法值 6 defspel
  • 无版权,全免费,请收藏这10个免费高清无权素材网站

    无版权 全免费 请收藏这10个免费高清无权素材网站 2020 12 9 适用人群 网页设计师 平面设计人员 视频制作 动画设计人员 PS初学者 产品运营人员配图 公众号运营人员配图 对于设计师来说 图片 视频素材的好坏决定了设计效果的满意度
  • C/C++犯二程度计算

    文章目录 步骤一 步骤二 步骤三 下面为此题解析 为了详细 篇幅可能有点长 如果不想看解析 可翻到步骤三查看源程序 此题可以清晰看出 这是一道对数组操作的题目 因为整型数据的范围为 32 768 32767可以看出该题目要求是位数不大于10
  • Android异常 SecurityException: Permission Denial: starting Intent

    异常信息如下 SecurityException Permission Denial starting Intent act android intent action MAIN cat android intent category LA
  • 【报错】解决读取json时,出现 NameError: name ‘false‘ is not defined

    以文本格式 读取json文件时 出现如下类型错误 NameError name false is not defined NameError name null is not defined 原因是因为直接以为本流读取json 导致 fal
  • ETL数据库数据采集&订单数据采集

    问题解决 增加目标数据库配置信息 结果写出MySQL的数据库相关配置 target host localhost target port 3306 target user root target password mysql target
  • c# .net mvc的IHttpHandler奇妙之旅--图片文件请求安全过滤,图片防盗链

    源码下载 c net mvc图片文件请求安全过滤 图片防盗链 https download csdn net download cplvfx 88206428 在阅读该文章前 请先阅读该文章 c net mvc的IHttpHandler奇妙
  • Threejs进阶之五:使用CSS2DRenderer给模型添加HTML标签

    这一节给场景中的模型添加标签 想实现的效果是 通过鼠标点击场景中摩托车的某个部位 则在场景中出现一个标签 并在标签上显示该部位的信息 最终的效果图如下 要实现上面的效果 需要用到CSS 2D渲染器 先来了解下CSS 2D渲染器 CSS2DR
  • openwrt The process did not produce any response

    先记录问题 解决了再来说明 搜索了一圈没有人说到这个问题 我个人经历是 luc选择的语言是简体中文 换成英语就没错了 还在摸索
  • 通过5折交叉验证,实现逻辑回归,决策树,SVM,随机森林,GBDT,Xgboost,lightGBM的评分

    通过 折交叉验证 实现逻辑回归 决策树 SVM 随机森林 GBDT Xgboost lightGBM的评分 导入的包 import pandas as pd import warnings from sklearn preprocessin
  • EasyPoi与EasyExcl操作Excl

    EasyPoi与EasyExcel操作Excel 一 Poi介绍 Poi是操作Excel的一套规范 EasyPoi是Apache公司开发的一套框架 而EasyExcl是阿里开发的一套框架 EasyPoi是将表格一次行全部读到内存中再进行操作
  • ElementUI中遇到的问题

    1 解决在MAC系统中ElementUI中的el table标签中的滚动条太小的问题 解决方案 在CSS样式中输入如下样式 deep el table body wrapper webkit scrollbar width 17px 滚动条
  • 微服务实战(二十) 微服务RPC feign如何进行实体对象传递与接收

    关于微服务RPC远程调用 之前已经简单介绍过feign以及openfeign 并且就参数传递与接收也进行过简单讲解 Nacos Feign简单使用 https blog csdn net u011177064 article details