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

Axios 的 responseType 属性详解及 Blob 与 ArrayBuffer 解析

在前端开发的广阔天地中,Axios 犹如一颗璀璨的明星,为我们与服务器之间的通信搭建起坚实的桥梁。其中,responseType 属性更是赋予了我们灵活处理服务器响应的强大能力。

一、Axios 的 responseType 属性值及示例

1.arraybuffer

  • 当我们将 responseType 设置为这个值时,Axios 会把服务器的响应体作为一个 ArrayBuffer 对象返回。这在处理二进制数据时非常有用。
  • 示例代码如下:
axios.get('/your-api-url', {responseType: 'arraybuffer'
}).then(response => {const arrayBuffer = response.data;const view = new Uint8Array(arrayBuffer);for (let i = 0; i < view.length; i++) {console.log(view[i]);}
});

2.blob

  • 此设置会使 Axios 将响应体作为一个 Blob 对象返回。Blob 对象可以存储各种类型的二进制数据。
  • 示例:
axios.get('/your-api-url', {responseType: 'blob'
}).then(response => {const blob = response.data;const reader = new FileReader();reader.onload = function() {const result = reader.result;console.log(result);};reader.readAsText(blob);
});

3.document

  • 选择这个值,Axios 会将响应体作为一个 HTML 文档或 XML 文档对象返回,为处理特定类型的文档数据提供了便利。
  • 示例代码:
axios.get('/your-api-url', {responseType: 'document'
}).then(response => {const document = response.data;console.log(document.body.innerHTML);
});

4.json

  • 这是 Axios 的默认 responseType 值。它会将响应体解析为一个 JSON 对象,方便我们在前端进行数据处理。
  • 示例:
axios.get('/your-api-url').then(response => {const jsonData = response.data;console.log(jsonData);
});

5.text

  • 设置为这个值时,Axios 会将响应体作为一个字符串返回,适用于处理纯文本数据。
  • 示例代码:
axios.get('/your-api-url', {responseType: 'text'
}).then(response => {const text = response.data;console.log(text);
});

二、Blob 与 ArrayBuffer 的解析

1.Blob 的解析

  • Blob(Binary Large Object)是一种用于存储二进制数据的对象。当我们通过 Axios 的 responseType 设置为 'blob' 获得 Blob 对象后,可以使用多种方法进行解析。
  • 例如:
axios.get('/your-api-url', {responseType: 'blob'
}).then(response => {const blob = response.data;const reader = new FileReader();reader.onload = function() {const result = reader.result;console.log(result);};reader.readAsText(blob);
});

此外,FileReader 对象还提供了 readAsDataURLreadAsArrayBuffer 等方法,可以根据具体需求选择合适的解析方式。

2. ArrayBuffer 的解析

  • ArrayBuffer 是用于表示固定长度的二进制数据缓冲区的对象。当 responseType 为 'arraybuffer' 时,我们可以通过创建不同的 TypedArray 对象来解析 ArrayBuffer。
  • 示例如下:
axios.get('/your-api-url', {responseType: 'arraybuffer'
}).then(response => {const arrayBuffer = response.data;const view = new Uint8Array(arrayBuffer);for (let i = 0; i < view.length; i++) {console.log(view[i]);}
});

除了 Uint8Array,还可以使用 Int8ArrayUint16ArrayInt16Array 等 TypedArray 对象进行解析。

三、总结

Axios 的 responseType 属性为我们提供了丰富的选择,使我们能够根据服务器返回的数据类型灵活地处理响应。在处理二进制数据时,'blob' 和 'arraybuffer' 这两个 responseType 值以及相应的解析方法,为我们开辟了更多的数据处理途径。通过合理运用这些特性,我们可以在前端开发中更加高效地处理服务器响应,为用户带来更好的体验。

相关文章:

Axios 的 responseType 属性详解及 Blob 与 ArrayBuffer 解析

