Springboot+RestTemplate+文件上传(微服务调用)

SpringBoot项目中RestTemplate的5个实战技巧(含超时配置与异常处理) 本文深入探讨了SpringBoot项目中RestTemplate的5个实战技巧,包括超时配置、异常处理、动态请求头、复杂请求构建和性能调优。通过详细的代码示例和最佳实践,帮助开发者提升微服务间HTTP调用的稳定性和效率,特别适合需要处理RESTful接口的中高级Java开发者。 阅读详情

Springboot+RestTemplate+文件上传

背景

1.最近使用微服务,结果由于公司没有明确的统一技术,导致项目里使用了多种微服务调用方式,有dubbo,feign,由于服务提供者只提供了rest接口,所以在改为微服务调用的方式用不了dubbo,就用了feign,由于版本问题,feign传文件有异常,所以就用了restTemplate

调用方式

1.配置
@Configuration
public class RestTemplateConfig {
    @Bean
    @LoadBalanced
    RestTemplate restTemplate(){
        return new RestTemplate();
    }
}
2.注入
 	@Autowired
    private RestTemplate restTemplate;
3.使用
 public XXX uploadFile(MultipartFile file) {
        log.info("使用RestTemplate调用模板上传专用接口");
        File toFile = null;
        try {
            toFile = MultipartFileToFile.multipartFileToFile(file);
        } catch (Exception e) {
            e.printStackTrace();
            log.info("文件缓存发生异常:{}",e);
            return ResultGenerator.genFailResult("文件缓存发生异常");
        }
        log.info("文件缓存到服务器,文件名:{}",toFile.getName());
        FileSystemResource resource = new FileSystemResource(toFile);
        //请求路径
        //实际上就是把访问接口的"ip+端口"换成注册在注册中心的服务名
        String url = "http://服务名+context-path+requestMapping";
        //请求体参数
        MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
        //文件
        param.add("file", resource);
        //普通参数,有几个传几个,因为这是上传文件(form-data类型),所以你知道参数是什么类型的
        param.add("key", value);
       
        //请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);
        HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<>(param, headers);
        //发送请求
        ResponseEntity<String> stringResponseEntity = restTemplate.postForEntity(url, formEntity, String.class);
        String body = stringResponseEntity.getBody();
        log.info("获取返回数据:{}",body);
        if (toFile!=null) {
            MultipartFileToFile.delteTempFile(toFile);
            log.info("清除缓存文件");
        }
        if (StringUtils.isBlank(body)){
            return ResultGenerator.genFailResult("调用文件上传返回数据为空");
        }
        //body就是返回的json
        JSONObject jsonObject = JSONObject.parseObject(body);
        
       
    }
SpringBoot如何优雅实现远程调用 RestTemplate+HttpClient+feign远程调用方式简单总结。 其中包括spring boot实现远程调用的几种方式、Cloud+Consul+Feign实现远程调用、feign远程调用熔断降级等干货 阅读详情

相关推荐

星网锐捷语音网关密码重置恢复出厂设置

星网锐捷语音网关---密码重置 第一种星网锐捷SVX网关恢复出厂设置的方法 eth1口 任意口插网线,连接电脑并设置电脑固定ip为: 一, 二 网页输入: 192.168.88.86 admin 默认密码 admin 登陆。 忘记密码 可通过以下方法重置: 三: 通过crt或者 shell工具 ,连接 root@192.168.88.86 连续输入两次 passwd a12345678 reboot重启后。通过账号 密码 a12345678 即可登陆系...

cibazhanji2176的博客 1万+

Spring Cloud之(四)基于RestTemplate的微服务调用

四、基于RestTemplate的微服务调用 前面我们已经成功的把第一个小案例跑起来了,其中消费者使用了RestTemplate来调用提供者提供的微服务,下面就来详细的说明一下RestTemplate的用法! 4.1 RestTemplate介绍 Spring框架提供了RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接,我们只需要传入url以及返回值类型即可。相较于之前常用的HttpClient,RestTemplate

qq_50994235的博客 1603

MoveIt2项目想换掉KDL求解器?试试这个trac_ik插件(附源码编译避坑指南)

