.form文件_Feign完美解决服务之间传递文件、传递list,map、对象等情况

2023-11-17

先说下背景,前段时间有一个需求,需要将服务A生成的一个文件传递到服务B,交予服务B去做处理,最开始的时候使用的spring-cloud-starter-openfeign,发现这一块是不支持的,然后引入了io.github.openfeign.form ,解决,但过一段时间又有新需求,在传递文件的同时,还传递对象和一些其他参数,这个时候发现feign就有些不行了。这个时候引入了feign-httpclient,暂时解决。用了一段时间,发现大文件的时候又出现了数据丢失等等问题。还有其他各种坑就不说了,都是用升级版本,引入其他的jar来解决的,但这个大文件数据丢失的问题一直不行。

之前使用的maven重要坐标

<!--feign支持文件上传-->
<dependency>
    <groupId>io.github.openfeign.form</groupId>
    <artifactId>feign-form</artifactId>
    <version>${feign-form-version}</version>
</dependency>
<dependency>
    <groupId>io.github.openfeign.form</groupId>
    <artifactId>feign-form-spring</artifactId>
    <version>${feign-form-version}</version>
</dependency>
<!--解决feign的传递数据丢失的问题,而且版本也要注意,中文有乱码问题-->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
    <version>${feign-httpclient}</version>
</dependency>

决定解决这个,首先说下使用的版本,这点很重要、很重要、很重要!

使用的版本:

springboot 2.0.3.RELEASEspringcloud Finchley.RELEASE

替换为下面的maven。上面的那些maven地址没必要了。

<!--版本管理-->
    <properties>
        <spring-mock-version>2.0.8</spring-mock-version>
        <!--netflix.feign 核心,使用openfeign有问题-->
        <netflix.feign-version>8.17.0</netflix.feign-version>
    </properties>

<!--远程服务调用,springboot2.0版本以上,需要导入下面的包才能使用 @EnableFeignClients 注解-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <!--feign服务直接调用,支持文件、基础数据类型、对象,list等-->
        <dependency>
            <groupId>com.netflix.feign</groupId>
            <artifactId>feign-core</artifactId>
            <version>${netflix.feign-version}</version>
        </dependency>
        <dependency>
            <groupId>com.netflix.feign</groupId>
            <artifactId>feign-jackson</artifactId>
            <version>${netflix.feign-version}</version>
        </dependency>
        <dependency>
            <groupId>com.netflix.feign</groupId>
            <artifactId>feign-slf4j</artifactId>
            <version>${netflix.feign-version}</version>
        </dependency>

        <!--file转MultipartFile-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-mock</artifactId>
            <version>${spring-mock-version}</version>
        </dependency>

注意,我已经测试过 openfeign、feign-httpclient,如果使用这些版本的并不能解决文件传递的问题,虽然可以接受文件,但是文件是残缺的,一定要替换成上面的maven才行。

核心思路就是:对编码器重写,Encoder的原理就是将每个参数json序列化,设置requestHeader为Multipart/form-data,采用表单请求去请求生成者提供的接口。这个方法能够同时发送多个实体文件,以及MultipartFile[]的数组.

首先对编码器重写,

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

