当前位置: 首页 > news >正文

微服务中RestTemplate访问其他服务返回值转换问题

背景:

接收一个springcloud项目,UI模块访问其他服务的接口,返回数据统一都是使用fastjson进行转换,但是新开发了几个新模块之后发现fastjson很多bug(各种内存溢出),但是很多地方已经重度依赖fastjson,只是升级改掉了内存溢出的某些代码,最近突然想起来RestTemplate明明有定义返回值为啥不直接使用,因为我是为了统一规范,按照以前调用模块的写法进行开发,于是说试就试:

1. 调用接口(被调用接口我是统一返回json,也就是使用@RestController注解):

ReturnT responseEntity = restTemplate.postForObject("http://THPWPSERVICE/xx", 实体参数, ReturnT.class);

直接使用定义好的统一返回类型ReturnT进行接收返回值,然后访问页面无数据,后台报错如下:

databind.exc.MismatchedInputException: Cannot construct instance of................

网上各种查询,发现原因是要想接收指定类型,这个指定类型必须继承序列化,且还必须有有参构造函数以及午餐构造函数,于是添加@AllArgsConstructor 、@NoArgsConstructor注解再implements Serializable,完整统一返回类型的实体定义如下:

重启程序,再次访问终于拿到数据了

以下记录下一些RestTemplate调用注意事项:

1. 被调用接口如果形参是实体,那么就在实体之前加上注解@RequestBody,否则无法接收到参数

2. 被调用接口如果形参是基础类型参数(如String、int类型等等),那么就在类型前加上注解@RequestParam,否则无法接收到参数

3. 如果参数非实体类型,那么建议使用get请求   :

 String json = restTemplate.getForObject("http://XXXSERVICE/getById?id="+id, String.class);

以下是一些常用调用方法:

1. 带实体入参,使用post请求,layui表格返回值,直接返回json格式即可,无需解析return restTemplate.postForObject("http://THPWPSERVICE/supplies/getItems", form, String.class);  2. 参数少,使用get请求	,返回json实体,再转成实体类,再返回页面String json = restTemplate.getForObject("http://THPWPSERVICE/supplies/getByItemCode?itemCode="+itemCode, String.class);s = JSON.parseObject(json, new TypeReference<SuppliesItem>() {});3. 转list	ids = JSON.parseObject(json, new TypeReference<List>() { });4 .  BookDto bookDto = restTemplate.getForObject(url, BookDto.class);   -----待尝试5. ResponseEntity<BookDto> responseEntity = restTemplate.getForEntity(url, BookDto.class); -----待尝试//状态码System.out.println(responseEntity.getStatusCode());//获取头System.out.println("头:" + responseEntity.getHeaders());//获取bodyBookDto bookDto = responseEntity.getBody();6.  ResponseEntity<List<BookDto>> responseEntity =   -----待尝试restTemplate.exchange(url,HttpMethod.GET,null,new ParameterizedTypeReference<List<BookDto>>() {});List<BookDto> bookDtoList = responseEntity.getBody();7. BookDto result = restTemplate.postForObject(url, 参数, BookDto.class);

相关文章:

微服务中RestTemplate访问其他服务返回值转换问题

背景&#xff1a; 接收一个springcloud项目&#xff0c;UI模块访问其他服务的接口&#xff0c;返回数据统一都是使用fastjson进行转换&#xff0c;但是新开发了几个新模块之后发现fastjson很多bug&#xff08;各种内存溢出&#xff09;&#xff0c;但是很多地方已经重度依赖fa…...

Centos7.9上(离线)安装Gitlab

1、下载Gitlab的rpm安装包Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 2、安装rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm&#xff0c;如果依赖缺失&#xff0c;yum安装即可 3、vi /etc/gitlab/gitlab.rb 配置external_url&…...

pikachu中RCE出现乱码的解决的方案

exec “ping” 输入127.0.0.1 这种乱码的解决办法就是在pikachu/vul/rce/rce_ping.php目录里面的第18行代码 header("Content-type:text/html; charsetgbk");的注释打开即可。 BUT但是吧&#xff01;又出现了其他的乱码&#xff01;但是搞完这个再把它给注释掉就行了…...

airflow是什么

Airflow 简介 Airflow是一个基于有向无环图(DAG)的可编程、调度和监控的工作流平台&#xff0c;它可以定义一组有依赖的任务&#xff0c;按照依赖依次执行。airflow提供了丰富的命令行工具用于系统管控&#xff0c;而其web管理界面同样也可以方便的管控调度任务&#xff0c;并…...

训练用于序列分类任务的 RoBERTa 模型的适配器

介绍 NLP当前的趋势包括下载和微调具有数百万甚至数十亿参数的预训练模型。然而,存储和共享如此大的训练模型非常耗时、缓慢且昂贵。这些限制阻碍了 RoBERTa 模型开发更多用途和适应性更强的 NLP 技术,该模型可以从多个任务中学习并针对多个任务进行学习;在本文中,我们将重…...

Linux之awk判断和循环

