Request
The Request
interface of the Fetch API represents a resource request.
You can create a new Request
object using the Request()
constructor, but you are more likely to encounter a Request
object being returned as the result of another API operation, such as a service worker FetchEvent.request
.
Constructor
Request()
-
Creates a new
Request
object.
Properties
-
Request.body
Read only -
A
ReadableStream
of the body contents. -
Request.bodyUsed
Read only -
Stores
true
orfalse
to indicate whether or not the body has been used in a request yet. -
Request.cache
Read only -
Contains the cache mode of the request (e.g.,
default
,reload
,no-cache
). -
Request.credentials
Read only -
Contains the credentials of the request (e.g.,
omit
,same-origin
,include
). The default issame-origin
. -
Request.destination
Read only -
Returns a string describing the request's destination. This is a string indicating the type of content being requested.
-
Request.headers
Read only -
Contains the associated
Headers
object of the request. -
Request.integrity
Read only -
Contains the subresource integrity value of the request (e.g.,
sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=
). -
Request.method
Read only -
Contains the request's method (
GET
,POST
, etc.) -
Request.mode
Read only -
Contains the mode of the request (e.g.,
cors
,no-cors
,same-origin
,navigate
.) -
Request.redirect
Read only -
Contains the mode for how redirects are handled. It may be one of
follow
,error
, ormanual
. -
Request.referrer
Read only -
Contains the referrer of the request (e.g.,
client
). -
Request.referrerPolicy
Read only -
Contains the referrer policy of the request (e.g.,
no-referrer
). -
Request.url
Read only -
Contains the URL of the request.
Methods
Request.arrayBuffer()
-
Returns a promise that resolves with an
ArrayBuffer
representation of the request body. Request.blob()
-
Returns a promise that resolves with a
Blob
representation of the request body. Request.clone()
-
Creates a copy of the current
Request
object. Request.formData()
-
Returns a promise that resolves with a
FormData
representation of the request body. Request.json()
-
Returns a promise that resolves with the result of parsing the request body as
JSON
. Request.text()
-
Returns a promise that resolves with a text representation of the request body.
Note: The request body functions can be run only once; subsequent calls will resolve with empty strings/ArrayBuffers.
Examples
In the following snippet, we create a new request using the Request()
constructor (for an image file in the same directory as the script), then return some property values of the request:
const request = new Request('https://www.mozilla.org/favicon.ico'); const url = request.url; const method = request.method; const credentials = request.credentials;
You could then fetch this request by passing the Request
object in as a parameter to a fetch()
call, for example:
fetch(request) .then(response => response.blob()) .then(blob => { image.src = URL.createObjectURL(blob); });
In the following snippet, we create a new request using the Request()
constructor with some initial data and body content for an api request which need a body payload:
const request = new Request('https://example.com', {method: 'POST', body: '{"foo": "bar"}'}); const url = request.url; const method = request.method; const credentials = request.credentials; const bodyUsed = request.bodyUsed;
Note: The body type can only be a Blob
, BufferSource
, FormData
, URLSearchParams
, USVString
or ReadableStream
type, so for adding a JSON object to the payload you need to stringify that object.
You could then fetch this api request by passing the Request
object in as a parameter to a fetch()
call, for example and get the response:
fetch(request) .then(response => { if (response.status === 200) { return response.json(); } else { throw new Error('Something went wrong on api server!'); } }) .then(response => { console.debug(response); // ... }).catch(error => { console.error(error); });
Specifications
Specification |
---|
Fetch Standard (Fetch) # request-class |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
Request |
42
40-42
Only available in service workers.
|
14 |
39 |
No |
29
27-29
Only available in service workers.
|
10.1 |
42
40-42
Only available in service workers.
|
42
40-42
Only available in service workers.
|
39 |
29
27-29
Only available in service workers.
|
10.3 |
4.0 |
Request |
40
From Chrome 47, default values for the
init argument's properties changed. mode defaults to same-origin (from no-cors ). credentials defaults to include (from same-origin ). redirect defaults to follow (from manual ). |
14 |
39 |
No |
27 |
10.1 |
40
From WebView 47, default values for the
init argument's properties changed. mode defaults to same-origin (from no-cors ). credentials defaults to include (from same-origin ). redirect defaults to follow (from manual ). |
40
From Chrome 47, default values for the
init argument's properties changed. mode defaults to same-origin (from no-cors ). credentials defaults to include (from same-origin ). redirect defaults to follow (from manual ). |
39 |
27 |
10.3 |
4.0
5.0
Some default values for the init parameter changed in Samsung Internet 5.0. See the Properties section for details.
|
cache |
64 |
14 |
48 |
No |
51 |
10.1 |
64 |
64 |
48 |
47 |
10.3 |
9.0 |
clone |
40 |
14 |
39 |
No |
27 |
10.1 |
40 |
40 |
39 |
27 |
10.3 |
4.0 |
credentials |
40 |
14 |
39 |
No |
27 |
10.1 |
40 |
40 |
39 |
27 |
10.3 |
4.0 |
destination |
65 |
14 |
61 |
No |
52 |
10.1 |
65 |
65 |
61 |
47 |
10.3 |
9.0 |
headers |
40 |
14 |
39 |
No |
27 |
10.1 |
40 |
40 |
39 |
27 |
10.3 |
4.0 |
integrity |
46 |
14 |
51 |
No |
33 |
10.1 |
46 |
46 |
51 |
33 |
10.3 |
5.0 |
isHistoryNavigation |
69 |
79 |
No |
No |
56 |
No |
69 |
69 |
No |
48 |
No |
10.0 |
keepalive |
66 |
15 |
No |
No |
43 |
13 |
66 |
66 |
No |
43 |
13 |
9.0 |
method |
40 |
14 |
39 |
No |
27 |
10.1 |
40 |
40 |
39 |
27 |
10.3 |
4.0 |
mode |
40 |
14 |
39 |
No |
27 |
10.1 |
40 |
40 |
39 |
27 |
10.3 |
4.0 |
redirect |
46 |
14 |
43 |
No |
33 |
10.1 |
46 |
46 |
43 |
33 |
10.3 |
5.0 |
referrer |
40 |
14 |
39 |
No |
27 |
10.1 |
40 |
40 |
39 |
27 |
10.3 |
4.0 |
referrerPolicy |
52 |
14 |
47 |
No |
39 |
10.1 |
52 |
52 |
47 |
41 |
10.3 |
7.2 |
signal |
66 |
16 |
57 |
No |
53 |
12.1 |
66 |
66 |
57 |
47 |
12.2 |
9.0 |
url |
40
Fragment support added in Chrome 59.
|
14 |
39 |
No |
27
Fragment support added in Opera 46.
|
10.1 |
40
Fragment support added in Chrome 59.
|
40
Fragment support added in Chrome 59.
|
39 |
27
Fragment support added in Opera 46.
|
10.3 |
4.0
Fragment support added in Samsung Internet 7.0.
|
arrayBuffer |
42 |
14 |
39 |
No |
29 |
10.1 |
42 |
42 |
39 |
29 |
10.3 |
4.0 |
blob |
42 |
14 |
39 |
No |
29 |
10.1 |
42 |
42 |
39 |
29 |
10.3 |
4.0 |
body |
No
See bug 688906.
|
No |
No
See bug 1387483.
|
No |
No |
11.1 |
No |
No
See bug 688906.
|
No
See bug 1387483.
|
No |
11.3 |
No |
bodyUsed |
42 |
14 |
39 |
No |
29 |
10.1 |
42 |
42 |
39 |
29 |
10.3 |
4.0 |
formData |
60 |
79 |
39 |
No |
47 |
14.1
11.1
The method exists but always rejects with
NotSupportedError . See bug 215671. |
60 |
60 |
39 |
44 |
14.5
11.3
The method exists but always rejects with
NotSupportedError . See bug 215671. |
8.0 |
json |
42 |
14 |
39 |
No |
29 |
10.1 |
42 |
42 |
39 |
29 |
10.3 |
4.0 |
text |
42 |
14 |
39 |
No |
29 |
10.1 |
42 |
42 |
39 |
29 |
10.3 |
4.0 |
See also
© 2005–2021 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Request