Spring-Cloud-Openfeign如何支持数据压缩?

news2024/11/25 22:25:56

HTTP压缩的原理

市面上主流的浏览器基本都支持gzip压缩,我们来看下服务端支持压缩的情况下,浏览器与服务端的通信过程:
在这里插入图片描述

第一步:浏览器发送Http request 给Web服务器, request头中有Accept-Encoding: gzip, deflate。(告诉服务器, 浏览器支持gzip压缩)
第二步:Web服务器接到request后, 生成原始的Response, 其中有原始的Content-Type和Content-Length。
第三步:Web服务器通过Gzip,来对Response进行编码, 编码后响应header中有Content-Type和Content-Length(压缩后的大小), 并且增加了Content-Encoding:gzip. 然后把Response发送给浏览器.
第四步:浏览器接到Response后,根据Content-Encoding:gzip来对Response 进行解码。获取到原始response后, 然后显示出网页.

让Springboot的服务端支持压缩

springboot的服务端接口默认并没有开启压缩,需要手动开启:

server:
  compression:
    enabled: true
    min-response-size: 1B
    mime-types:
      - "application/json"
      - "application/xml"

测试一下:
在这里插入图片描述

可以看出来,服务端返回了Content-Encoding:gzip,说明响应是经过服务端压缩的。

让feign调用支持压缩

1)首先feign调用的server端需要支持压缩,前面已经有讲:

server:
  compression:
    enabled: true
    min-response-size: 1B
    mime-types:
      - "application/json"
      - "application/xml"

2)feign发起请求的时候,需要在请求头中传递Accept-Encoding:gzip这个请求头,在收到Content-Encoding:gzip的响应头的时候还可以对结果做解压缩,需要做如下设置:

feign:
  compression:
    request:
      enabled: true
      mime-types:
        - "application/xml"
        - "application/json"
      min-request-size: 1
    response:
      enabled: true

测试一下:
在这里插入图片描述

完整的源码下载:https://github.com/xjs1919/enumdemo/tree/master/feign-compress-demo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/993395.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习Bootstrap 5的第九天

目录 列表组 基础的列表组 实例 活动的列表项 实例 禁用的列表项 实例 链接列表项 实例 移除列表边框 实例 带编号的列表组 实例 水平列表组 实例 多种颜色列表项 实例 多种颜色的链接列表项 实例 带徽章的列表组 实例 列表组案例 实例一 实例二 列表组…

港科夜闻|香港科技大学、香港教育大学与华东师范大学联盟,共同推动人工智能与教育未来发展...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科技大学、香港教育大学与华东师范大学联盟,共同推动人工智能与教育未来发展。三校共同签署合作备忘录,宣布成立「人工智能及教育未来联盟」。三校将各展所长,针对国家、大湾区及香…

以可视化方式解释 Go 并发 - 通道

在并发编程中,许多编程语言采用共享内存/状态模型。然而,Go 通过实现 通信顺序进程 (CSP) 区别于众多语言。在 CSP 中,一个程序由并行的进程组成,这些进程不共享状态,而是使用通道进行通信和同步它们的操作。因此&…

集创北方ICN6202 MIPIDSI转LVDS转换芯片