.form文件_Feign完美解决服务之间传递文件、传递list,map、对象等情况 的相关文章

  • 机器学习——seaborn可视化

    主要记录seaborn可视化学习笔记 明白有哪些绘制图像的函数可用 文章目录 一 seaborn原理 二 变量分布 1 sns boxplot 查看数值变量的取值范围 2 sns displot 查看变量的分布 3 sns jointplo
  • Windows Server存储空间配置及文件服务器的搭建

    Windows Server存储空间配置及文件服务器的搭建 技术参考 存储空间配置及文件服务器的搭建 pdf 一 网络拓扑图 环境准备 基础环境级上次实验结束后环境 上次实验 这里的共享存储就使用DC服务器 基础环境的准备 文件服务器 DC
  • BinaryWatch[LeetCode]

    class Solution public vector
  • Python 直接赋值、浅拷贝和深度拷贝解析

    Python 直接赋值 浅拷贝和深度拷贝解析 一 直接赋值 直接赋值其实就是对象的引用 别名 比如 b a 把a的值赋给b b就相当于一个别名 其实a和b都是指向的同一对象 下图很清晰地说明了直接赋值的含义 二 浅拷贝 copy 与 深度拷
  • 2023年1月计划(fbo+qedl)

    根据规划 1月计划如下 剩下还有20天 主要把fbo搞定就行了 也把qedl抄几遍 当然 能移植到osg中更好 看看glsl和osg相关的视频教程和书籍 ue4和socket可以在周末学学
  • 机器人 串口配置文件serial.INI

    SERIAL INI Configuration of the serial ports and their protocols Lindemann 27 02 2002 KUKA Controls update comments and
  • MFC-编写JAVA环境变量配置发现的问题

    配置JAVA环境变量实际上是要修改系统的环境变量 MSDN中有许多修改环境变量的函数 调用比如SetEnvironmentVariable 这样的环境变量设置函数 都是无法修改系统的环境变量的 只能改变本进程的环境变量 要修改系统环境变量只
  • Blender小图标栏不见

    将鼠标放置于属性面板左上角的 gt 箭头上 按住鼠标左键 向右拉 可能会操作到两个窗口边界 需要多操作几次
  • 并 发 请 求

    如果一次性 就加载100个请求 肯定会造成服务器压力 所以有时候 需要 较少请求 来减轻服务器压力 代码如下 const urls for let i 0 i lt 100 i urls push http www bai com i fu
  • css flex布局 —— 容器属性 flex-wrap

    flex wrap属性 默认情况下 项目都排在一条线 又称 轴线 上 flex wrap属性定义 如果一条轴线排不下 如何换行 语法 box flex wrap nowrap wrap wrap reverse flex wrap 取值有三
  • Eureka与Zookeeper的区别

    著名的CAP 理论指出 一个分布式系统不可能同时满足 C 一致性 A 可用性 和 P 分区容错性 由于分区容错性在是分布式系统中必须要保证的 因此我们只能在 A 和 C 之间进行权衡 在此 Zookeeper 保证的是 CP 而 Eurek
  • mysql数据库中的索引有那些、有什么用

    转载http www 2cto com database 201212 173288 html mysql 数据库中的索引有那些 有什么用 本文主要讲述了如何加速动态网站的MySQL索引分析和优化 www 2cto com 一 什么是索引
  • Rocksdb 代码学习 写流程1(WriteBatch写,WriterThead调度Writer)

    1 几个需要使用的相关类 1 Slice 主要用来装数据的 就两个成员变量data size 就是用装key和value的值 长度 以及一些处理函数 class Slice public Create an empty slice Slic
  • 文件上传到s3服务器,如何将文件从远程服务器传输到我的Amazon S3实例?

    1 带密钥的SSH sh keygen f ssh id rsa q P cat ssh id rsa pub 将此SSH密钥放入 ssh authorized keys文件 mkdir ssh chmod 0700 ssh touch s
  • spring事务(注解 @Transactional )失效的12种场景

    文章目录 一 事务不生效 七种 1 访问权限问题 只有public方法会生效 2 方法用final修饰 不会生效 3 同一个类中的方法直接内部调用 会导致事务失效 3 1 新加一个Service方法 3 2 在该Service类中注入自己
  • WPS显示无法创建对象,请确认对象已在系统注册表中注册

    写论文想插公式发现没法插入了 注册表又不知道改哪个 所以干脆 1 卸载WPS 不保留信息 2 选择另一个不同的路径重新安装即可
  • java中的数据加密

    记录 一 java中的数据加密 Java提供的安全模型和API 加密基础知识 使用JAVA实现加密 二 Java提供的安全模型和API 2 1 Java语言本身的安全性 自动内存管理 对于生成的对象在生命周期结束后会自动销毁 自动数组溢出检
  • matlab for循环坑

    matlab 用 for 嵌套循环遍历数组时 可能有 bug matlab octave 环境 linux Matlab R2018a 1 windows GNU Octave version 5 2 0 以 for x vector 的形
  • 遍历-字典里面取键

    输入字符串 输出为 字典 输入字符串 并统计字符串重叠单个次数 a 小明456fgdddhhh55adbyjjjjj m for ch in a 从a字符串里面取值 if ch in m 取出来的值如果在 m 里面 m ch 1 m字典里面

