INTEGRITY Dokumentace

Směrování

Functions využívají směrování založené na souborech. Váš /functions struktura adresáře určuje trasy, na kterých budou vaše Functions běžet. Můžete vytvořit /functions adresář s tolika úrovněmi, kolik váš projekt potřebuje. Prohlédněte si následující adresář:

Na základě výše uvedené struktury souborů se vygenerují následující trasy. Tyto trasy mapují vzor URL adresy na /functions soubor, který se spustí, když návštěvník přejde na URL:

Cesta k souboru Trasa
/functions/index.js example.com
/functions/helloworld.js example.com/helloworld
/functions/howdyworld.js example.com/howdyworld
/functions/fruits/index.js example.com/fruits
/functions/fruits/apple.js example.com/fruits/apple
/functions/fruits/banana.js example.com/fruits/banana

Pokud se nenajde odpovídající Function, dojde k návratu na statické aktivum, pokud existuje. V opačném případě se Function vrátí na výchozí chování směrování pro statická aktiva Pages.

Dynamické trasy

Dynamické trasy umožňují porovnávat URL adresy se segmenty obsahujícími parametry. To se hodí při tvorbě dynamických aplikací. Změnou názvu souboru můžete přijímat dynamické hodnoty, které se mapují na jedinou cestu.

Jednotlivé segmenty cesty

Chcete-li vytvořit dynamickou trasu, umístěte kolem názvu souboru jednu dvojici závorek, například /users/[user].js. Tímto vytváříte zástupný symbol pro jeden segment cesty:

Cesta Shoda?
/users/nevi Ano
/users/daniel Ano
/profile/nevi Ne
/users/nevi/foobar Ne
/nevi Ne

Vícecestné segmenty

Pokud název souboru obalíte dvěma páry hranatých závorek, například /users/[[user]].js : shoda platí pro libovolnou hloubku trasy za /users/:

Cesta Shoda?
/users/nevi Ano
/users/daniel Ano
/profile/nevi Ne
/users/nevi/foobar Ano
/users/daniel/xyz/123 Ano
/nevi Ne

Příklady dynamických tras

Projděte si následující /functions/ struktura adresáře:

Následující požadavky budou odpovídat těmto souborům:

Požadavek Soubor
/foo Pokud je k dispozici statické aktivum, požadavek se na něj přesměruje.
/date /date.js
/users/daniel /users/[user].js
/users/nevi /users/[user].js
/users/special /users/special.js
/users/daniel/xyz/123 /users/[[catchall]].js

Segment(y) URL adresy, které odpovídají zástupnému symbolu ([user]) bude k dispozici v požadavku context objekt. context.params objekt lze použít k nalezení odpovídající hodnoty pro daný zástupný symbol názvu souboru.

Pro soubory, které odpovídají jedinému segmentu URL (použijte jednu dvojici závorek), se hodnoty vracejí jako řetězec:

export function onRequest(context) {
	return new Response(context.params.user);
}

Výše uvedená logika vrátí daniel pro požadavky na /users/daniel.

Pro soubory, které odpovídají více segmentům URL (použijte dvojitou dvojici závorek), se hodnoty vracejí jako pole:

export function onRequest(context) {
	return new Response(JSON.stringify(context.params.catchall));
}

Výše uvedená logika vrátí ["daniel", "xyz", "123"] pro požadavky na /users/daniel/xyz/123.

Trasy vyvolání Functions

U čistě statického projektu nabízí Pages neomezený počet požadavků zdarma. Jakmile ale do projektu Pages přidáte Functions, všechny požadavky ve výchozím nastavení spustí vaši Function. Aby vám statické požadavky zůstaly zdarma a bez omezení, vyřaďte statické trasy svého projektu vytvořením _routes.json soubor. Tento soubor se automaticky vygeneruje, pokud functions adresář je ve vašem projektu detekován při jeho publikování pomocí Pages CI nebo Wrangler.

Vytvořte _routes.json soubor

Vytvořte _routes.json soubor pro řízení toho, kdy se vaše Function spustí. Měl by být umístěn v sestavovacím adresáři vašeho projektu.

Výchozí sestavovací adresáře

Níže najdete standardní sestavovací příkazy a adresáře pro oblíbené frameworky a nástroje.

Framework/nástrojPříkaz sestaveníAdresář sestavení
React (Vite)npm run builddist
Gatsbynpx gatsby buildpublic
Next.js (statický export HTML)npx next buildout
Nuxt.jsnpm run builddist
Qwiknpm run builddist
Remixnpm run buildbuild/client
Sveltenpm run buildpublic
SvelteKitnpm run build.svelte-kit/cloudflare
Vuenpm run builddist
Analognpm run builddist/analog/public
Astronpm run builddist
Angularnpm run builddist/cloudflare
Brunchnpx brunch build --productionpublic
Docusaurusnpm run buildbuild
Elder.jsnpm run buildpublic
Eleventynpx @11ty/eleventy_site
Ember.jsnpx ember-cli builddist
GitBooknpx gitbook-cli build_book
Gridsomenpx gridsome builddist
Hugohugopublic
Jekylljekyll build_site
MkDocsmkdocs buildsite
Pelicanpelican contentoutput
React Staticreact-static builddist
Slate./deploy.shbuild
Uminpx umi builddist
VitePressnpx vitepress build.vitepress/dist
Zolazola buildpublic

Tento soubor bude obsahovat tři různé vlastnosti:

Příklad konfigurace

Níže je příklad _routes.json.

{
	"version": 1,
	"include": ["/*"],
	"exclude": []
}

Tento _routes.json zavolá vaše Functions na všech trasách.

Níže je další příklad _routes.json soubor. Jakákoli cesta uvnitř /build adresář nevyvolá Function a nebude účtován poplatek za vyvolání Functions.

{
	"version": 1,
	"include": ["/*"],
	"exclude": ["/build/*"]
}

Fail open / closed

Pokud používáte tarif Workers Free, můžete nastavit, jak se Pages zachová po vyčerpání denního limitu bezplatného tarifu pro požadavky Pages Functions. Pokud například ve svých Pages Functions provádíte ověřování uživatelů nebo jinou kritickou funkcionalitu, možná budete chtít po vyčerpání limitu svůj projekt Pages vypnout.

  1. V dashboardu Cloudflare přejděte na Workers & Pages stránce.

    Přejděte na Workers & Pages ↗
  2. Vyberte svůj projekt Pages.

  3. Přejděte na Nastavení > Runtime > Fail open / closed.

"Fail open" znamená, že se statické soubory budou obsluhovat i nadále, i když by za normálních okolností nejprve proběhly Pages Functions. "Fail closed" znamená, že se místo statických souborů vrátí chybová stránka.

Denní limit požadavků pro Pages Functions lze zcela odstranit přechodem na Workers Standard.

Limity

Trasy vyvolání Functions mají následující limity: