files/en-us/web/api/request/index.md
{{APIRef("Fetch API")}}{{AvailableInWorkers}}
The Request interface of the Fetch API represents a resource request.
You can create a new Request object using the {{domxref("Request.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 {{domxref("FetchEvent.request")}}.
Request object.true or false to indicate whether or not the body has been used in a request yet.default, reload, no-cache).omit, same-origin, include). The default is same-origin.sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=).keepalive setting (true or false), which indicates whether the browser will keep the associated request alive if the page that initiated it is unloaded before the request is complete.GET, POST, etc.)cors, no-cors, same-origin, navigate.)follow, error, or manual.client).no-referrer).Request object.[!NOTE] The request body functions can be run only once; subsequent calls will reject with TypeError showing that the body stream has already used.
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 {{domxref("Window/fetch", "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 needs 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 can only be a {{domxref("Blob")}}, an {{jsxref("ArrayBuffer")}}, a {{jsxref("TypedArray")}}, a {{jsxref("DataView")}}, a {{domxref("FormData")}}, a {{domxref("URLSearchParams")}}, a {{domxref("ReadableStream")}}, or a {{jsxref("String")}} object, as well as a string literal, 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 {{domxref("Window/fetch", "fetch()")}} call, for example and get the response:
fetch(request)
.then((response) => {
if (response.status !== 200) {
throw new Error("Something went wrong on API server!");
}
return response.json();
})
.then((response) => {
console.debug(response);
// …
})
.catch((error) => {
console.error(error);
});
{{Specifications}}
{{Compat}}