← Cloudflare Workers / workers / runtime-apis
Odpověď
Response rozhraní představuje HTTP odpověď a je součástí Fetch API.
Konstruktor
let response = new Response(body, init);Parametry
-
bodyvolitelné-
Objekt, který definuje text těla odpovědi. Může být
nullnebo kterýkoli z následujících typů:- BufferSource
- FormData
- ReadableStream
- URLSearchParams
- USVString
-
-
initvolitelné-
optionsobjekt, který obsahuje vlastní nastavení použitá na odpověď.
-
Platné možnosti pro options objekt zahrnuje:
cfany | null- Objekt, který obsahuje informace specifické pro Cloudflare. Tento objekt není součástí standardu Fetch API a je dostupný pouze v Cloudflare Workers. Toto pole slouží pouze pro informační účely konzumentům objektu Response a nemá žádný vliv na chování Workers.
encodeBodystring- Workers musí komprimovat data podle
content-encodinghlavičku při přenosu; pokud chcete doručovat data, která jsou už komprimovaná, musí být tato vlastnost nastavena na"manual", jinak je výchozí hodnota"automatic".
- Workers musí komprimovat data podle
headersHeaders | ByteString- Jakékoli hlavičky, které chcete přidat do odpovědi a které jsou obsaženy v
Headersobjekt nebo objektový literál typuByteString↗ dvojice klíč-hodnota.
- Jakékoli hlavičky, které chcete přidat do odpovědi a které jsou obsaženy v
statusint- Stavový kód odpovědi, například
200.
- Stavový kód odpovědi, například
statusTextstring- Stavová zpráva přiřazená ke stavovému kódu, například
OK.
- Stavová zpráva přiřazená ke stavovému kódu, například
webSocketWebSocket | null- Toto se objevuje v úspěšných odpovědích na WebSocket handshake. Pokud například klient odešle na origin požadavek na WebSocket upgrade, Worker tento požadavek zachytí a přepošle jej na origin, a origin odpoví úspěšnou odpovědí na WebSocket upgrade, Worker uvidí
response.webSocket. Tím se naváže WebSocket připojení, které je proxováno přes Worker. Data procházející WebSocket připojením není možné zachytit.
- Toto se objevuje v úspěšných odpovědích na WebSocket handshake. Pokud například klient odešle na origin požadavek na WebSocket upgrade, Worker tento požadavek zachytí a přepošle jej na origin, a origin odpoví úspěšnou odpovědí na WebSocket upgrade, Worker uvidí
Vlastnosti
response.bodyReadable Stream- Getter pro získání obsahu těla.
response.bodyUsedboolean- Booleovská hodnota udávající, zda bylo tělo odpovědi již použito.
response.headersHeaders- Hlavičky odpovědi.
response.okboolean- Booleovská hodnota udávající, zda byla odpověď úspěšná (stav v rozsahu
200-299).
- Booleovská hodnota udávající, zda byla odpověď úspěšná (stav v rozsahu
response.redirectedboolean- Booleovská hodnota udávající, zda je odpověď výsledkem přesměrování. Pokud ano, obsahuje její seznam URL více než jednu položku.
response.statusint- Stavový kód odpovědi (například
200k označení úspěchu).
- Stavový kód odpovědi (například
response.statusTextstring- Stavová zpráva odpovídající stavovému kódu (například
OKpro200).
- Stavová zpráva odpovídající stavovému kódu (například
response.urlstring- URL adresa odpovědi. Hodnota je konečná URL adresa získaná po případných přesměrováních.
response.webSocketWebSocket?- Toto se objevuje v úspěšných odpovědích na WebSocket handshake. Pokud například klient odešle na origin požadavek na WebSocket upgrade, Worker tento požadavek zachytí a přepošle jej na origin, a origin odpoví úspěšnou odpovědí na WebSocket upgrade, Worker uvidí
response.webSocket. Tím se naváže WebSocket připojení, které je proxováno přes Worker. Data procházející WebSocket připojením není možné zachytit.
- Toto se objevuje v úspěšných odpovědích na WebSocket handshake. Pokud například klient odešle na origin požadavek na WebSocket upgrade, Worker tento požadavek zachytí a přepošle jej na origin, a origin odpoví úspěšnou odpovědí na WebSocket upgrade, Worker uvidí
Metody
Metody instance
-
clone(): Response- Vytvoří klon
Responseobjekt.
- Vytvoří klon
-
json(): Response- Vytvoří novou odpověď s payloadem serializovaným do JSON.
-
redirect(): Response- Vytvoří novou odpověď s jinou URL adresou.
Další metody instance
Response implementuje Body ↗ mixin rozhraní Fetch API ↗, a proto Response instance navíc mají k dispozici následující metody:
-
arrayBuffer(): Promise<ArrayBuffer>- Přijímá
Responsestream, přečte ho až do konce a vrátí promise, který se splní sArrayBuffer↗.
- Přijímá
-
formData(): Promise<FormData>- Přijímá
Responsestream, přečte ho až do konce a vrátí promise, který se splní sFormData↗ objekt.
- Přijímá
-
json(): Promise<JSON> -
text(): Promise<USVString>- Přijímá
Responsestream, přečte ho až do konce a vrátí promise, který se splní sUSVString↗ (text).
- Přijímá
Nastavte Content-Length hlavička
Content-Length hlavička se automaticky nastaví podle toho, jaký je zdroj dat pro Response je. Jakákoli hodnota ručně nastavená kódem uživatele v Headers bude ignorován. Pokud chcete mít Content-Length hlavičky na konkrétní hodnotu se body Response musí být buď FixedLengthStream nebo hodnotu s pevnou délkou stejně jako řetězec nebo TypedArray.
A FixedLengthStream je identita TransformStream který umožňuje do sebe zapsat jen pevně daný počet bajtů.
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);Použití jakéhokoli jiného typu ReadableStream jako tělo odpovědi bude mít za následek použití chunked encoding.
Rozdíly
Workers implementace pro Response rozhraní obsahuje několik rozšíření webového standardu Response API. Tyto rozdíly jsou záměrné a poskytují další funkce specifické pro prostředí Workers runtime.
cf vlastnost
Workers přidává volitelný cf vlastnost na Response objekt. Tuto vlastnost lze nastavit v ResponseInit možnosti a slouží pouze pro informační účely konzumentům objektu Response. Chování Workers nijak neovlivňuje.
webSocket vlastnost
Workers přidává webSocket vlastnost na Response objekt pro podporu WebSocket připojení. Tato vlastnost je přítomna v úspěšných odpovědích na WebSocket handshake. Viz WebSockets s dalšími informacemi.
encodeBody možnost
Workers přidává encodeBody možnost v ResponseInit který určuje, jak se komprimuje tělo odpovědi. Nastavte tuto hodnotu na "manual" při poskytování předkomprimovaných dat, aby se zabránilo automatické kompresi.
headers vlastnost
headers vlastnost vrátí verzi specifickou pro Workers Headers objekt, který zahrnuje další metody, jako například getAll() pro Set-Cookie hlavičky. Podrobnosti najdete v Dokumentace Headers pro podrobnosti o tom, jak Workers Headers implementace se liší od webového standardu.
Související zdroje
- Příklady: úprava odpovědi
- Příklady: podmíněná odpověď
- Odkaz:
Request - Napište kód svého Workeru v syntaxe ES modulů pro optimalizovaný zážitek.