在前端开发的广阔天地中&#xff0c;Axios 犹如一颗璀璨的明星&#xff0c;为我们与服务器之间的通信搭建起坚实的桥梁。其中&#xff0c;responseType 属性更是赋予了我们灵活处理服务器响应的强大能力。 一、Axios 的 responseType 属性值及示例 1.arraybuffer 当我们将 r…...

redis集群介绍

1. 节点&#xff08;Node&#xff09;&#xff1a; • Redis集群中的单个Redis服务器实例。每个节点都运行一个Redis服务器进程&#xff0c;并维护自己的数据。 2. 分片&#xff08;Sharding&#xff09;&#xff1a; • 将数据集分割成多个部分&#xff0c;并分布到不同的节点…...

JDK中常用的包有哪些?

1.java.lang 描述&#xff1a;包含Java语言的核心类&#xff0c;不需要显式导入。 常用类&#xff1a;Object、String、Math、System、Thread、Exception等。 2.java.util 描述&#xff1a;提供了集合框架、日期和时间功能、随机数生成、扫描和格式化等实用工具类。 常用类…...

校园官网练习---web

HTML&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>西安工商学院</title><…...

MySQL中指定字段的某个值排在前面

一 需求 如果我们想讲表中指定的字段的某一个值排序在最前面应该如何处理&#xff1f; 二 实现方式 方法 1、使用<>&#xff0c;xml中使用<![CDATA[跳过解析的特殊符号]]>或者<&#xff08;小于符号&#xff09;>&#xff08;大于符号&#xff09; ORDER …...

【51单片机】I2C总线详解 + AT24C02

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 AT24C02介绍存储器 I2C总线介绍I2C时序结构数据帧AT24C02数据帧 编程实例 —— 按键控制数据大小&存储器写入读出 AT24C02介绍 …...

直接插入排序法

任务描述 本关任务&#xff1a;要求编写程序实现直接插入排序的功能。 相关知识 直接插入排序&#xff0c;是指将无序序列中的各元素依次插入到已经有序的数组中。 假设数组中前 i-1 元素已经有序&#xff0c;现在要将线性表中第 i 个元素插入到前面的有序子表中&#xff0c;…...

mysql中InnoDB索引与MyISAM索引

mysql索引 InnoDB 索引存储 主键索引&#xff08;聚簇索引&#xff09; 定义&#xff1a;主键索引是 InnoDB 存储引擎的聚簇索引&#xff0c;它决定了表中数据的物理存储顺序。每个 InnoDB 表都有一个且仅有一个聚簇索引。存储&#xff1a;主键索引的叶子节点直接包含表的数…...

Redis如何保证数据不丢失(可靠性)

本文主要以学习为主&#xff0c;详细参考&#xff1a;微信公众平台 Redis 保证数据不丢失的主要手段有两个&#xff1a; 持久化 多机部署 我们分别来看它们两的具体实现细节。 1.Redis 持久化 持久化是指将数据从内存中存储到持久化存储介质中&#xff08;如硬盘&#xf…...

【计网】物理层学习笔记

【计网】物理层 物理层概述 物理层要实现的功能 在各种传输媒体上传输比特0和1&#xff0c;进而为上面的数据链路层提供透明传输比特流的作用。 物理层接口特性 物理层之下的传输媒体 传输媒体是计网设备之间的物理通路&#xff0c;也称为传输介质。 传输媒体并不包含在…...

vue链接跳转

在 Vue 3 的组合式 API 中&#xff0c;你可以使用 ref 和 setup 函数来实现外部链接跳转功能。 方法 1&#xff1a;使用 click 和 window.open&#xff08;新标签页跳转&#xff09; 这种方式在点击时会打开一个新标签页并跳转到外部链接。 <menu-item value"item2&…...

IP地址是电脑自带的吗?是根据什么而决定的‌

