Request

Этот перевод не завершён. Пожалуйста, помогите перевести эту статью с английского

Интерфейс 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()
Возвращает promise ("обещание") которое выполняется, возвращая ArrayBuffer репрезентацию тела запроса.
Body.blob()
Returns a promise that resolves with a Blob representation of the request body.
Body.formData()
Returns a promise that resolves with a FormData representation of the request body.
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;

Note: The body type can only be a Blob, BufferSource, FormData, URLSearchParams, USVString or ReadableStream type, 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 WindowOrWorkerGlobalScope.fetch() call, for example and get the response:

fetch(request)
  .then(response => {
    if (response.status === 200) {
      return response.json();
    } else {
      throw new Error('Something went wrong on api server!');
    }
  })
  .then(response => {
    console.debug(response);
    // ...
  }).catch(error => {
    console.error(error);
  });

Specifications

Specification Status Comment
Fetch
Определение 'Request' в этой спецификации.
Живой стандарт Initial definition

Browser compatibility

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
Request
Экспериментальная
Chrome Полная поддержка 42
Полная поддержка 42
Полная поддержка 41
Отключено
Отключено From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка ≤18Firefox Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 28Safari Полная поддержка 10.1WebView Android Полная поддержка 42Chrome Android Полная поддержка 42
Полная поддержка 42
Полная поддержка 41
Отключено
Отключено From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
Opera Android Полная поддержка 28Safari iOS Полная поддержка 10.3Samsung Internet Android Полная поддержка 4.0
Request() constructor
Экспериментальная
Chrome Полная поддержка 41
Замечания
Полная поддержка 41
Замечания
Замечания From Chrome 47, default values for the init argument's properties changed. mode defaults to same-origin (from no-cors). credentials defaults to include (from same-origin). redirect defaults to follow (from manual).
Edge Полная поддержка 15Firefox Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari Полная поддержка 10.1WebView Android Полная поддержка 42
Замечания
Полная поддержка 42
Замечания
Замечания From WebView 47, default values for the init argument's properties changed. mode defaults to same-origin (from no-cors). credentials defaults to include (from same-origin). redirect defaults to follow (from manual).
Chrome Android Полная поддержка 41
Замечания
Полная поддержка 41
Замечания
Замечания From Chrome 47, default values for the init argument's properties changed. mode defaults to same-origin (from no-cors). credentials defaults to include (from same-origin). redirect defaults to follow (from manual).
Firefox Android Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
Opera Android Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS Полная поддержка 10.3Samsung Internet Android Полная поддержка 4.0
Полная поддержка 4.0
Полная поддержка 5.0
Замечания
Замечания Some default values for the init parameter changed in Samsung Internet 5.0. See the Properties section for details.
cache
Экспериментальная
Chrome Полная поддержка 64Edge Полная поддержка 14Firefox Полная поддержка 48IE Нет поддержки НетOpera Полная поддержка 51Safari Полная поддержка 11WebView Android Полная поддержка 64Chrome Android Полная поддержка 64Firefox Android Нет поддержки НетOpera Android Полная поддержка 47Safari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 9.0
clone
Экспериментальная
Chrome Полная поддержка 42
Полная поддержка 42
Полная поддержка 41
Отключено
Отключено From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 14Firefox Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки НетFirefox Android Нет поддержки НетOpera Android Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS Нет поддержки НетSamsung Internet Android Нет поддержки Нет
context
ЭкспериментальнаяУстаревшаяНестандартная
Chrome Нет поддержки 42 — 46Edge ? Firefox Нет поддержки 39 — 42
Замечания
Нет поддержки 39 — 42
Замечания
Замечания see bug 1188062 for more information.
IE Нет поддержки НетOpera Нет поддержки 28 — 29Safari Нет поддержки НетWebView Android Нет поддержки 42 — 46Chrome Android Нет поддержки 42 — 46Firefox Android Нет поддержки НетOpera Android Нет поддержки НетSafari iOS Нет поддержки НетSamsung Internet Android Нет поддержки 4.0 — 5.0
credentials
Экспериментальная
Chrome Полная поддержка 42
Полная поддержка 42
Полная поддержка 41
Отключено
Отключено From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 14Firefox Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari Полная поддержка 10.1WebView Android Полная поддержка 42Chrome Android Полная поддержка 42Firefox Android Полная поддержка ДаOpera Android Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS Полная поддержка 10.3Samsung Internet Android Полная поддержка 4.0
destination
Экспериментальная
Chrome Полная поддержка 65Edge Полная поддержка 14Firefox Полная поддержка 61IE Нет поддержки НетOpera Полная поддержка 52Safari Полная поддержка 10.1WebView Android Полная поддержка 65Chrome Android Полная поддержка 65Firefox Android Полная поддержка 61Opera Android Полная поддержка 47Safari iOS Полная поддержка 10.3Samsung Internet Android Полная поддержка 9.0
headers
Экспериментальная
Chrome Полная поддержка 42
Полная поддержка 42
Полная поддержка 41
Отключено
Отключено From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 14Firefox Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки 42 — 46Firefox Android Нет поддержки НетOpera Android Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS Нет поддержки НетSamsung Internet Android Нет поддержки 4.0 — 5.0
integrity
Экспериментальная
Chrome Полная поддержка 46Edge Полная поддержка 14Firefox Полная поддержка ДаIE Нет поддержки НетOpera Полная поддержка ДаSafari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Полная поддержка 46Firefox Android Нет поддержки НетOpera Android Полная поддержка ДаSafari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 5.0
keepalive
Экспериментальная
Chrome Полная поддержка 66Edge Полная поддержка 15Firefox ? IE Нет поддержки НетOpera Полная поддержка 43Safari Нет поддержки НетWebView Android Полная поддержка 66Chrome Android Полная поддержка 66Firefox Android ? Opera Android Полная поддержка 43Safari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 9.0
method
Экспериментальная
Chrome Полная поддержка 42
Полная поддержка 42
Полная поддержка 41
Отключено
Отключено From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 14Firefox Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки 42 — 46Firefox Android Нет поддержки НетOpera Android Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS Нет поддержки НетSamsung Internet Android Нет поддержки 4.0 — 5.0
mode
Экспериментальная
Chrome Полная поддержка 42Edge Полная поддержка 14Firefox Полная поддержка 39IE Нет поддержки НетOpera Полная поддержка 29Safari Нет поддержки НетWebView Android Полная поддержка 49Chrome Android Полная поддержка 49Firefox Android Нет поддержки НетOpera Android Нет поддержки НетSafari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 5.0
redirect
Экспериментальная
Chrome Полная поддержка 46Edge Полная поддержка 14Firefox Полная поддержка ДаIE Нет поддержки НетOpera Полная поддержка ДаSafari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Полная поддержка 46Firefox Android Полная поддержка ДаOpera Android Полная поддержка ДаSafari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 5.0
referrer
Экспериментальная
Chrome Полная поддержка 42
Полная поддержка 42
Полная поддержка 41
Отключено
Отключено From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge Полная поддержка 14Firefox Полная поддержка 47IE Нет поддержки НетOpera Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки НетFirefox Android Нет поддержки НетOpera Android Полная поддержка 29
Полная поддержка 29
Полная поддержка 28
Отключено
Отключено From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS Нет поддержки НетSamsung Internet Android Нет поддержки Нет
referrerPolicyChrome Полная поддержка 52Edge Полная поддержка 14Firefox Полная поддержка 52IE Нет поддержки НетOpera Полная поддержка 39Safari Полная поддержка 11.1WebView Android Полная поддержка 52Chrome Android Полная поддержка 52Firefox Android Полная поддержка 52Opera Android Полная поддержка 41Safari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 7.2
signalChrome Полная поддержка 66Edge Полная поддержка 16Firefox Полная поддержка ДаIE Нет поддержки НетOpera Полная поддержка ДаSafari ? WebView Android Полная поддержка 66Chrome Android Полная поддержка 66Firefox Android Полная поддержка ДаOpera Android Полная поддержка ДаSafari iOS ? Samsung Internet Android Полная поддержка 9.0
url
Экспериментальная
Chrome Полная поддержка 42
Замечания
Полная поддержка 42
Замечания
Замечания Fragment support added in Chrome 59.
Edge Полная поддержка 14Firefox Полная поддержка 39
Полная поддержка 39
Полная поддержка 34
Отключено
Отключено From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE Нет поддержки НетOpera Полная поддержка 29
Замечания
Полная поддержка 29
Замечания
Замечания Fragment support added in Opera 46.
Safari Полная поддержка 10.1WebView Android Полная поддержка 42
Замечания
Полная поддержка 42
Замечания
Замечания Fragment support added in Chrome 59.
Chrome Android Полная поддержка 42
Замечания
Полная поддержка 42
Замечания
Замечания Fragment support added in Chrome 59.
Firefox Android Нет поддержки НетOpera Android Полная поддержка 29
Замечания
Полная поддержка 29
Замечания
Замечания Fragment support added in Opera 46.
Safari iOS Полная поддержка 10.3Samsung Internet Android Полная поддержка 4.0
Замечания
Полная поддержка 4.0
Замечания
Замечания Fragment support added in Samsung Internet 7.0.

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Устаревшая. Не следует использовать в новых веб-сайтах
Устаревшая. Не следует использовать в новых веб-сайтах
Смотрите замечания реализации.
Смотрите замечания реализации.
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.

Читай также