The Request interface of the Fetch API represents a resource request.
You can create a new Request object using the Request.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.Request()- Creates a new
Requestobject.
Properties
Request.methodRead only- Contains the request's method (
GET,POST, etc.) Request.urlRead only- Contains the URL of the request.
Request.headersRead only- Contains the associated
Headersobject of the request. Request.contextRead only- Contains the context of the request (e.g.,
audio,image,iframe, etc.) Request.referrerRead only- Contains the referrer of the request (e.g.,
client). Request.referrerPolicyRead only- Contains the referrer policy of the request (e.g.,
no-referrer). Request.modeRead only- Contains the mode of the request (e.g.,
cors,no-cors,same-origin,navigate.) Request.credentialsRead only- Contains the credentials of the request (e.g.,
omit,same-origin). Request.redirectRead only- Contains the mode for how redirects are handled. It may be one of
follow,error, ormanual. Request.integrityRead only- Contains the subresource integrity value of the request (e.g.,
sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=). Request.cacheRead only- Contains the cache mode of the request (e.g.,
default,reload,no-cache).
Request implements Body, so it also has the following property available to it:
Body.bodyUsedRead only- Stores a
Booleanthat declares whether the body has been used in a response yet.
Methods
Request.clone()- Creates a copy of the current
Requestobject.
Request implements Body, so it also has the following methods available to it:
Body.arrayBuffer()- Returns a promise that resolves with an
ArrayBufferrepresentation of the request body. Body.blob()- Returns a promise that resolves with a
Blobrepresentation of the request body. Body.formData()- Returns a promise that resolves with a
FormDatarepresentation of the request body. Body.json()- Returns a promise that resolves with a
JSONrepresentation of the request body. Body.text()- Returns a promise that resolves with an
USVString(text) representation of the request body.
Note: The 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:
var myRequest = new Request('http://localhost/flowers.jpg');
var myURL = myRequest.url; // http://localhost/flowers.jpg
var myMethod = myRequest.method; // GET
var myCred = myRequest.credentials; // omit
You could then fetch this request by passing the Request object in as a parameter to a GlobalFetch.fetch() call, for example:
fetch(myRequest)
.then(function(response) {
return response.blob();
})
.then(function(response) {
var objectURL = URL.createObjectURL(response);
myImage.src = objectURL;
});
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:
var myRequest = new Request('http://localhost/api', {method: 'POST', body: '{"foo":"bar"}'});
var myURL = myRequest.url; // http://localhost/api
var myMethod = myRequest.method; // POST
var myCred = myRequest.credentials; // omit
var bodyUsed = myRequest.bodyUsed; // true
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 GlobalFetch.fetch() call, for example and get the response:
fetch(myRequest)
.then(function(response) {
if(response.status == 200) return response.json();
else throw new Error('Something went wrong on api server!');
})
.then(function(response) {
console.debug(response);
// ...
})
.catch(function(error) {
console.error(error);
});
Specifications
| Specification | Status | Comment |
|---|---|---|
| Fetch The definition of 'Request' in that specification. |
Living Standard | Initial definition |
Browser compatibility
| Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|---|
| Basic support |
42 |
(Yes) | 39 (39) 34[1] |
No support |
29 |
No support |
Request.integrity |
46 | ? | (Yes) | No support | 33 | No support |
Request.redirect |
46 | ? | (Yes) | ? | 33 | ? |
| Feature | Android Webview | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|---|
| Basic support | No support | 42 | (Yes) | (Yes) | No support | (Yes) | No support |
Request.integrity |
No support | 46 | ? | (Yes) | No support | 33 | No support |
Request.redirect |
No support | 46 | ? | (Yes) | No support | 33 | No support |