echo zhaoy 70 72 74 76 74 72 >> score.txt echo wangl 70 81 84 82 90 88 >> score.txt echo qiane 60 62 64 66 65 62 >> score.txt echo sunw 80 83 84 85 84 85 >> score.txt echo lixi 96 80 90 95 89 87 >> score.txt把下边的内容写入到s…...

Django入门

Day1 django环境安装 创建虚拟环境 # step1 创建虚拟环境 python3 -m venv datawhale_django # step2 mac进入虚拟环境 source ./datawhale_django/bin/activate # step3 退出虚拟环境 deactivate安装包 pip3 install django ​pip3 install djangorestframework​​ pip3 …...

uniapp 格式化时间刚刚,几分钟前,几小时前,几天前…

效果如图&#xff1a; 根目录下新建utils文件夹&#xff0c;文件夹下新增js文件&#xff0c;文件内容&#xff1a; export const filters {dateTimeSub(data) {if (data undefined) {return;}// 传进来的data必须是日期格式&#xff0c;不能是时间戳//将字符串转换成时间格式…...

JProfiler —CPU评测

当JProfiler测量方法调用的执行时间及其调用堆栈时&#xff0c;我们称之为“CPU评测”。这些数据以多种方式呈现。根据你试图解决的问题&#xff0c;其中一个或另一个演示将是最有帮助的。默认情况下不会记录CPU数据&#xff0c;您必须打开CPU记录才能捕获有趣的用例。 一、调…...

994. 腐烂的橘子

994. 腐烂的橘子(面试题打卡/前缀和/简单) 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/rotting-oranges/ 题干&#xff1a; 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a;…...

Rx.NET in Action 第三章学习笔记

3 C#函数式编程思想 本章内容包括 将 C# 与函数式技术相结合使用委托和 lambda 表达式使用 LINQ 查询集合 面向对象编程为程序开发提供了巨大的生产力。它将复杂的系统分解为类&#xff0c;使项目更易于管理&#xff0c;而对象则是一个个孤岛&#xff0c;你可以集中精力分别处理…...

Windows11环境下VS2019调用Pytorch语义分割模型(C++版)

语义分割模型在训练时往往采用python脚本进行网络搭建和训练&#xff0c;并获得训练好的模型。为了提高效率方便整个工程项目部署&#xff0c;实际工程应用中通常希望使用C编程语言调用训练好的网络模型。查询大量网络资料并踩过无数坑后&#xff0c;经实际测试实现了在window1…...

Milkv Duo 以太网使用与配置

网络配置 使能网卡 使用ip link查看是否存在eth0网卡&#xff0c;若无使用如下命令使能网卡&#xff1a; ip link set eth0 up两次使用ip link确认网卡eth0已经使能。 配置IP、gws 本人设备连接到华为路由器下&#xff0c;故增加如下路由信息&#xff1a; ip route add d…...

bash: make: command not found

make之后报错信息如下&#xff1a;cd 对应的文件路径后 make 发现报错&#xff1a;bash: make: command not found 这个原因可能是没有安装make工具,也可能是安装了make之后,没有将make的文件路径添加到系统环境变量中 有没有安装make,可以使用Search Everything搜索是否有make…...

热点如何用于期刊写作——以chatGPT为例

交叉领域A&#xff0c;B 以自己为例子&#xff0c;A是教育 B是技术&#xff0c;我是教育技术学专业。 经验来源 知网关于GPT的140余篇专业论文的观察 截止至2023年8月14日15:35:45 学习每出现一个热点&#xff0c;如何应用于学术。 实践阅读发现 套路一&#xff1a;谈理论…...

IGV.js 的完全本地化运行探索

问题及解决方法 IGV.js 完全本地化是为了合规&#xff0c;不使用外网的情况下查看基因组。不联网需要下载 genomes.json 文件及其中的内容之外&#xff0c;还需要修改 igv.js本身&#xff0c;防止5s超时后才显示网页内容。修改的关键词是: genomes.json&#xff0c;改为本地的…...

网络安全渗透测试之靶场训练

NWES: 7月26号武汉地震检测中心遭受境外具有政府背景的黑客组织和不法分子的网络攻击。 目前网络攻击主要来自以下几种方式: DDOS&#xff1a;分布式拒绝服务攻击。通过制造大量无用的请求向目标服务器发起访问&#xff0c;使其因短时间内无法处理大量请求而陷入瘫痪。主要针对…...

Java课题笔记~ Spring 的事务管理

一、Spring 的事务管理 事务原本是数据库中的概念&#xff0c;在 Dao 层。但一般情况下&#xff0c;需要将事务提升到业务层&#xff0c;即 Service 层。这样做是为了能够使用事务的特性来管理具体的业务。 在 Spring 中通常可以通过以下两种方式来实现对事务的管理&#xff…...

仿到位|独立版家政上门预约服务小程序家政保洁师傅上门服务小程序上门服务在线派单源码

上门预约服务派单小程序家政 小程序 同城预约 开源代码 独立版. 程序完整,经过安装检测,可放心下载安装。 适合本地的一款上门预约服务小程序,功能丰富,适用多种场景。 程序功能:城市管理/小程序DIY/服务订单/师傅管理/会员卡功能/营销功能/文章功能等等...

