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" значение запроса (напр., 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 (en-US) репрезентацию тела запроса.
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.

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:

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:

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;

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

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

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 Status Comment
Fetch
Определение 'Request' в этой спецификации.
Живой стандарт Начальное
определение

Browser compatibility

BCD tables only load in the browser

Читай также