IP地址并非电脑自带&#xff0c;而是由网络运营商或网络服务提供商通过特定的协议和机制进行分配和管理的。要深入理解IP地址的来源和决定因素&#xff0c;我们需要从IP地址的基本概念、分配方式以及影响分配的因素等多个方面进行探讨。 IP地址&#xff0c;即互联网协议地址&am…...

JavaFX史上最全教程 - Shape - JavaFX矩形椭圆

avaFX Shape类定义了常见的形状&#xff0c;如线&#xff0c;矩形&#xff0c;圆&#xff0c;Arc&#xff0c;CubicCurve&#xff0c;Ellipse和QuadCurve。 在场景图上绘制矩形需要宽度&#xff0c;高度和左上角的&#xff08;x&#xff0c;y&#xff09;位置。 要在JavaFX中…...

SpringBoot实现的企业资产管理系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...

python-读写Excel:openpyxl-(4)下拉选项设置

使用openpyxl库的DataValidation对象方法可添加下拉选择列表。 DataValidation参数说明&#xff1a; type&#xff1a; 数据类型("whole", "decimal", "list", "date", "time", "textLength", "custom"…...

【C++】详解RAII思想与智能指针

&#x1f308; 个人主页&#xff1a;谁在夜里看海. &#x1f525; 个人专栏&#xff1a;《C系列》《Linux系列》 ⛰️ 丢掉幻想&#xff0c;准备斗争 目录 引言 内存泄漏 内存泄漏的危害 内存泄漏的处理 一、RAII思想 二、智能指针 1.auto_ptr 实现原理 模拟实现 弊端…...

Qt 环境实现视频和音频播放

在这个示例中&#xff0c;我们将使用 FFmpeg 进行视频和音频的解码&#xff0c;并使用 Qt 的界面进行显示和控制。为了实现音频和视频的解码以及同步显示&#xff0c;我们需要使用 FFmpeg 的解码库进行视频和音频解码&#xff0c;使用 Qt 的 QLabel 显示解码后的视频帧&#xf…...

【人工智能训练师】7 大数据处理与应用

大数据处理与应用&#xff08;Hive技术&#xff09;(0/100分) 1.本地开发工具连接Hadoop集群 1.本次环境版本为Hadoop2.7.7&#xff0c;对应eclips插件存放于云主机master:/usr/package277/中。 2.本机映射名为hadoop000&#xff0c;云主机Hadoop/Hive的hosts文件中IP需要修改…...

nginx配置文件介绍及示例

一、nginx配置文件一共有main&#xff0c;http&#xff0c;server&#xff0c;location&#xff0c;upstream&#xff0c;stream&#xff0c;events7个块。 step 1: main 块 作用&#xff1a;main 块是 Nginx 配置文件的顶级块&#xff0c;用于设置一些全局的参数和配置&…...

如何在算家云搭建YOLOv5(物体检测)

一、YOLOv5简介 YOLOv5 模型是一种以实时物体检测闻名的计算机视觉模型&#xff0c;由 Ultralytics 开发&#xff0c;并于 2020 年年中发布。它是 YOLO 系列的升级版&#xff0c;继承了 YOLO 系列以实时物体检测能力而著称的特点。 二、模型搭建流程 1.选择模型实例 在应用…...

SUPER COLORIZER 构建智能Agent:自动识别图像内容并匹配历史色彩方案

SUPER COLORIZER 构建智能Agent&#xff1a;自动识别图像内容并匹配历史色彩方案 你有没有想过&#xff0c;给一张黑白老照片上色&#xff0c;如果能像专业设计师一样&#xff0c;看一眼就知道该用什么色调&#xff1f;比如一张森林的照片&#xff0c;系统能自动联想到“秋日暖…...

【STM32HAL库实战】DAC精准输出0-3.3V可调电压与ADC自检闭环

1. DAC与ADC的基础原理 在嵌入式系统中&#xff0c;数字信号和模拟信号的相互转换是常见需求。STM32微控制器内置了DAC&#xff08;数字模拟转换器&#xff09;和ADC&#xff08;模拟数字转换器&#xff09;模块&#xff0c;让我们能够轻松实现这种转换。 DAC的作用是将数字量转…...