Observability:识别生成式 AI 搜索体验中的慢速查询

作者&#xff1a;Philipp Kahr Elasticsearch Service 用户的重要注意事项&#xff1a;目前&#xff0c;本文中描述的 Kibana 设置更改仅限于 Cloud 控制台&#xff0c;如果没有我们支持团队的手动干预&#xff0c;则无法进行配置。 我们的工程团队正在努力消除对这些设置的限制…...

2024 CKA备考环境搭建实战 | 从零构建VMware Ubuntu虚拟化平台

1. 为什么选择VMware搭建CKA备考环境 备考CKA认证时&#xff0c;一个稳定、可复现的实验环境至关重要。我在过去三年帮助过上百名学员搭建环境&#xff0c;发现VMware Workstation有三大不可替代的优势&#xff1a; 首先是硬件兼容性。我的旧笔记本只有8GB内存&#xff0c;通过…...

章二 直通心灵的窗口

我们常说字如其人&#xff0c;一定程度上就是想表达每一个人从他身上透出的气质或行为能够勾勒出他有一个怎样的内心世界&#xff0c;能抽象出他给人群留下的映像&#xff08;此处我真的笑出了猪叫&#xff0c;因为我的字特别丑&#xff0c;但我并不觉得本人特别丑哈哈&#xf…...

批量音频音量调整工具使用说明:固定增减分贝与目标响度两种模式怎么选

音频素材一多&#xff0c;“音量不一致”会非常影响体验&#xff1a;同一套课程、同一期播客、同一批口播&#xff0c;听起来忽大忽小&#xff0c;不是观感问题&#xff0c;是会把人听烦。【批量音频音量调整工具】的核心思路很直白&#xff1a;选一个主文件夹&#xff0c;把里…...

避坑指南:RK3588部署YOLOv8时,模型转换与板端环境那些容易忽略的细节

RK3588部署YOLOv8避坑实战&#xff1a;模型转换与板端环境的七个关键陷阱 当你在RK3588上部署YOLOv8时&#xff0c;是否遇到过这样的场景&#xff1a;按照官方文档一步步操作&#xff0c;却在模型转换或板端推理时莫名失败&#xff1f;这很可能是因为忽略了某些"隐藏规则…...

【信息科学与工程学】【管理科学】第六十篇 企业运营运作表02

OP-FI-091 &#xff5e; OP-FI-100 公司金融高阶模型详解&#xff08;续&#xff09;OP-FI-091&#xff1a;反向莫里斯信托模型编号类型子类领域运营运作模型模型的所有参数/特征/常量/变量列表和字段说明模型的逐步推理思考的每一步的数学方程式建模时序和流程和周期精度/误差…...

【限时解密】2026奇点大会未发布数据集首曝:17个AI-Native开源项目star增长率 vs 代码贡献者留存率相关性分析(R²=0.93)

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AI原生开源生态 2026奇点智能技术大会(https://ml-summit.org) AI原生范式的演进本质 AI原生&#xff08;AI-Native&#xff09;不再仅指“用AI增强已有系统”&#xff0c;而是从底层基础设施、开发范式到应用交付全栈重构…...

STM32N6开发板跑YOLOv8人脸检测,从模型转换到烧录的‘避坑’实战记录

STM32N6开发板部署YOLOv8人脸检测的十二个致命陷阱与突围方案 当我在深夜第三次面对开发板毫无反应的LCD屏幕时&#xff0c;咖啡杯旁的示波器探头正闪烁着诡异的蓝光。这不是教科书上的标准流程演示&#xff0c;而是一场真实发生在嵌入式AI部署前线的技术突围战。STM32N6这颗搭…...

搜索引擎快速收录方法|SEO 收录底层逻辑,一看就懂

爬虫不是机器人&#xff0c;是“内容猎人”很多人以为搜索引擎收录就是机器冷冰冰地扫一遍网页&#xff0c;其实没那么简单。爬虫更像是一个有偏好的“内容猎人”——它喜欢新鲜、结构清晰、关键词自然分布的内容。如果一篇文章写得像说明书&#xff0c;或者堆满重复词&#xf…...

LeetCode 最长回文子串:python 题解苑

1 实用案例 1.1 表格样式生成 本示例用于生成包含富文本样式与单元格背景色的Word表格文档。 模板内容&#xff1a; 渲染代码&#xff1a; # python-docx-template/blob/master/tests/comments.py from docxtpl import DocxTemplate, RichText # data: python-docx-template/bl…...

大寰AG-95夹爪通讯协议转换器配置指南:从Modbus-RTU到多协议兼容

1. 大寰AG-95夹爪通讯协议转换器入门指南 第一次接触大寰AG-95夹爪的通讯协议转换器时&#xff0c;我完全被各种专业术语搞晕了。后来在实际项目中反复调试才发现&#xff0c;这东西就像个"翻译官"&#xff0c;专门解决不同设备之间的"语言不通"问题。AG-9…...