← Cloudflare Workers / workers / runtime-apis
Ответ
Response интерфейс представляет HTTP-ответ и является частью Fetch API.
Конструктор
let response = new Response(body, init);Параметры
-
bodyнеобязательный-
Объект, определяющий текст тела ответа. Может быть
nullили любой из следующих типов:- BufferSource
- FormData
- ReadableStream
- URLSearchParams
- USVString
-
-
initнеобязательный- Одна
optionsобъект, который содержит пользовательские настройки, применяемые к ответу.
- Одна
Допустимые значения для options объект включают:
cfany | null- Объект, содержащий специфичную для Cloudflare информацию. Он не входит в стандарт Fetch API и доступен только в Cloudflare Workers. Это поле используется потребителями Response исключительно в информационных целях и никак не влияет на поведение Workers.
encodeBodyстрока- Workers обязаны сжимать данные в соответствии с
content-encodingзаголовка при передаче, чтобы отдавать уже сжатые данные, этому свойству нужно присвоить значение"manual", в противном случае по умолчанию используется"automatic".
- Workers обязаны сжимать данные в соответствии с
headersHeaders | ByteString- Любые заголовки, которые нужно добавить в ответ и которые содержатся в
Headersобъект или объектный литералByteString↗ пар «ключ-значение».
- Любые заголовки, которые нужно добавить в ответ и которые содержатся в
statusint- Код статуса ответа, например
200.
- Код статуса ответа, например
statusTextстрока- Сообщение о статусе, связанное с кодом статуса, например,
OK.
- Сообщение о статусе, связанное с кодом статуса, например,
webSocketWebSocket | null- Он присутствует в успешных ответах на подтверждение соединения WebSocket. Например, если клиент отправляет запрос на обновление до WebSocket на источник, а Worker перехватывает этот запрос, пересылает его источнику, и источник отвечает успешным подтверждением обновления до WebSocket, то Worker получает
response.webSocket. Это устанавливает WebSocket-соединение, проксируемое через Worker. Обратите внимание, что перехватывать данные, передаваемые через WebSocket-соединение, нельзя.
- Он присутствует в успешных ответах на подтверждение соединения WebSocket. Например, если клиент отправляет запрос на обновление до WebSocket на источник, а Worker перехватывает этот запрос, пересылает его источнику, и источник отвечает успешным подтверждением обновления до WebSocket, то Worker получает
Свойства
response.bodyReadable Stream- Геттер для получения содержимого тела.
response.bodyUsedboolean- Логическое значение, указывающее, было ли использовано тело в ответе.
response.headersHeaders- Заголовки ответа.
response.okboolean- Логическое значение, указывающее, был ли ответ успешным (статус в диапазоне
200-299).
- Логическое значение, указывающее, был ли ответ успешным (статус в диапазоне
response.redirectedboolean- Логическое значение, указывающее, является ли ответ результатом редиректа. Если да, его список URL содержит более одной записи.
response.statusint- Код статуса ответа (например,
200для обозначения успеха).
- Код статуса ответа (например,
response.statusTextстрока- Сообщение о статусе, соответствующее коду статуса (например,
OKдля200).
- Сообщение о статусе, соответствующее коду статуса (например,
response.urlстрока- URL ответа. Значением является итоговый URL, полученный после всех перенаправлений.
response.webSocketWebSocket?- Он присутствует в успешных ответах на подтверждение соединения WebSocket. Например, если клиент отправляет запрос на обновление до WebSocket на источник, а Worker перехватывает этот запрос, пересылает его источнику, и источник отвечает успешным подтверждением обновления до WebSocket, то Worker получает
response.webSocket. Это устанавливает WebSocket-соединение, проксируемое через Worker. Обратите внимание, что перехватывать данные, передаваемые через WebSocket-соединение, нельзя.
- Он присутствует в успешных ответах на подтверждение соединения WebSocket. Например, если клиент отправляет запрос на обновление до WebSocket на источник, а Worker перехватывает этот запрос, пересылает его источнику, и источник отвечает успешным подтверждением обновления до WebSocket, то Worker получает
Методы
Методы экземпляра
-
clone(): Response- Создает клон
Responseобъект.
- Создает клон
-
json(): Response- Создает новый ответ с полезной нагрузкой, сериализованной в JSON.
-
redirect(): Response- Создает новый ответ с другим URL.
Дополнительные методы экземпляра
Response реализует Body ↗ миксин Fetch API ↗, и поэтому Response экземпляры также имеют следующие доступные методы:
-
arrayBuffer(): Promise<ArrayBuffer>- Принимает
Responseпоток, считывает его до конца и возвращает promise, который разрешается сArrayBuffer↗.
- Принимает
-
formData(): Promise<FormData>- Принимает
Responseпоток, считывает его до конца и возвращает promise, который разрешается сFormData↗ объект.
- Принимает
-
json(): Promise<JSON> -
text(): Promise<USVString>- Принимает
Responseпоток, считывает его до конца и возвращает promise, который разрешается сUSVString↗ (текст).
- Принимает
Задайте Content-Length заголовок
Content-Length заголовок автоматически устанавливается средой выполнения на основе источника данных для Response равно этому значению. Любое значение, вручную заданное пользовательским кодом в Headers будет проигнорирован. Чтобы иметь Content-Length заголовка с указанным конкретным значением body из Response должен быть либо FixedLengthStream или значение фиксированной длины, как и строка, или TypedArray.
A FixedLengthStream представляет собой идентичность TransformStream который позволяет записать в него только фиксированное количество байтов.
const { writable, readable } = new FixedLengthStream(11);
const enc = new TextEncoder();
const writer = writable.getWriter();
writer.write(enc.encode("hello world"));
writer.end();
return new Response(readable);Использование любого другого типа ReadableStream в качестве тела ответа приведёт к использованию chunked encoding.
Различия
Реализация Workers для Response интерфейс включает несколько расширений веб-стандарта Response API. Эти отличия сделаны намеренно и обеспечивают дополнительные функции, специфичные для среды выполнения Workers.
cf свойство
Workers добавляет необязательный cf свойство в Response объект. Это свойство можно задать в ResponseInit параметры и используется в информационных целях потребителями Response. Это не влияет на поведение Workers.
webSocket свойство
Workers добавляет webSocket свойство в Response объект для поддержки WebSocket соединений. Это свойство присутствует в успешных ответах на WebSocket handshake. См. WebSockets, где это описано подробнее.
encodeBody параметр
Workers добавляет encodeBody параметр в ResponseInit который определяет способ сжатия тела ответа. Установите значение "manual" при передаче предварительно сжатых данных, чтобы предотвратить автоматическое сжатие.
headers свойство
headers свойство возвращает специфичный для Workers Headers объект, который включает дополнительные методы, такие как getAll() для Set-Cookie заголовки. См. Документация Headers подробнее о том, как Workers Headers реализация отличается от веб-стандарта.
Дополнительные материалы
- Примеры: изменение ответа
- Примеры: условный ответ
- Справка:
Request - Напишите код своего Worker на синтаксис ES modules для оптимальной работы.