The Body
mixin of the Fetch API represents the body of the response/request, allowing you to declare what its content type is and how it should be handled.
Body
is implemented by both Request
and Response
. This provides these objects with an associated body (a stream), a used flag (initially unset), and a MIME type (initially the empty byte sequence).
Properties
Body.body
Read only- A simple getter used to expose a
ReadableStream
of the body contents. Body.bodyUsed
Read only- A
Boolean
that indicates whether the body has been read.
Methods
Body.arrayBuffer()
- Takes a
Response
stream and reads it to completion. It returns a promise that resolves with anArrayBuffer
. Body.blob()
- Takes a
Response
stream and reads it to completion. It returns a promise that resolves with aBlob
. Body.formData()
- Takes a
Response
stream and reads it to completion. It returns a promise that resolves with aFormData
object. Body.json()
- Takes a
Response
stream and reads it to completion. It returns a promise that resolves with aJSON
object. Body.text()
- Takes a
Response
stream and reads it to completion. It returns a promise that resolves with aUSVString
(text). The response is always decoded using UTF-8.
Examples
The example below uses a simple fetch call to grab an image and display it in an <img>
tag. You'll notice that since we are requesting an image, we need to run Body.blob()
(Response
implements body) to give the response its correct MIME type.
HTML Content
<img class="my-image" src="https://wikipedia.org/static/images/project-logos/frwiki-1.5x.png">
JS Content
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; });
Specifications
Specification | Status | Comment |
---|---|---|
Fetch The definition of 'Body' in that specification. |
Living Standard |
Browser compatibility
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 42 |
(Yes) | 39 (39) [1] | No support |
29 |
No support |
body as a ReadableStream |
43 | ? | No support[2] | No support | 30 | No support |
formData() method |
60 | ? | ? | No support | 47 | No support |
Feature | Android Webview | Chrome for Android | Edge | Firefox Mobile (Gecko) | Firefox OS (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|---|
Basic support | 42 | 42 | (Yes) | No support | No support | No support |
29 |
No support |
body as a ReadableStream |
43 | 43 | ? | No support[2] | No support | No support |
30 |
No support |
formData() method |
60 | 60 | ? | No support | No support | No support |
47 |
No support |
[1] Behind a preference starting with version 34.
[2] Readable streams are currently enabled in Firefox, but hidden behind the dom.streams.enabled
and javascript.options.streams
prefs.
See also