Request

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.

* Some parts of this feature may have varying levels of support.

Интерфейс Request из Fetch API является запросом ресурсов или данных.

Создать новый объект Request можно, используя конструктор Request(), однако чаще всего встречается способ возврата объекта Request , как результат операции API. Например такой как service worker FetchEvent.request.

Конструктор

Request()

Создаёт новый Request объект.

Параметры

Request.cache Только для чтения

Содержит кешированное состояние запроса (напр., default, reload, no-cache).

Request.context Только для чтения Устарело

Содержит контекст запроса (напр., audio, image, iframe, и т.д..)

Request.credentials Только для чтения

Содержит данные идентификации запроса (напр., "omit", "same-origin", "include"). Значение по умолчанию: "same-origin".

Request.destination Только для чтения

Возвращает строку из RequestDestination enum, описывая назначение запроса. Это строка, указывающая тип запрошенных данных.

Request.headers Только для чтения

Содержит назначенный Headers объект запроса (заголовки).

Request.integrity Только для чтения

Содержит "subresource integrity" значение запроса (напр., sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=).

Request.method Только для чтения

Содержит метод запроса (GET, POST, и т.д.)

Request.mode Только для чтения

Содержит режим запроса (напр., cors, no-cors, same-origin, navigate.)

Request.redirect Только для чтения

Содержит режим перенаправления. Может быть одним из следующих: follow, error, или manual.

Request.referrer Только для чтения

Содержит значение "referrer" ("ссылающийся") запроса (например., client).

Request.referrerPolicy Только для чтения

Содержит политику "ссылающегося" данного запроса (e.g., no-referrer).

Request.url Только для чтения

Содержит URL запроса.

Request имплементирует Body, таким образом наследуя следующие параметры:

body Только для чтения

Простой getter используемый для раскрытия ReadableStream "тела" (body) содержимого.

bodyUsed Только для чтения

Хранит Boolean, декларирующее использовалось ли "тело" ранее в ответе.

Методы

Request.clone()

Создаёт копию текущего Request объекта.

Request имплементирует Body, таким образом наследуя следующие параметры:

Body.arrayBuffer()

Возвращает промис, который выполняется, возвращая ArrayBuffer репрезентацию тела запроса.

Body.blob()

Возвращает promise

Body.formData()

Возвращает promise который разрешается с помощью FormData представления тела запроса.

Body.json()

Returns a promise that resolves with a JSON representation of the request body.

Body.text()

Returns a promise that resolves with an USVString (text) representation of the request body.

Примечание: 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:

js
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:

js
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:

js
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;

Примечание: Типом тела может быть только Blob, BufferSource, FormData, URLSearchParams, USVString или ReadableStream поэтому, для добавления объекта JSON в полезную нагрузку вам необходимо структурировать этот объект.

Вы можете получить этот запрос API, передав объект Request в качестве параметра для вызова fetch(), например, и получить ответ:

js
fetch(request)
  .then((response) => {
    if (response.status === 200) {
      return response.json();
    } else {
      throw new Error("Что-то пошло не так на API сервере.");
    }
  })
  .then((response) => {
    console.debug(response);
    // ...
  })
  .catch((error) => {
    console.error(error);
  });

Спецификации

Specification
Fetch
# request-class

Совместимость с браузерами

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Request
Request() constructor
cross-origin referrer stripped out and navigate mode converted to same-origin when constructor created from existing Request object.
init.attributionReporting parameter
Experimental
init.browsingTopics parameter
ExperimentalNon-standard
init.duplex parameter
Experimental
init.keepalive parameter
init.priority parameter
init.referrer parameter
Send ReadableStream in request body
Experimental
Consume ReadableStream as a response body
arrayBuffer
blob
body
bodyUsed
bytes
cache
cache.only-if-cached
clone
credentials
Default value same-origin
destination
duplex
Experimental
formData
headers
integrity
isHistoryNavigation
json
keepalive
method
mode
navigate mode
redirect
referrer
referrerPolicy
signal
targetAddressSpace
Experimental
text
url

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
In development. Supported in a pre-release version.
In development. Supported in a pre-release version.
No support
No support
Experimental. Expect behavior to change in the future.
Non-standard. Check cross-browser support before using.
See implementation notes.
Has more compatibility info.

Читай также