अपने डाइनैमिक कॉन्टेंट को जनरेट और डिलीवर करने के लिए, Cloud Functions को Firebase Hosting के साथ पेयर करें. इसके अलावा, REST API को माइक्रोसेवाओं के तौर पर बनाया जा सकता है.
Cloud Functions for Firebase की मदद से, एचटीटीपीएस अनुरोधों के जवाब में बैकएंड कोड अपने-आप चलाया जा सकता है. आपका कोड, Google के क्लाउड में सेव होता है और मैनेज किए जा रहे एनवायरमेंट में चलता है. आपको अपने सर्वर मैनेज करने और उन्हें स्केल करने की ज़रूरत नहीं होती.
Firebase Hosting के साथ इंटिग्रेट किए गए Cloud Functions के इस्तेमाल के उदाहरण और सैंपल देखने के लिए, सर्वरलेस की खास जानकारी पर जाएं.
Cloud Functions को Firebase Hosting से कनेक्ट करना
इस सेक्शन में, किसी फ़ंक्शन को Firebase Hosting से कनेक्ट करने का उदाहरण दिया गया है.
ध्यान दें कि डाइनैमिक कॉन्टेंट दिखाने की परफ़ॉर्मेंस को बेहतर बनाने के लिए, कैश मेमोरी की सेटिंग को अपनी ज़रूरत के हिसाब से बदला जा सकता है.
पहला चरण: Cloud Functions सेट अप करना
पक्का करें कि आपके पास Firebase CLI का सबसे नया वर्शन हो और आपने Firebase Hosting को शुरू किया हो.
सीएलआई इंस्टॉल करने और Hosting को शुरू करने के बारे में ज़्यादा जानकारी के लिए, Hosting को इस्तेमाल करने से जुड़ी गाइड देखें.
पक्का करें कि आपने Cloud Functions सेट अप किया हो:
अगर आपने Cloud Functions पहले से ही सेट अप कर लिया है, तो दूसरा चरण: एचटीटीपीएस फ़ंक्शन बनाएं और उसकी जांच करें पर जाएं.
अगर आपने Cloud Functions सेट अप नहीं किया है, तो:
अपनी प्रोजेक्ट डायरेक्ट्री के रूट से, यह कमांड चलाकर Cloud Functions को शुरू करें:
firebase init functions
जब आपसे कहा जाए, तब JavaScript चुनें. इस उदाहरण में JS का इस्तेमाल किया गया है.
देखें कि आपकी स्थानीय प्रोजेक्ट डायरेक्ट्री में
functions
डायरेक्ट्री मौजूद हो. यह डायरेक्ट्री, अभी-अभी चलाई गई Firebase कमांड से बनाई जाती है.functions
डायरेक्ट्री में, Cloud Functions का कोड होता है.
दूसरा चरण: अपनी Hosting साइट के लिए, एचटीटीपीएस फ़ंक्शन बनाएं और उसकी जांच करें
अपने पसंदीदा एडिटर में
/functions/index.js
खोलें.फ़ाइल के कॉन्टेंट को इस कोड से बदलें.
इस कोड से एक एचटीटीपीएस फ़ंक्शन (
bigben
नाम वाला) बनाया जाता है. यह फ़ंक्शन, एचटीटीपीएस अनुरोधों का जवाब देता है. इसमें दिन के हर घंटे के लिएBONG
होता है. यह घड़ी की तरह काम करता है.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>`); });
Firebase Local Emulator Suite का इस्तेमाल करके, अपने फ़ंक्शन की जांच लोकल लेवल पर करें.
अपने लोकल प्रोजेक्ट डायरेक्ट्री के रूट से, यह कमांड चलाएं:
firebase emulators:start
सीएलआई से मिले लोकल यूआरएल के ज़रिए फ़ंक्शन को ऐक्सेस करें. उदाहरण के लिए:
.http://localhost:5001/PROJECT_ID/us-central1/bigben
एचटीटीपीएस अनुरोधों के बारे में ज़्यादा जानने के लिए, Cloud Functions दस्तावेज़ पढ़ें.
अगले चरण में, आपको Firebase Hosting यूआरएल से इस एचटीटीपीएस फ़ंक्शन को ऐक्सेस करने का तरीका बताया गया है, ताकि यह Firebase पर होस्ट की गई आपकी साइट के लिए डाइनैमिक कॉन्टेंट जनरेट कर सके.
तीसरा चरण: अपने फ़ंक्शन को सीधे एचटीटीपीएस अनुरोध भेजना
फिर से लिखने के नियमों की मदद से, किसी खास पैटर्न से मेल खाने वाले अनुरोधों को एक ही डेस्टिनेशन पर भेजा जा सकता है. यहां दिए गए चरणों में बताया गया है कि अपनी Hosting साइट पर, ../bigben
पाथ से आने वाले सभी अनुरोधों को bigben
फ़ंक्शन को लागू करने के लिए कैसे भेजा जाता है.
अपनी
firebase.json
फ़ाइल खोलें.hosting
सेक्शन में जाकर, यह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) } } ] }
पुष्टि करें कि रीडायरेक्ट आपकी उम्मीद के मुताबिक काम कर रहा है. इसके लिए, Firebase एम्युलेटर का इस्तेमाल करके फिर से टेस्ट करें.
अपने लोकल प्रोजेक्ट डायरेक्ट्री के रूट से, यह कमांड चलाएं:
firebase emulators:start
अपनी साइट के लिए, स्थानीय तौर पर होस्ट किए गए उस यूआरएल पर जाएं जो सीएलआई ने दिखाया है. आम तौर पर, यह
localhost:5000
होता है. हालांकि, यूआरएल मेंbigben
जोड़ें. जैसे:http://localhost:5000/bigben
अपनी साइट के लिए, फ़ंक्शन और उसके काम करने के तरीके को बेहतर बनाएं. इन वर्शन को टेस्ट करने के लिए, Firebase एम्युलेटर का इस्तेमाल करें.
बेहतर परफ़ॉर्मेंस के लिए, अपने फ़ंक्शन को Hosting के साथ रखें. इसके लिए, इनमें से कोई एक क्षेत्र चुनें:
us-west1
us-central1
us-east1
europe-west1
asia-east1
रीराइट करने के नियमों के बारे में ज़्यादा जानकारी पाने के लिए, Hosting कॉन्फ़िगरेशन पेज पर जाएं. अलग-अलग Hosting कॉन्फ़िगरेशन के लिए, जवाबों के प्राथमिकता क्रम के बारे में भी जानें.
ध्यान दें कि डाइनैमिक कॉन्टेंट दिखाने की परफ़ॉर्मेंस को बेहतर बनाने के लिए, कैश मेमोरी की सेटिंग को अपनी ज़रूरत के हिसाब से बदला जा सकता है.
चौथा चरण: फ़ंक्शन को डिप्लॉय करना
जब आपका फ़ंक्शन एम्युलेटर में आपकी ज़रूरत के मुताबिक काम करने लगे, तब उसे डिप्लॉय किया जा सकता है. साथ ही, असली प्रोजेक्ट के संसाधनों के साथ उसकी जांच की जा सकती है और उसे चलाया जा सकता है. यह प्रोडक्शन में चल रहे फ़ंक्शन के लिए, स्केलिंग के तरीके को कंट्रोल करने के लिए रनटाइम विकल्प सेट करने का सही समय है.
अपने फ़ंक्शन के साथ-साथ Hosting कॉन्टेंट और कॉन्फ़िगरेशन को अपनी साइट पर डिप्लॉय करें. इसके लिए, अपने लोकल प्रोजेक्ट डायरेक्ट्री के रूट से यह कमांड चलाएं:
firebase deploy --only functions,hosting
इन यूआरएल पर जाकर, अपनी लाइव साइट और फ़ंक्शन को ऐक्सेस करें:
आपके Firebase सबडोमेन:
PROJECT_ID.web.app/bigben
औरPROJECT_ID.firebaseapp.com/bigben
कनेक्ट किए गए कस्टम डोमेन:
CUSTOM_DOMAIN/bigben
वेब फ़्रेमवर्क का इस्तेमाल करना
Cloud Functions में, Express.js जैसे वेब फ़्रेमवर्क का इस्तेमाल किया जा सकता है. इससे, अपने ऐप्लिकेशन का डाइनैमिक कॉन्टेंट दिखाया जा सकता है. साथ ही, जटिल वेब ऐप्लिकेशन को ज़्यादा आसानी से लिखा जा सकता है.
इस सेक्शन में, Firebase Hosting और Cloud Functions के साथ Express.js का इस्तेमाल करने का उदाहरण दिया गया है.
अपनी
functions
डायरेक्ट्री में जाकर, यहां दी गई कमांड चलाकर अपने लोकल प्रोजेक्ट में Express.js इंस्टॉल करें:npm install express --save
अपनी
/functions/index.js
फ़ाइल खोलें. इसके बाद, Express.js को इंपोर्ट और शुरू करें:const functions = require('firebase-functions/v1'); const express = require('express'); const app = express();
यहां दिए गए दो एंडपॉइंट जोड़ें:
/
पर हमारी वेबसाइट के इंडेक्स को दिखाने के लिए, पहला एंडपॉइंट जोड़ें.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
की संख्या को एपीआई के तौर पर JSON फ़ॉर्मैट में दिखाने के लिए, एक और एंडपॉइंट/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)}); });
Express.js ऐप्लिकेशन को एचटीटीपीएस फ़ंक्शन के तौर पर एक्सपोर्ट करें:
exports.app = functions.https.onRequest(app);
अपनी
firebase.json
फ़ाइल में, सभी अनुरोधों कोapp
फ़ंक्शन पर रीडायरेक्ट करें. इस रीराइट की मदद से, Express.js उस अलग सबपाथ को दिखा सकता है जिसे हमने कॉन्फ़िगर किया है. इस उदाहरण में,/
और/api
.{ "hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "**", "function": "app" } ] } }
मिडलवेयर जोड़ना
अपने उदाहरण को जारी रखते हुए, अब Express.js का इस्तेमाल किया जा रहा है. इसलिए, सामान्य तरीके से Express.js मिडलवेयर जोड़ा जा सकता है. उदाहरण के लिए, हमारे एंडपॉइंट पर सीओआरएस अनुरोधों को चालू किया जा सकता है.
cors
मिडलवेयर को इंस्टॉल करने के लिए, यह कमांड चलाएं:npm install --save cors
अपनी
/functions/index.js
फ़ाइल खोलें. इसके बाद, अपने Express.js ऐप्लिकेशन मेंcors
जोड़ें. जैसे:const cors = require('cors')({origin: true}); app.use(cors);
Express ऐप्लिकेशन और मिडलवेयर मॉड्यूल के साथ Firebase का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, Cloud Functions दस्तावेज़ पढ़ें.
अगले चरण
ग्लोबल सीडीएन पर अपने डाइनैमिक कॉन्टेंट के लिए, कैशिंग सेट अप करें.
Firebase Admin SDK का इस्तेमाल करके, Firebase की अन्य सेवाओं के साथ इंटरैक्ट करें.
Cloud Functions के लिए, कीमत और कोटा और सीमाएं देखें.