本文详细介绍了如何在MoveIt2项目中用trac_ik插件替代KDL求解器,提升机械臂运动学求解的效率和成功率。内容涵盖环境准备、源码编译避坑、项目集成及性能调优,特别适合需要高精度控制的协作机械臂应用场景。通过实测数据对比,trac_ik在求解时间和奇异点处理上显著优于传统KDL求解器。

weixin_30730053的博客 699

4 Spring Cloud微服务 RestTemplate的三种使用方式

第一种方法 直接使用restTemplate, url写死 package com.imooc.order.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind....

张金玉的专栏 716

全网最新首发纯干货:微信数据库表结构完整分析(一)

找不到微信DB表结构说明?找不到具体字段的解释?来这里,全网最完整版!!!

killghosts的博客 4930

BGP路由聚合:自动聚合和手动聚合

路由聚合是指将多条具体的路由合并为一条聚合路由,以减少路由表的条目数。这种技术通过只向对等体发送聚合后的路由,而不发送所有的具体路由,来减小路由表的规模。同时,被聚合的路由如果发生路由振荡,也不再对网络造成影响,从而提高了网络的稳定性。

网络技术联盟站 1221

微服务中为什么请求地址不写ip和端口

将请求地址改成http://mircroservice-provider-user/,miciroservice-provider-user是用户微服务的虚拟主机名(virtual host name) 这个虚拟主机名,取得是.spring.application.name=xxx,当Ribbon和Eureka配置使用时,会自动将虚拟主机名映射成微服务的网络地址。...

昝昝的博客 3818

ZYNQ系列PS侧和PL侧DDR3或DDR4在AD(Altium Designer 25)中的layout布线规则约束

DDR3或DDR4的PCB布线规则通常有相对固定的要求,对应的,在PCB设计时有固定的约束设置。

FPGA艺术家的博客 790

微服务RestTemplate + 服务名远程调用

微服务RestTemplate + 服务名远程调用远程调用 微服务远程调用有feign和RestTemplate两种选择,虽然feign是更好的选择,但有时也会出现需要使用RestTemplate方式调用的情况,在此记录。 原理 服务发现 RestRemplate远程调用微服务接口,是建立在服务发现和服务注册的基础上的,所以首先需要保证服务的消费者和服务的生产者,都注册在微服务上,通过http://eurekaServerIp:port/eureka来查看eureka上注册的微服务实例,如果服务未成功注

xuxwg的博客 1825

<IBM DB2>《DB2 官方监控脚本 2022版本》

DB2 监控脚本

Else 的博客 675

基于YOLOv8与UI界面的校园垃圾分类督导系统

YOLO(You Only Look Once)是目前最为广泛使用的目标检测算法之一。它通过一次前向传递即完成目标检测,具有极高的速度与效率。YOLOv8是YOLO系列的最新版本,相比于之前的YOLO版本,YOLOv8在速度、精度、检测能力等方面都有了显著的提升。本项目通过结合YOLOv8模型与UI界面,成功实现了校园垃圾分类督导系统。该系统能够自动识别不同类型的垃圾,并通过UI界面实时展示垃圾分类的结果。

YOLO 337

Nacos由浅入深(一)

Nacos 的关键特性包括: 服务发现和服务健康监测 Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO或HTTP&API查找和发现服务。 Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支...

astra_zhao的专栏 1167

2024年下半年网络规划设计师论文真题

3、深入论述自身参与的工业网络是如何实施的,为实现制造业的智能化,如何实现数据的跨系统互通,促进各种工业数据的充分流动和无缝集成以及数据安全。3、结合自身参与的网络建设,详细叙述针对该网络“去NAT”的规划和设计方案。4、在实施过程中遇到的问题以及如何处理,项目实施后的效果和评价。2、大型园区网络“去NAT”改造和业务融合的整体架构。1、“网络去NAT”对推进ipv6演进和应用的意义。4、改造过程中遇到的问题及解决方案。2、简要叙述自身参与的制造网络建设。1、网络规划在智能制造中的意义。

鹿鸣天涯 2371

【SpringBoot】springboot 与 RestTemplate

传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。spring提供了一种简单便捷的模板类来进行操作,这就是RestTemplate。

天天新知 1698

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SpringCloud - Feign实现声明式REST调用

