Body - 表示响应/请求的主体
Body mixin 是 Fetch API 中的接口,表示响应/请求的主体,允许你声明它的内容类型以及如何被处理。
Body 被 Request 和 Response 实现。它为这些对象提供了相关的 body(一个数据流(stream)),一个使用过的标志(最初为未设置),和一个MIME 类型(最初是空字节序列)。
属性
Body.body 只读
一个简单的 getter 用于暴露正文内容的 ReadableStream。
Body.bodyUsed 只读
一个 Boolean,它表示是否已经读取了正文。
方法
Body.arrayBuffer()
接收 Response 流并将其读取完成。它返回一个 promise,解析为 ArrayBuffer。
Body.blob()
接收 Response 流并将其读取完成。它返回一个 promose,解析为 Blob。
Body.formData()
接收 Response 流并将其读取完成。它返回一个 promise,解析为 FormData。
Body.json()
接收 Response 流并将其读取完成。它返回一个 promise,解析正文文本的结果为 JSON。
Body.text()
接收 Response 流并将其读取完成。它返回一个以 promise,解析为 USVString(文本)。返回值总是使用 UTF-8 解码。
实例
下面的示例使用简单的抓取(fetch)调用来抓取图像并将其显示在 <img> 标签中。你会注意到,因为我们需要显示图像,我们需要通过 Body.blob()(Response 继承了 Body) 为响应内容提供正确的 MIME 类型。
抓取图像并将其显示在 <img> 标签中
<img class="my-image" src="https://wikipedia.org/static/images/project-logos/frwiki-1.5x.png">
<script>
var myImage = document.querySelector('.my-image');
fetch('https://upload.wikimedia.org/wikipedia/commons/7/77/Delete_key1.jpg')
.then(res => res.blob())
.then(res => {
var objectURL = URL.createObjectURL(res);
myImage.src = objectURL;
});
</script>
规范
| 规范 | 状态 | 备注 |
|---|---|---|
| Fetch Body 的定义 |
现行的标准 | - |
桌面浏览器兼容性
| 特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| 基础支持 |
42 41 |
支持 |
39 34 |
不支持 | 29 | 不支持 |
body |
52 | 支持 | 不支持 | 不支持 | 39 | 未知 |
bodyUsed |
42 41 |
支持 |
39 34 |
不支持 |
29 28 |
不支持 |
arrayBuffer |
42 41 |
支持 |
39 34 |
不支持 |
29 28 |
不支持 |
blob |
42 41 |
支持 |
39 34 |
不支持 |
29 28 |
不支持 |
formData |
60 | 未知 |
39 34 |
不支持 | 47 | 不支持 |
json |
42 41 |
支持 |
39 34 |
不支持 |
29 28 |
不支持 |
text |
42 41 |
支持 |
39 34 |
不支持 |
29 28 |
不支持 |
移动浏览器兼容性
| 特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
|---|---|---|---|---|---|---|---|
| 基础支持 | 42 | 42 | 未知 | 未知 | 未知 | 支持 | 不支持 |
body |
52 | 52 | 未知 | 不支持 | 未知 | 39 | 未知 |
bodyUsed |
不支持 | 不支持 | 支持 | 不支持 | 未知 | 不支持 | 不支持 |
arrayBuffer |
不支持 | 不支持 | 支持 | 不支持 | 未知 | 不支持 | 不支持 |
blob |
不支持 | 不支持 | 支持 | 不支持 | 未知 | 不支持 | 不支持 |
formData |
60 | 60 | 未知 | 不支持 | 未知 | 47 | 不支持 |
json |
不支持 | 不支持 | 支持 | 不支持 | 未知 | 不支持 | 不支持 |
text |
不支持 | 不支持 | 支持 | 不支持 | 未知 | 不支持 | 不支持 |