集创北方ICN6202 1.描述: ICN6201是一个接收MIPIDSI输入和发送LVDS输出的桥接芯片。MIPIDSI最多支持4个车道,每个车道的最大运行频率为1Gbps;总最大输入带宽为4Gbps;并且还支持MIPI定义的ULPS(超低功耗状态&#xff…

半导体与微电子洁净室检测重点-粒子计数器选择 北京中邦兴业

由于其产品的敏感性,用于微电子和半导体应用的洁净室设施需要严格的环境控制。这些洁净室还装有极其精密和昂贵的设备,例如光刻,蚀刻,清洁,掺杂和切割机。因此,清洁规范中的任何缺陷都可能影响整个生产过程…

【STC8A8K64D4开发板】第2-8讲:片内存储器

第2-8讲:片内EEPROM读写 学习目的了解STC8A8K64D4片内EEPROM的分布和特点。掌握STC8A8K64D4片内EEPROM分配以及读、写和擦除。 片内EEPROM概述 开发产品的时候,我们经常会遇到需要保存数据的应用场景,如一些重要的记录信息或软/硬件配置信息…

【云原生】Kubeadmin部署Kubernetes集群

目录 ​编辑 一、环境准备 1.2调整内核参数 二、所有节点部署docker 三、所有节点安装kubeadm,kubelet和kubectl 3.1定义kubernetes源 3.2开机自启kubelet 四、部署K8S集群 4.1查看初始化需要的镜像 4.2在 master 节点上传 v1.20.11.zip 压缩包至 /opt 目录…

Linux系统中驱动之设备树添加按键驱动方法

​大家好,每日一个简单的驱动,日久方长,对Linux驱动就越来越熟悉,也越来容易学会写驱动程序。今日进行简单的按键驱动。 一、Linux 下按键驱动原理 按键驱动和 LED 驱动原理上来讲基本都是一样的,都是操作 GPIO&…

Nmap漏洞检测实战

任务要求 环境要求 1、PC终端一个(博主是Win11电脑,读者要注意) 1、nmap安装包(7.9.2版本)下载地址 提取码:hqlk 2、VM虚拟机(一台为 Kali Linux,一台为Windows XP SP2&#xff09…

Selenium 隐藏浏览器指纹特征的几种方式

我们使用 Selenium 对网页进行爬虫时,如果不做任何处理直接进行爬取,会导致很多特征是暴露的 对一些做了反爬的网站,做了特征检测,用来阻止一些恶意爬虫 本篇文章将介绍几种常用的隐藏浏览器指纹特征的方式 1. 直接爬取 目标对…

计算机竞赛 基于深度学习的行人重识别(person reid)

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的行人重识别 该项目较为新颖,适合…

【动手学深度学习】--长短期记忆网络LSTM

文章目录 长短期记忆网络LSTM1.门控记忆元1.1输入门、忘记门、输出门1.2候选记忆元1.3记忆元1.4隐状态 2.从零实现2.1加载数据集2.2初始化模型参数2.3定义模型2.4 训练与预测 3.简洁实现 长短期记忆网络LSTM 学习视频:长短期记忆网络(LSTM)【…

DP-modeler建模

1、打开软件,新建工程,导入模型,如下: 2、建立一个立体模型,结果如下图:

jmeter安装了插件,但是添加时无插件选项

想用阶梯加压,然后需要安装插件,按照网上教程,下载插件管理器,使用插件管理器安装好jpgc后(如图一,已勾选,说明已安装), 然后重启打开jmeter,添加线程组下一级…

python知识:有效使用property装饰器

一、说明 Python是唯一有习语(idioms)的语言。这增强了它的可读性,也许还有它的美感。装饰师遵循Python的禅宗,又名“Pythonic”方式。装饰器从 Python 2.2 开始可用。PEP318增强了它们。下面是一个以初学者为中心的教程&#xff…

Jdk1.7之ConcurrentHashMap源码总结

文章目录 一、常见属性1. 初始化容量2. 加载因子3. 并发级别 二、重要方法1. 构造方法2. ConcurrentHashMap#put方法2.1 ConcurrentHashMap#put#ensureSegment2.2 ConcurrentHashMap#Segment#put2.2.1 Segment#put#scanAndLockForPut2.2.2 Segment#put#rehash 3. ConcurrentHas…

linux内核如何根据文件名索引到文件内容

https://zhuanlan.zhihu.com/p/78724124 根据文件名索引到文件内容 表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过in…

迅为RK3568开发板驱动指南第六篇-平台总线

文档教程更新至第六篇 第1篇 驱动基础篇 第2篇 字符设备基础 第3篇 并发与竞争 第4篇 高级字符设备进阶 第5篇 中断 第6篇 平台总线 未完待续,持续更新中... 视频教程更新至十一期 第一期_驱动基础 第二期_字符设备基础 第三期_并发与竞争 第四期_高级字…

解释模块化开发及其优势,并介绍常用的模块化规范。

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 模块化开发⭐ 模块化开发的优势⭐ 常用的模块化规范⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是…

公众号hanniman往期精选

目录 一、AI产品分析(10篇) 二、AI产品经理(10篇) 三、AI技术(10篇) 四、AI行业及个人成长(10篇) 一、AI产品分析 1、【重点】深度 | 关于AIGC商业化的13个非共识认知(80…