从零构建:基于FreeRTOS与LVGL的低功耗智能手表实战指南

1. 项目背景与核心目标 第一次接触智能手表开发是在三年前&#xff0c;当时市面上开源的方案要么功能简陋&#xff0c;要么功耗高得离谱。作为一个嵌入式老鸟&#xff0c;我决定自己动手搞一套真正可用的低功耗方案。经过多次迭代&#xff0c;最终选择了FreeRTOSLVGL这个黄金组…...

丹青识画系统Prompt工程指南:如何用文本描述引导更精准的风格鉴定

丹青识画系统Prompt工程指南&#xff1a;如何用文本描述引导更精准的风格鉴定 丹青识画这类AI系统&#xff0c;很多人以为它就是个“看图说话”的工具&#xff0c;把图片丢进去&#xff0c;它告诉你这是什么风格、哪个流派。这确实没错&#xff0c;但如果你只这么用&#xff0…...

OWL ADVENTURE助力在线教育:AI自动批改绘图作业实践

OWL ADVENTURE助力在线教育&#xff1a;AI自动批改绘图作业实践 想象一下&#xff0c;一位在线美术老师&#xff0c;面对上百份刚刚提交的手绘作业。他需要一份份打开&#xff0c;仔细查看学生的构图、线条、比例&#xff0c;然后写下针对性的评语。这个过程不仅耗时费力&…...

如何高效使用NumPy结构化数组:处理复杂数据格式的终极指南

如何高效使用NumPy结构化数组&#xff1a;处理复杂数据格式的终极指南 【免费下载链接】numpy numpy/numpy: NumPy 是一个用于 Python 的数值计算库&#xff0c;提供了多种数学函数和工具&#xff0c;可以用于数值计算和科学计算&#xff0c;支持多种数学函数和工具&#xff0c…...

降AIGC哪家强?2026零成本保姆级教程:DeepSeek/Kimi/豆包专属降重指令实测与差异解析

很多时候大学生写论文逻辑太严谨、话术太规范&#xff0c;反而会导致AI率过高&#xff0c;且一旦AI率过高&#xff0c;轻则退回重改&#xff0c;重则取消答辩资格&#xff0c;这后果谁都担不起。 为了帮大家有效降低aigc率&#xff0c;这周我专门针对目前市面上最主流的三款大…...

2026-03-27:替换至多一个元素后最长非递减子数组。用go语言,给定一个整数数组 nums。 你最多只能选择其中一个位置的元素,把它改成任意整数(也可以选择不改)。 在允许这种“最多一次改动”的

2026-03-27&#xff1a;替换至多一个元素后最长非递减子数组。用go语言&#xff0c;给定一个整数数组 nums。 你最多只能选择其中一个位置的元素&#xff0c;把它改成任意整数&#xff08;也可以选择不改&#xff09;。 在允许这种“最多一次改动”的情况下&#xff0c;求能得到…...

爆款AI写教材工具登场!一键生成低查重教材,轻松开启编写之旅

编写教材的困境与AI的解决方案 在编写教材时&#xff0c;如何准确地满足多样化的需求呢&#xff1f;不同年级的学生在认知能力上存在显著差异&#xff0c;教材内容若过于深奥或过于简单都无法达到效果&#xff1b;而课堂教学和自主学习等不同的环境对教材的要求各不相同&#…...

多层PCB结构与设计核心技术解析

多层PCB内部结构解析与设计指南1. 多层PCB技术概述1.1 多层PCB的基本概念现代电子设备对电路板的要求越来越高&#xff0c;多层PCB已成为复杂电子系统的标准配置。与单层或双层PCB相比&#xff0c;多层PCB通过在绝缘基材上叠加多个导电层&#xff0c;实现了更高的布线密度和更优…...