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

打印 上一主题 下一主题

主题 982|帖子 982|积分 2946

在前端开辟的广阔天地中,Axios 犹如一颗璀璨的明星,为我们与服务器之间的通信搭建起坚实的桥梁。其中,responseType 属性更是赋予了我们机动处置惩罚服务器响应的强大本领。
一、Axios 的 responseType 属性值及示例

1.arraybuffer



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



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



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



  • 这是 Axios 的默认 responseType 值。它会将响应体解析为一个 JSON 对象,方便我们在前端举行数据处置惩罚。
  • 示例:
  1. axios.get('/your-api-url').then(response => {
  2.   const jsonData = response.data;
  3.   console.log(jsonData);
  4. });
复制代码
5.text



  • 设置为这个值时,Axios 会将响应体作为一个字符串返回,适用于处置惩罚纯文本数据。
  • 示例代码:
  1. axios.get('/your-api-url', {
  2.   responseType: 'text'
  3. }).then(response => {
  4.   const text = response.data;
  5.   console.log(text);
  6. });
复制代码
二、Blob 与 ArrayBuffer 的解析

1.Blob 的解析



  • Blob(Binary Large Object)是一种用于存储二进制数据的对象。当我们通过 Axios 的 responseType 设置为 'blob' 得到 Blob 对象后,可以使用多种方法举行解析。
  • 比方:
  1. axios.get('/your-api-url', {
  2.   responseType: 'blob'
  3. }).then(response => {
  4.   const blob = response.data;
  5.   const reader = new FileReader();
  6.   reader.onload = function() {
  7.     const result = reader.result;
  8.     console.log(result);
  9.   };
  10.   reader.readAsText(blob);
  11. });
复制代码
别的,FileReader 对象还提供了 readAsDataURL、readAsArrayBuffer 等方法,可以根据详细需求选择符合的解析方式。
2. ArrayBuffer 的解析



  • ArrayBuffer 是用于表示固定长度的二进制数据缓冲区的对象。当 responseType 为 'arraybuffer' 时,我们可以通过创建不同的 TypedArray 对象来解析 ArrayBuffer。
  • 示比方下:
  1. axios.get('/your-api-url', {
  2.   responseType: 'arraybuffer'
  3. }).then(response => {
  4.   const arrayBuffer = response.data;
  5.   const view = new Uint8Array(arrayBuffer);
  6.   for (let i = 0; i < view.length; i++) {
  7.     console.log(view[i]);
  8.   }
  9. });
复制代码
除了 Uint8Array,还可以使用 Int8Array、Uint16Array、Int16Array 等 TypedArray 对象举行解析。
三、总结

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

干翻全岛蛙蛙

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表