Request

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

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

Конструктор

Request() (en-US)

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

Параметры

Request.cache (en-US) Только для чтения

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

Request.context (en-US) Только для чтения Устарело

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

Request.credentials (en-US) Только для чтения

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

Request.destination (en-US) Только для чтения

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

Request.headers (en-US) Только для чтения

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

Request.integrity (en-US) Только для чтения

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

Request.method (en-US) Только для чтения

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

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

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

Request.redirect (en-US) Только для чтения

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

Request.referrer (en-US) Только для чтения

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

Request.referrerPolicy (en-US) Только для чтения

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

Request.url (en-US) Только для чтения

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

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

body (en-US) Только для чтения

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

bodyUsed (en-US) Только для чтения

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

Методы

Request.clone() (en-US)

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

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

Body.arrayBuffer() (en-US)

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

Body.blob() (en-US)

Возвращает promise

Body.formData() (en-US)

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

Body.json() (en-US)

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

Body.text() (en-US)

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 WindowOrWorkerGlobalScope.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 (en-US) поэтому, для добавления объекта JSON в полезную нагрузку вам необходимо структурировать этот объект.

Вы можете получить этот запрос API, передав объект Request в качестве параметра для вызова WindowOrWorkerGlobalScope.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);
  });

Specifications

Specification
Fetch Standard
# request-class

Browser compatibility

BCD tables only load in the browser

Читай также