INTEGRITY Dokumentace

Získat odpověď JSON pro mobilní a jiný provoz bez prohlížeče

Pokud potřebujete řídit provoz v prostředí bez prohlížeče, například v mobilní nebo webové aplikaci, Cloudflare nabízí čekárnu kompatibilní s JSON, kterou lze využívat prostřednictvím vašich API endpointů:

  1. Když je uživatel zařazen do fronty, vracíme vlastní odpověď ve formátu JSON.
  2. Když uživatel opustí čekárnu, přepošleme požadavek na váš origin server a vrátíme odpověď z origin serveru (ať už jde o JSON, XML, HTML stránku apod.).

Chcete-li zpracovat odpověď čekárny ve formátu JSON, postupujte podle následujících kroků:

Krok 1: Povolení odpovědi JSON

Chcete-li získávat odpověď ve formátu JSON, musíte tuto možnost nejprve zapnout v nastavení čekárny.

Krok 2: Získání dat JSON

Odešlete požadavek na endpoint své čekárny s hlavičkou Accept: application/json. Mějte na paměti, že hlavička musí přesně odpovídat Accept: application/json. Pokud jde o cokoli jiného nebo to obsahuje další obsah, jako je Accept: application/json, text/html odpověď se nevrátí ve formátu JSON. Požadavek musíte opakovat každých refreshIntervalSeconds aby uživatelé mohli ve frontě postupovat.

Požadavek
curl "https://example.com/waitingroom" \
--header "Accept: application/json"
Odpověď
{
	"cfWaitingRoom": {
		"inWaitingRoom": true,
		"waitTime": 5,
		"waitTimeKnown": true,
		"waitTimeFormatted": "5 minutes",
		"queueIsFull": false,
		"queueAll": false,
		"lastUpdated": "2021-08-03T23:46:00.000Z",
		"refreshIntervalSeconds": 20
	}
}

Soubory cookie v hlavičce požadavku

Waiting Room funguje na základě souboru cookie čekárny, který určuje pozici uživatele ve frontě. Tento soubor cookie se proto aktualizuje v hlavičkách odpovědi u každého požadavku. U každého požadavku na endpoint chráněný Waiting Room musí aplikace posílat aktuální soubor cookie získaný při předchozím požadavku. To platí bez ohledu na to, zda byl uživatel zařazen do fronty, či nikoli. Pokud požadavek soubor cookie neobsahuje, čekárna jej vyhodnotí jako nového uživatele a v hlavičce odpovědi vrátí nový soubor cookie. Uživatel se tím dostane na konec fronty. Proto je při práci s čekárnou mimo prostředí prohlížeče důležité posílat soubor cookie čekárny v hlavičce požadavku a po každém požadavku jej aktualizovat.

Viz Soubory cookie Waiting Room, kde najdete další informace.

Postup ve frontě

V prostředí prohlížeče se stránka automaticky obnovuje každých refreshIntervalSeconds aby uživatel postupoval ve frontě. V prostředí bez prohlížeče, kde se využívá API čekárny s podporou JSON, se očekává, že vaše backendová služba (nebo API) rovněž obnovuje stránku, respektive odesílá požadavek na nakonfigurovaný koncový bod Waiting Room, a to každých refreshIntervalSeconds aby byl zajištěn postup uživatele ve frontě.

Toto je několik míst, kde lze odpověď ve formátu vhodném pro JSON využít (výčet není vyčerpávající):

  1. V provozu mobilní aplikace

    • Integrace proměnných Waiting Room : Vytvořte novou šablonu ve své mobilní aplikaci pro příjem odpovědi JSON. Úplný seznam těchto proměnných najdete v json_response_enabled parametr v Dokumentace API Cloudflare.
    • Povolit soubory cookie : Jak již bylo uvedeno, čekárna vyžaduje soubory cookie, a vaše mobilní aplikace bude muset podporovat soubory cookie. Pro snazší použití zvažte použití správce souborů cookie, jako je CookieJar ↗.
    • Zpracování dat JSON - Odešlete požadavek na koncový bod čekárny s Accept: application/json hlavička.
  2. Uvnitř Cloudflare Workers (nebo ve vlastní backendové službě)

    • Integrace proměnných Waiting Room : Očekávejte odpověď JSON ve svém backendovém rozhraní API. Úplný seznam těchto proměnných najdete v json_response_enabled parametr v Dokumentace API Cloudflare.

    • Zahrňte cookies do hlavičky požadavku : Jak již bylo uvedeno, čekárna vyžaduje soubory cookie, a vaše backendové rozhraní API bude muset podporovat soubory cookie. Pro snazší použití zvažte použití správce souborů cookie, jako je CookieJar ↗.

    • Povolit odpověď JSON - Přes dashboard nebo přes API.

    • Zpracování dat JSON - Odešlete požadavek na koncový bod čekárny s Accept: application/json hlavička.

      Zde je příklad použití koncového bodu čekárny uvnitř Workeru. Hlavičky požadavku obsahují potřebné accept a cookie hodnoty hlaviček, které vyžaduje API čekárny. Hlavička accept zajišťuje, že pokud je uživatel zařazen do fronty, vrátí se odpověď ve formátu vhodném pro JSON. V opačném případě, pokud je požadavek odeslán na origin server, vrátí se přesně taková odpověď, jakou origin server vrátí. V tomto příkladu se použije napevno zadaná __cfwaitingroom hodnota je vložena do pole cookie. V reálné aplikaci však očekáváme, že soubor cookie vrácený API čekárny bude použit v každém z následujících požadavků, aby byl uživatel odpovídajícím způsobem zařazen do fronty a propuštěn na origin server, až na něj přijde řada.

const waitingroomSite = "https://examples.cloudflareworkers.com/waiting-room";

export default {
	async fetch(request, env, ctx) {
		const init = {
			headers: {
				accept: "application/json",
				cookie: "__cfwaitingroom=F)J@NcRfUjXnZr4u7x!A%D*G-KaPdSgV",
			},
		};

		return fetch(waitingroomSite, init)
			.then((response) => response.json())
			.then((response) => {
				if (response.cfWaitingRoom.inWaitingRoom) {
					return Response("in waiting room", { "content-type": "text/html" });
				}
				return new Response(response);
			});
	},
};