Połącz Cloud Functions z parametrem Firebase Hosting, aby wygenerować i wyświetlać dynamiczne treści lub tworzenie interfejsów REST API jako mikroserwisów.
Cloud Functions for Firebase umożliwia automatyczne uruchamianie backendu w odpowiedzi na żądania HTTPS. Twój kod jest przechowywany w chmurze Google, działa w środowisku zarządzanym. Nie musisz zarządzać własnym kontem ani je skalować serwerów.
Przykładowe przypadki użycia i przykłady dotyczące platformy Cloud Functions zintegrowanej z Firebase Hosting, odwiedź Omówienie technologii bezserwerowych.
Połącz aplikację Cloud Functions z siecią Firebase Hosting
W tej sekcji znajdziesz przykładowy przewodnik łączenia funkcji Firebase Hosting
Pamiętaj, że aby poprawić wydajność wyświetlania treści dynamicznej, możesz: (opcjonalnie) dostosuj ustawienia pamięci podręcznej.
Krok 1. Skonfiguruj usługę Cloud Functions
Sprawdź, czy masz najnowszą wersję interfejsu wiersza poleceń Firebase i czy został zainicjowany algorytm Firebase Hosting.
Szczegółowe instrukcje instalowania i inicjowania interfejsu wiersza poleceń Hosting, zobacz Przewodnik dla początkujących – Hosting.
Upewnij się, że masz skonfigurowane Cloud Functions:
Jeśli masz już skonfigurowaną usługę Cloud Functions, możesz przejść do Krok 2. Utwórz i przetestuj funkcję HTTPS.
Jeśli nie masz skonfigurowanej usługi Cloud Functions:
Zainicjuj Cloud Functions, uruchamiając to polecenie z katalog główny projektu:
firebase init functions
Gdy pojawi się odpowiedni komunikat, wybierz JavaScript (ten zwykły przewodnik korzysta z języka JS).
Sprawdź, czy w projekcie lokalnym masz katalog
functions
(utworzonego przed chwilą uruchomionego polecenia Firebase). Ten Katalogfunctions
to miejsce, w którym znajduje się kod usługi Cloud Functions.
Krok 2. Utwórz i przetestuj funkcję HTTPS w witrynie Hosting.
Otwórz
/functions/index.js
w ulubionym edytorze.Zastąp zawartość pliku poniższym kodem.
Ten kod tworzy funkcję HTTPS (o nazwie
bigben
), która odpowiada na żądania HTTPSBONG
dla każdej godziny dnia, tak jak zegar.const functions = require('firebase-functions/v1'); exports.bigben = functions.https.onRequest((req, res) => { const hours = (new Date().getHours() % 12) + 1 // London is UTC + 1hr; res.status(200).send(`<!doctype html> <head> <title>Time</title> </head> <body> ${'BONG '.repeat(hours)} </body> </html>`); });
Testuj funkcje lokalnie za pomocą funkcji Firebase Local Emulator Suite.
W katalogu głównym projektu lokalnego uruchom to polecenie polecenie:
firebase emulators:start
Uzyskaj dostęp do funkcji za pomocą lokalnego adresu URL zwróconego przez interfejs wiersza poleceń, na przykład:
.http://localhost:5001/PROJECT_ID/us-central1/bigben
Zapoznaj się z dokumentacją usługi Cloud Functions , aby dowiedzieć się więcej o żądaniach HTTPS.
W następnym kroku opisujemy, jak uzyskać dostęp do tej funkcji HTTPS z poziomu Firebase Hosting, aby mógł generować treści dynamiczne dla Witryna hostowana w Firebase.
Krok 3. Przekierowywanie żądań HTTPS do funkcji
Na
reguły przepisywania, możesz kierować żądania
pasujące do określonych wzorców w jednym miejscu docelowym. Poniższe kroki pokazują
jak przekierować wszystkie żądania ze ścieżki ../bigben
na: Hosting
do uruchomienia funkcji bigben
.
Otwórz plik
firebase.json
.Dodaj w sekcji
hosting
tę konfiguracjęrewrite
:"hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "/bigben", "function": { "functionId": "bigben", "region": "us-central1" // optional (see note below) "pinTag": true // optional (see note below) } } ] }
Sprawdź, czy przekierowanie działa zgodnie z oczekiwaniami, wykonując test ponownie z użyciem parametru Emulatory Firebase.
W korzenia katalogu projektu lokalnego uruchom to polecenie:
firebase emulators:start
Otwórz adres URL Twojej witryny hostowanej lokalnie zwrócony przez interfejs wiersza poleceń (zwykle
localhost:5000
), ale dodaj do niegobigben
, np.:http://localhost:5000/bigben
powtarzać funkcję i jej funkcjonalność w swojej witrynie. Użyj za pomocą emulatorów Firebase, które pozwalają przetestować te iteracje.
Aby uzyskać najlepszą wydajność, umieść swoje funkcje w pobliżu usługi Hosting, wybierając jeden z tych regionów:
us-west1
us-central1
us-east1
europe-west1
asia-east1
Otwórz stronę konfiguracji usługi Hosting dla: dowiedz się więcej o regułach przepisywania. Możesz też dowiedzieć się więcej o kolejności priorytetów odpowiedzi w różnych konfiguracjach Hosting.
Pamiętaj, że aby poprawić wydajność wyświetlania treści dynamicznej, możesz: (opcjonalnie) dostosuj ustawienia pamięci podręcznej.
Krok 4. Wdróż funkcję
Gdy funkcja zacznie działać prawidłowo w emulatorze, możesz ją wdrożyć, przetestować i uruchomić z rzeczywistymi zasobami projektu. To jest to dobry moment, by ustawić opcje środowiska wykonawczego na kontrolowanie zachowania skalowania dla funkcji działających w środowisku produkcyjnym.
Wdróż funkcję oraz treść i konfigurację Hosting w , uruchamiając poniższe polecenie w katalogu głównym projektu lokalnego: katalogu:
firebase deploy --only functions,hosting
Aktywna witryna i funkcje możesz uzyskać pod tymi adresami URL:
Twoje subdomeny Firebase:
PROJECT_ID.web.app/bigben
iPROJECT_ID.firebaseapp.com/bigben
Wszystkie połączone domeny niestandardowe:
CUSTOM_DOMAIN/bigben
Używanie platformy internetowej
W Cloud Functions możesz używać frameworków internetowych, takich jak Express.js, aby wyświetlać dynamiczną zawartość aplikacji i łatwiej pisać złożone aplikacje internetowe.
W tej sekcji znajdziesz szczegółowy przykład użycia pliku Express.js z Firebase Hosting i Cloud Functions.
Zainstaluj plik Express.js w projekcie lokalnym, uruchamiając następujące polecenie z katalogu
functions
:npm install express --save
Otwórz plik
/functions/index.js
, a potem zaimportuj i inicjuj Express.js:const functions = require('firebase-functions/v1'); const express = require('express'); const app = express();
Dodaj te 2 punkty końcowe:
Dodaj pierwszy punkt końcowy, aby udostępniać indeks naszej witryny pod adresem
/
.app.get('/', (req, res) => { const date = new Date(); const hours = (date.getHours() % 12) + 1; // London is UTC + 1hr; res.send(` <!doctype html> <head> <title>Time</title> <link rel="stylesheet" href="/style.css"> <script src="/script.js"></script> </head> <body> <p>In London, the clock strikes: <span id="bongs">${'BONG '.repeat(hours)}</span></p> <button onClick="refresh(this)">Refresh</button> </body> </html>`); });
I kolejny punkt końcowy do zwrócenia liczby
BONG
jako interfejsu API w formacie JSON w formacie „/api
”:app.get('/api', (req, res) => { const date = new Date(); const hours = (date.getHours() % 12) + 1; // London is UTC + 1hr; res.json({bongs: 'BONG '.repeat(hours)}); });
Wyeksportuj aplikację Express.js jako funkcję HTTPS:
exports.app = functions.https.onRequest(app);
W pliku
firebase.json
skieruj wszystkie żądania do funkcjiapp
. Dzięki temu skryptowi Express.js może obsługiwać inną ścieżkę podrzędną skonfigurowane (w tym przykładzie są to/
i/api
).{ "hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "**", "function": "app" } ] } }
Dodaj oprogramowanie pośredniczące
Używając kodu Express.js, możesz dodać kod Oprogramowanie pośredniczące Express.js w typowy sposób. Możesz na przykład włączyć CORS w naszych punktach końcowych.
Zainstaluj oprogramowanie pośredniczące
cors
, uruchamiając to polecenie:npm install --save cors
Otwórz plik
/functions/index.js
, a następnie dodajcors
do aplikacji Express.js np.:const cors = require('cors')({origin: true}); app.use(cors);
Zapoznaj się z dokumentacją usługi Cloud Functions .
Dalsze kroki
Skonfiguruj buforowanie treści dynamicznej w globalnej sieci CDN.
Interakcja z innymi usługami Firebase za pomocą Pakiet SDK Firebase Admin.
Sprawdź ceny oraz limity i ograniczenia usługi Cloud Functions.