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:
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:
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 в качестве параметра для вызова 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);
});
Спецификации
Specification |
---|
Fetch Standard # request-class |
Совместимость с браузерами
BCD tables only load in the browser