Cloud Functions oluşturmak ve yayınlamak için Firebase Hosting ile eşleştirin veya REST API'lerini mikro hizmet olarak oluşturun.
Cloud Functions for Firebase, arka ucu otomatik olarak çalıştırmanızı sağlar HTTPS isteklerine yanıt olarak kodlayın. Kodunuz Google'ın bulutunda saklanır ve yönetilen bir ortamda çalışır. Kendi reklamlarınızı yönetmeniz ve ölçeklendirmeniz sunucu.
Örneğin, Cloud Functions için kullanım alanları ve örnekler, Firebase Hosting için sunucusuz genel bakış.
Cloud Functions ile Firebase Hosting arasında bağlantı kurun
Bu bölümde, bir fonksiyonu Firebase Hosting
Dinamik içerik sunma performansını iyileştirmek için şunları yapabilirsiniz: İsterseniz önbellek ayarlarınızı düzenleyebilirsiniz.
1. Adım: Cloud Functions'yi ayarlayın
Firebase KSA'nın en son sürümüne sahip olduğunuzdan ve Firebase Hosting uygulamasını başlattınız.
CLI'yi yükleme ve Hosting'ü başlatma hakkında ayrıntılı talimatlar için Hosting için Başlangıç Kılavuzu'na bakın.
Cloud Functions uygulamasını kurduğunuzdan emin olun:
Cloud Functions hizmetini önceden kurduysanız 2. Adım: HTTPS işlevi oluşturun ve test edin.
Cloud Functions hizmetini kurmadıysanız:
Şu komutu çalıştırarak Cloud Functions hizmetini başlatın: proje dizininizin kökü:
firebase init functions
İstendiğinde JavaScript'i seçin (bu adım adım açıklamalı örnekte JS kullanılır).
Yerel projenizde
functions
dizininiz olduğundan emin olun dizini (az önce çalıştırdığınız Firebase komutu tarafından oluşturulur). Bufunctions
dizini, Cloud Functions kodunun bulunduğu yerdir.
2. Adım: Hosting siteniz için bir HTTPS işlevi oluşturun ve test edin
/functions/index.js
dosyasını favori düzenleyicinizde açın.Dosyanın içeriğini aşağıdaki kodla değiştirin.
Bu kod, HTTPS isteklerine tıpkı bir saat gibi günün her saati için
BONG
ile yanıt veren bir HTTPS işlevi (bigben
adlı) oluşturur.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>`); });
Şunu kullanarak işlevlerinizi yerel olarak test edin: Firebase Local Emulator Suite.
Yerel proje dizininizin kök dizininden aşağıdaki komutu çalıştırın komut:
firebase emulators:start
İşleve, CLI tarafından döndürülen yerel URL üzerinden erişin. Örneğin:
.http://localhost:5001/PROJECT_ID/us-central1/bigben
Cloud Functions belgelerini inceleyin bölümünü ziyaret edin.
Sonraki adımda bu HTTPS işlevine bir sunucudan siteniz için dinamik içerik oluşturabilmesi amacıyla Firebase Hosting URL Firebase tarafından barındırılan site.
3. Adım: HTTPS isteklerini işlevinize yönlendirin
Entegre
yeniden yazma kurallarını kullanıyorsanız istekleri
belirli kalıplar tek bir hedefle eşleştiren Aşağıdaki adımlarda
Hosting cihazınızda ../bigben
yolundan gelen tüm istekleri nasıl yönlendireceğinizi öğrenin
sitesinde bigben
işlevini yürütür.
firebase.json
dosyanızı açın.hosting
bölümü altına aşağıdakirewrite
yapılandırmasını ekleyin:"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) } } ] }
Firebase emülatörleri.
Yerel proje dizininizin kökünden aşağıdaki komutu çalıştırın:
firebase emulators:start
CLI tarafından döndürülen sitenizin yerel olarak barındırılan URL'sini (genellikle
localhost:5000
) ziyaret edin ancak URL'yebigben
ekleyin. Örneğin:http://localhost:5000/bigben
İşlevinizi ve sitenizdeki işlevselliği tekrarlayın. Şunu kullanın: Firebase emülatörleri kullanarak bu yinelemeleri test edebilirsiniz.
En iyi performans için işlevlerinizi Hosting ile birlikte yerleştirin: şu bölgelerden birini seçin:
us-west1
us-central1
us-east1
europe-west1
asia-east1
Hosting yapılandırma sayfasını ziyaret edin: yeniden yazma kuralları hakkında daha fazla bilgi edinin. Ayrıca, çeşitli Hosting yapılandırmaları için yanıtların öncelik sırası hakkında bilgi edinebilirsiniz.
Dinamik içerik sunma performansını iyileştirmek için şunları yapabilirsiniz: İsterseniz önbellek ayarlarınızı düzenleyebilirsiniz.
4. Adım: İşlevinizi dağıtın
İşleviniz emülatörde istediğiniz gibi çalıştığında gerçek proje kaynaklarıyla dağıtma, test etme ve çalıştırma işlemlerini gerçekleştirebilirsiniz. Bu, çalışma zamanı seçeneklerini ölçeklendirme davranışını kontrol etme emin olun.
İşlevinizi, Hosting içeriğinizi ve yapılandırmanızı yerel projenizin kök düzeyinden aşağıdaki komutu çalıştırarak sitemizi ziyaret edin: dizin:
firebase deploy --only functions,hosting
Canlı sitenize ve işlevinize aşağıdaki URL'lerden erişebilirsiniz:
Firebase alt alan adlarınız:
PROJECT_ID.web.app/bigben
vePROJECT_ID.firebaseapp.com/bigben
Bağlı tüm özel alanlar:
CUSTOM_DOMAIN/bigben
Web çerçevesi kullanın
Aşağıdaki gibi web çerçevelerini kullanabilirsiniz: Ekspres.js, Cloud Functions dilinde uygulamanızın dinamik içeriğini sunar ve karmaşık web uygulamalarını daha kolay yazar.
Aşağıdaki bölümde, Express.js'yi Firebase Hosting ve Cloud Functions.
Aşağıdaki komutu çalıştırarak Express.js'yi yerel projenize yükleyin
functions
dizininizden:npm install express --save
/functions/index.js
dosyanızı açın, ardından Express.js'yi içe aktarıp başlatın:const functions = require('firebase-functions/v1'); const express = require('express'); const app = express();
Aşağıdaki iki uç noktayı ekleyin:
Web sitemizin dizinini
/
adresinde sunmak için ilk uç noktayı ekleyin.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>`); });
BONG
değerini döndürecek başka bir uç nokta da JSON'de API olarak kullanılır biçiminde,/api
altında: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)}); });
Express.js uygulamasını HTTPS işlevi olarak dışa aktarın:
exports.app = functions.https.onRequest(app);
firebase.json
dosyanızda, tüm istekleriapp
işlevine yönlendirin. Bu yeniden yazma işlemi, Express.js'in yapılandırdığımız farklı alt yolu (bu örnekte/
ve/api
) sunmasına olanak tanır.{ "hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "**", "function": "app" } ] } }
Ara katman yazılımı ekleme
Örneğimizden devam edersek, artık Express.js kullandığınıza göre, Express.js ara katman yazılımı geri dönelim. Örneğin, CORS isteklerine yanıt verir.
Aşağıdaki komutu çalıştırarak
cors
ara katman yazılımını yükleyin:npm install --save cors
/functions/index.js
dosyanızı açın, ardından Express.js uygulamanızacors
ekleyin, Örneğin:const cors = require('cors')({origin: true}); app.use(cors);
Cloud Functions belgelerini inceleyin bölümünü ziyaret edin.
Sonraki adımlar
Şu API'yi kullanarak diğer Firebase hizmetleriyle etkileşime geçin: Firebase Yönetici SDK'sı.
Fiyatlandırmayı ve Cloud Functions için kotalar ve sınırlar.