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.
Instance properties
Request.body
Read only
-
A ReadableStream
of the body contents.
Request.bodyUsed
Read only
-
Stores true
or false
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 is same-origin
.
Request.destination
Read only
-
A string describing 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
, or manual
.
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.signal
Read only
-
Returns the AbortSignal
associated with the request
Request.url
Read only
-
Contains the URL of the request.
Instance 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 reject with TypeError showing that the body stream has already used.
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;
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
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 |
40From 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 |
40From 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 ).
|
40From 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.0From Samsung Internet 5.0, 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 ).
|
Request |
42
40–42Only available in service workers.
|
14 |
39 |
No |
29
27–29Only available in service workers.
|
10.1 |
42
40–42Only available in service workers.
|
42
40–42Only available in service workers.
|
39 |
29
27–29Only available in service workers.
|
10.3 |
4.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 |
105 |
105 |
No |
No |
91 |
11.1 |
105 |
105 |
No |
72 |
11.3 |
20.0 |
bodyUsed |
42 |
14 |
39 |
No |
29 |
10.1 |
42 |
42 |
39 |
29 |
10.3 |
4.0 |
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 |
formData |
60 |
79 |
39 |
No |
47 |
14.1
11.1The method exists but always rejects with NotSupportedError . See bug 215671.
|
60 |
60 |
39 |
44 |
14.5
11.3The method exists but always rejects with NotSupportedError . See bug 215671.
|
8.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 |
json |
42 |
14 |
39 |
No |
29 |
10.1 |
42 |
42 |
39 |
29 |
10.3 |
4.0 |
keepalive |
66 |
15 |
No |
No |
53 |
13 |
66 |
66 |
No |
47 |
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 |
text |
42 |
14 |
39 |
No |
29 |
10.1 |
42 |
42 |
39 |
29 |
10.3 |
4.0 |
url |
40Fragment support added in Chrome 59.
|
14 |
39 |
No |
27Fragment support added in Opera 46.
|
10.1 |
40Fragment support added in Chrome 59.
|
40Fragment support added in Chrome 59.
|
39 |
27Fragment support added in Opera 46.
|
10.3 |
4.0Fragment support added in Samsung Internet 7.0.
|
See also