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