随机推荐

  • 词云制作(中文分词+英文)

    英文文本制作词云图 pip install wordcloud filename XX txt 将目标文本文件放入这里 with open filename encoding utf8 as f mytext f read mytext 查
  • 教程:Word中如何让参考文献编号和引用标记都是数字上标

    教程 Word中如何让参考文献编号和引用标记都是上标 更新历史 20190509 首次发布 使用Microsoft Word写论文之类的文档的时候 经常需要列出参考文献 并对它们进行引用 有时候 格式规范要求我们将参考文献编号和引用标记都变
  • vscode 注释

    这篇文章主要介绍了vscode添加注释的方法 具有一定借鉴价值 需要的朋友可以参考下 希望大家阅读完这篇文章后大有收获 下面让小编带着大家一起了解一下 1 在 Vscode 扩展商店中搜索koroFileHeader 点击安装 2 注释模板
  • 计算机视觉应该怎样入门?

    知乎问答 计算机视觉应该怎样入门 目录 第一阶段 技术基石 图像处理基础 图像处理进阶 第二阶段 深度学习 神经网络初步与调参技巧 深度卷积神经网络原理与实践 图像搜索技术 大规模车辆图片搜索 重识别 第三阶段 重点攻坚 目标检测及其在无人
  • socket 编程

    为什么80 的码农都做不了架构师 gt gt gt 利用windows api进行最原始的socket编程 服务端 WSAStartup ListenSock socket bind listen ListenSock acceptSock
  • 实战3-淘宝用户行为分析及可视化

    淘宝用户行为分析及可视化 目录 淘宝用户行为分析及可视化 分析背景 明确问题 读取和理解数据 数据预处理 数据分析与可视化 用户行为分析 日PV和日UV PV与UV相关性 可视化 时PV和时UV 相关性 可视化 不同行为类型用户PV分析 操
  • stata协整检验结果怎么看_面板数据协整检验

    5 3 1裴德劳因 Pedroin 检验 裴德劳因 Pedroin 1999 提出了以恩格尔 Engle 和格兰杰 Granger 二步法为基础的面板数据的协整检验方法 该方法利用协整方程的回归残差构造了七个统计量来检验面板数据之间的协整关
  • vue 引入高德地图 amap 报错:jsapi 不生效 INVALID_USER_SCODE

    高德地图 JSAPI key 和安全密钥的使用 自2021年12月02日升级 升级之后所申请的 key 必须配备安全密钥 jscode 一起使用 报错 高德地图jsapi不生效 INVALID USER SCODE 是因为没有设置安全密钥
  • 全排列

    举例 123的全排列 123 132 213 231 321 312 全排列的个数为 n STL 实现 char s 50 cin gt gt s int k strlen s sort s s k cout lt
  • IDEA中Sprint MVC环境配置<mvc:default-servlet-handler/>报错

    问题描述 在配置applicationContext xml文件时 mvc default servlet handler 出现问题不能正常使用 提示未声明 但是mvc其他的都可以正常使用 比如 mvc annotation driven
  • Python中operator模块的操作

    Operator模块提供了一系列与Python自带操作一样有效的函数 例如 operator add x y 和表达式x y是等效的 那些特殊类的方法都有自己的函数名 为了方便起见 一些函数名是没有前导和后置 在接下来讨论的函数涉及对象比较
  • 计算机毕业设计选题\开题\项目\论文\答辩一套玩转毕业设计

    毕业设计选题 一 毕业设计整体流程介绍 二 毕业设计选题方式 三 毕业设计时间安排与选题技巧 1 时间安排 根据往年毕设辅导对同学们的了解毕设项目加上论文一般需要花费三到七个月左右时间 基础差的同学应尽量提前准备 2 毕设选题的时候同学们要
  • heartbeat+mysql双主复制实现高可用

    实验环境 一 搭建主主复制环境 1 1实验环境 两台机器事先都已经装好了MySQL单实例 IP 10 192 203 201 10 192 203 202 端口都是3307 二者的端口号需要保持一致 否则在最后用vip连接的时候 不能使用相
  • 判断变量是否为数组的几种方法

    1 isArray 方法 isArray 方法用于判断一个对象是否为数组 如果对象是数组返回 true 否则返回 false Array isArray arr true 2 对象原型 通过原型链判断是否具有和数组同一原型链的顶端 arr
  • Linux wget 命令下载文件示例

    inux系统中的wget是一个下载文件的工具 它用在命令行下 wget支持HTTP HTTPS和FTP协议 可以使用HTTP代理 所谓的自动下载是指 wget可以在用户退出系统的之后在后台执行 wget 非常稳定 它在带宽很窄的情况下和不稳
  • IDEA启动报错:An attempt was made to call a method that does not exist. The attempt was made from ...

    项目场景 Springboot项目 问题描述 项目无法启动 至上一次启动成功未更改代码 排除代码错误原因 具体报错如下 可能是项目未关闭完全 又重启了项目等多种原因触发这个问题 APPLICATION FAILED TO START Des
  • SourceTree系列5:贮藏和修复Bug

    1 贮藏 在切换分支时 要确保该分支已经提交 如果当前develop分支可以提交 无疑是最好的选择 但是 如果当前不能提交呢 此时我们可以使用贮藏功能 贮藏功能就是对现在的更改进行备份 注意仅仅是对更改进行备份 使用贮藏功能后 会让当前分支
  • SpringBoot 全局事务配置

    前言 传统springboot实现事务只需要在方法上添加 Transactional注解 但是需要在所有的service都加上事务 相对比较麻烦 随着项目的庞大 功能模块会随之增多 所以就需要采用AOP的方式实现全局事务处理 全局事务配置通
  • 常见的网络连接设备有哪些?

    大家好 我是你们的晴天学长 在计算级网络OSI体系结构和TCP IP模型中 网络连接设备是很重要的知识 在多个参考层中都有它的身影 请需要的小伙伴自取哦 网络互联设备 1 中继器 特点 转发所有接收到的信号 增加了网络的负担 网段上所有的节
  • .form文件_Feign完美解决服务之间传递文件、传递list,map、对象等情况

    先说下背景 前段时间有一个需求 需要将服务A生成的一个文件传递到服务B 交予服务B去做处理 最开始的时候使用的spring cloud starter openfeign 发现这一块是不支持的 然后引入了io github openfeig