Request

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

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

Конструктор

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

Параметры

Request.cache Только для чтения
Содержит кэшированное состояние запроса (напр., default, reload, no-cache).
Request.context Только для чтения   Это устаревшее API больше не должно использоваться, но оно по-прежнему может работать.
Содержит контекст запроса (напр., 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()
Возвращает promise ("обещание") которое выполняется, возвращая 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.

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, FormData, URLSearchParams, USVString или ReadableStream поэтому, для добавления объекта 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

Читай также