6.使用Feign实现声明式REST调用 环境版本 - SpringCloud Hoxton.** 和 SpringBoot 2.** 兼容版本 注意:SpringCloud 和 SpringBoot请到Spring官网查看版本对应关系 避免启动时一些依赖问题的错误 <!--SpringBoot依赖 2.2.7.RELEASE--> <dependency> <groupId>org.springframework.boot</groupId>

Thread丶 485

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java开发者集成Ostrakon-VL-8B指南:SpringBoot后端API开发

本文介绍了Java开发者如何在星图GPU平台上自动化部署Ostrakon-VL-8B多模态大模型镜像,并快速构建SpringBoot后端API服务。通过该平台,开发者可轻松集成该模型,实现图片内容理解与问答功能,典型应用场景包括构建图片内容审核微服务,自动识别违规内容。

weixin_31419153的博客 30

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Asian Beauty Z-Image Turbo Java后端集成实战:SpringBoot调用指南

本文介绍了如何在星图GPU平台上自动化部署Asian Beauty Z-Image Turbo镜像,并详细阐述了将其集成到SpringBoot后端服务中的实战方案。通过该方案,开发者可以构建稳定、高效的AI图像生成服务,典型应用场景包括为内容创作平台快速生成高质量的亚洲风格人像图片。

weixin_42583683的博客 59

SpringBoot 使用RestTemplate实现调用服务

SpringBoot的搭建可以看一下我之前写的一篇博客 https://blog.youkuaiyun.com/cwr452829537/article/details/81351987 准备工作 要使用RestTemplate需要引入依赖,web依赖也可以在创建项目时选择Web -&gt; Web &lt;!-- web --&gt; &lt;dependency&gt; &lt;groupI......

BigpotR 2万+

Springboot中使用RestTemplate完成多文件上传

背景:现有Springboot微服务A,其对外提供一个多文件上传的接口,接口代码如下: /** * 远程服务提供的多文件上传的REST API * @param files * @param request * @return */ @RequestMapping(value = "/file/upload", method = RequestMethod.POST) public Strin...

Lieforlove的博客 5272

SpringBoot通过RestTemplate远程调用其他微服务

Spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统 一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值类型即可。 相较于之前常用的HttpClient,RestTemplate是一种更优雅的调用RESTful服务的方式。 在Spring应用程序中访问第三方REST服务与使用Spring RestTemplate类有关。RestTemplate类的设计 原则与许多其他Spring 模板类(例...

taibaishenlong的专栏 1709

从RestTemplate 到 OpenFeign 在微服务调用中的对比

从RestTemplate 到 OpenFeign 在微服务调用中的对比

Yeats_Liao的博客 960

springboot中使用RestTemplate调用rest服务

日常开发中,调用远程的rest服务是很常见的,比如微服务情况下的rest服务调用,又或者是调用第三方服务。微服务下的调用有服务注册与发现机制来调用,也可以使用RestTemplate方式来调用;而要是第三方服务,那么一般情况下是通过HTTP请求来调用。 接下来就看说一下在springboot项目中,用RestTemplate来调用远程rest服务,包括第三方服务。 首先我们的web项目中一般会有...

相逢一笑 2144

02-微服务的拆分规则和基于RestTemplate的远程调用

02-微服务的拆分规则和基于RestTemplate的远程调用

欢迎阅读我的博客 727

SpringBoot使用RestTemplate 实现服务间的调用

SpringBoot使用RestTemplate 实现服务间的调用 1 启动被调用服务,获取被调用服务的 url 请求地址: url:http://localhost:9001/course/direcrion?directionId=1&page=1&size=2; 2 在调用服务的启动类中追加 TestTemplate : //使用RestTemplate这个组件实现服务间的...

weixin_45389262的博客 766

【微服务~远程调用】RestTemplate基本操作快速入门

RestTemplate基本操作快速入门

少年你真的要止步于此嘛。 1966

微服务—远程调用(RestTemplate)

微服务远程调用-RestTemplate详解

一枚数学专业的小码农的博客 1975
上一篇: JAVA布隆过滤器的使用BloomFilter
下一篇: Pyqt5编写小工具 Fatal error detected failed to execute script main.py
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值