अपनी गतिशील सामग्री तैयार करने और परोसने या माइक्रोसर्विसेज के रूप में REST API बनाने के लिए क्लाउड फ़ंक्शंस को फ़ायरबेस होस्टिंग के साथ जोड़ें।
फायरबेस के लिए क्लाउड फ़ंक्शंस आपको HTTPS अनुरोधों के जवाब में स्वचालित रूप से बैकएंड कोड चलाने की सुविधा देता है। आपका कोड Google के क्लाउड में संग्रहीत है और एक प्रबंधित वातावरण में चलता है। अपने स्वयं के सर्वर को प्रबंधित और स्केल करने की कोई आवश्यकता नहीं है।
उदाहरण के लिए फायरबेस होस्टिंग के साथ एकीकृत क्लाउड फ़ंक्शंस के लिए मामलों और नमूनों का उपयोग करें, हमारे सर्वर रहित अवलोकन पर जाएँ।
क्लाउड फ़ंक्शंस को फ़ायरबेस होस्टिंग से कनेक्ट करें
यह अनुभाग किसी फ़ंक्शन को फ़ायरबेस होस्टिंग से कनेक्ट करने के लिए एक वॉक-थ्रू उदाहरण प्रदान करता है।
ध्यान दें कि गतिशील सामग्री परोसने के प्रदर्शन को बेहतर बनाने के लिए, आप वैकल्पिक रूप से अपनी कैश सेटिंग्स को ट्यून कर सकते हैं।
चरण 1: क्लाउड फ़ंक्शंस सेट करें
सुनिश्चित करें कि आपके पास फायरबेस सीएलआई का नवीनतम संस्करण है और आपने फायरबेस होस्टिंग आरंभ कर दी है।
सीएलआई स्थापित करने और होस्टिंग प्रारंभ करने के बारे में विस्तृत निर्देशों के लिए, होस्टिंग के लिए प्रारंभ करें मार्गदर्शिका देखें।
सुनिश्चित करें कि आपने क्लाउड फ़ंक्शंस सेट अप कर लिया है:
यदि आपने पहले ही क्लाउड फ़ंक्शंस सेट कर लिया है, तो आप चरण 2 पर आगे बढ़ सकते हैं: एक HTTPS फ़ंक्शन बनाएं और उसका परीक्षण करें ।
यदि आपने क्लाउड फ़ंक्शंस सेट अप नहीं किया है:
अपनी प्रोजेक्ट निर्देशिका के रूट से निम्नलिखित कमांड चलाकर क्लाउड फ़ंक्शंस प्रारंभ करें:
firebase init functions
संकेत मिलने पर, जावास्क्रिप्ट का चयन करें (यह वॉक-थ्रू उदाहरण जेएस का उपयोग करता है)।
जांचें कि आपके स्थानीय प्रोजेक्ट निर्देशिका में एक
functions
निर्देशिका है (आपके द्वारा अभी चलाए गए फायरबेस कमांड द्वारा बनाई गई)। यहfunctions
निर्देशिका वह जगह है जहां क्लाउड फ़ंक्शंस के लिए कोड रहता है।
चरण 2: अपनी होस्टिंग साइट के लिए HTTPS फ़ंक्शन बनाएं और उसका परीक्षण करें
अपने पसंदीदा संपादक में
/functions/index.js
खोलें।फ़ाइल की सामग्री को निम्नलिखित कोड से बदलें।
यह कोड एक HTTPS फ़ंक्शन (जिसे
bigben
नाम दिया गया है) बनाता है जो एक घड़ी की तरह, दिन के प्रत्येक घंटे के लिएBONG
के साथ HTTPS अनुरोधों का उत्तर देता है।const functions = require('firebase-functions'); 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 emulators:start
सीएलआई द्वारा लौटाए गए स्थानीय यूआरएल के माध्यम से फ़ंक्शन तक पहुंचें, उदाहरण के लिए:
http://localhost:5001/ PROJECT_ID /us-central1/bigben
HTTPS अनुरोधों के बारे में अधिक जानने के लिए क्लाउड फ़ंक्शंस दस्तावेज़ पर जाएँ।
अगला चरण आपको फायरबेस होस्टिंग यूआरएल से इस HTTPS फ़ंक्शन तक पहुंचने का तरीका बताता है ताकि यह आपके फायरबेस-होस्टेड साइट के लिए गतिशील सामग्री उत्पन्न कर सके।
चरण 3: सीधे HTTPS अनुरोधों को आपके फ़ंक्शन पर
पुनर्लेखन नियमों के साथ, आप विशिष्ट पैटर्न से मेल खाने वाले अनुरोधों को एक ही गंतव्य पर निर्देशित कर सकते हैं। निम्नलिखित चरण आपको दिखाते हैं कि bigben
फ़ंक्शन को निष्पादित करने के लिए अपनी होस्टिंग साइट पर पथ ../bigben
से सभी अनुरोधों को कैसे निर्देशित किया जाए।
अपनी
firebase.json
फ़ाइल खोलें।hosting
अनुभाग के अंतर्गत निम्नलिखितrewrite
कॉन्फ़िगरेशन जोड़ें:"hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "/bigben", "function": "bigben", "region": "us-central1" // optional (see note below) "pinTag": true // optional (see note below) } ] }
फायरबेस एमुलेटर के साथ दोबारा परीक्षण करके पुष्टि करें कि आपका रीडायरेक्ट उम्मीद के मुताबिक काम करता है।
अपनी स्थानीय प्रोजेक्ट निर्देशिका की जड़ से, निम्न आदेश चलाएँ:
firebase emulators:start
अपनी साइट के लिए सीएलआई (आमतौर पर
localhost:5000
) द्वारा दिए गए स्थानीय रूप से होस्ट किए गए यूआरएल पर जाएं, लेकिन यूआरएल कोbigben
के साथ जोड़ें, जैसे:http://localhost:5000/bigben
अपनी साइट के लिए अपने फ़ंक्शन और उसकी कार्यक्षमता पर पुनरावृति करें। इन पुनरावृत्तियों का परीक्षण करने के लिए फायरबेस एमुलेटर का उपयोग करें।
यदि
region
hosting.rewrites
कॉन्फ़िगरेशन केfunction
ब्लॉक से हटा दिया जाता है, तो फ़ायरबेस सीएलआई स्वचालित रूप से फ़ंक्शन के स्रोत कोड से क्षेत्र का पता लगाने का प्रयास करता है, जो अनिर्दिष्ट होने पर,us-central1
पर डिफ़ॉल्ट होता है। यदि फ़ंक्शन का स्रोत कोड अनुपलब्ध है, तो सीएलआई तैनात फ़ंक्शन से क्षेत्र का पता लगाने का प्रयास करता है। यदि फ़ंक्शन एकाधिक क्षेत्रों में है, तो सीएलआई कोhosting.rewrites
कॉन्फ़िगरेशन मेंregion
निर्दिष्ट करने की आवश्यकता होती है।
pinTag
सुविधा केवल फायरबेस (दूसरी पीढ़ी) के लिए क्लाउड फ़ंक्शंस में उपलब्ध है। इस सुविधा के साथ, आप यह सुनिश्चित कर सकते हैं कि आपकी साइट की गतिशील सामग्री उत्पन्न करने के लिए प्रत्येक फ़ंक्शन को आपके स्थिर होस्टिंग संसाधनों और होस्टिंग कॉन्फ़िगरेशन के साथ समन्वयित रखा गया है। साथ ही, यह सुविधा आपको होस्टिंग पूर्वावलोकन चैनलों पर कार्यों के लिए अपने पुनर्लेखन का पूर्वावलोकन करने की अनुमति देती है।यदि आप
hosting.rewrites
कॉन्फ़िगरेशन केfunction
ब्लॉक में"pinTag": true
जोड़ते हैं, तो "पिन किया हुआ" फ़ंक्शन आपके स्थिर होस्टिंग संसाधनों और कॉन्फ़िगरेशन के साथ तैनात किया जाएगा, यहां तक किचलाते समय भी। यदि आप अपनी साइट के किसी संस्करण को वापस रोल करते हैं, तो "पिन किया हुआ" फ़ंक्शन भी वापस रोल हो जाता है।
firebase deploy --only hosting यह सुविधा क्लाउड रन टैग पर निर्भर करती है, जिसकी सीमा प्रति सेवा 1000 टैग और प्रति क्षेत्र 2000 टैग है। इसका मतलब यह है कि सैकड़ों तैनाती के बाद, किसी साइट का सबसे पुराना संस्करण काम करना बंद कर सकता है।
सर्वोत्तम प्रदर्शन के लिए, निम्नलिखित क्षेत्रों में से किसी एक को चुनकर अपने कार्यों को होस्टिंग के साथ संयोजित करें:
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
पुनर्लेखन नियमों के बारे में अधिक जानकारी के लिए होस्टिंग कॉन्फ़िगरेशन पृष्ठ पर जाएँ। आप विभिन्न होस्टिंग कॉन्फ़िगरेशन के लिए प्रतिक्रियाओं के प्राथमिकता क्रम के बारे में भी जान सकते हैं।
ध्यान दें कि गतिशील सामग्री परोसने के प्रदर्शन को बेहतर बनाने के लिए, आप वैकल्पिक रूप से अपनी कैश सेटिंग्स को ट्यून कर सकते हैं।
चरण 4: अपना फ़ंक्शन तैनात करें
एक बार जब आपका फ़ंक्शन एमुलेटर में इच्छानुसार काम करने लगता है, तो आप इसे वास्तविक प्रोजेक्ट संसाधनों के साथ तैनात करने, परीक्षण करने और चलाने के लिए आगे बढ़ सकते हैं। उत्पादन में चल रहे कार्यों के लिए स्केलिंग व्यवहार को नियंत्रित करने के लिए रनटाइम विकल्प सेट करने पर विचार करने का यह एक अच्छा समय है।
अपने स्थानीय प्रोजेक्ट निर्देशिका के रूट से निम्नलिखित कमांड चलाकर अपने फ़ंक्शन के साथ-साथ अपनी होस्टिंग सामग्री और कॉन्फ़िगरेशन को अपनी साइट पर तैनात करें:
firebase deploy --only functions,hosting
निम्नलिखित यूआरएल पर अपनी लाइव साइट और अपने फ़ंक्शन तक पहुंचें:
आपके फायरबेस उपडोमेन:
PROJECT_ID .web.app/bigben
औरPROJECT_ID .firebaseapp.com/bigben
कोई भी कनेक्टेड कस्टम डोमेन :
CUSTOM_DOMAIN /bigben
एक वेब फ्रेमवर्क का प्रयोग करें
आप अपने ऐप की गतिशील सामग्री परोसने और जटिल वेब ऐप्स को अधिक आसानी से लिखने के लिए क्लाउड फ़ंक्शंस में Express.js जैसे वेब फ्रेमवर्क का उपयोग कर सकते हैं।
निम्नलिखित अनुभाग फायरबेस होस्टिंग और क्लाउड फ़ंक्शंस के साथ Express.js का उपयोग करने के लिए एक वॉक-थ्रू उदाहरण प्रदान करता है।
अपनी
functions
निर्देशिका से निम्नलिखित कमांड चलाकर अपने स्थानीय प्रोजेक्ट में Express.js स्थापित करें:npm install express --save
अपनी
/functions/index.js
फ़ाइल खोलें, फिर Express.js को आयात और प्रारंभ करें:const functions = require('firebase-functions'); 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>`); });
और
/api
के अंतर्गत, JSON प्रारूप में,BONG
गिनती को 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 ऐप को HTTPS फ़ंक्शन के रूप में निर्यात करें:
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 अनुरोध सक्षम कर सकते हैं।
निम्नलिखित कमांड चलाकर
cors
मिडलवेयर स्थापित करें:npm install --save cors
अपनी
/functions/index.js
फ़ाइल खोलें, फिर अपने Express.js ऐप मेंcors
जोड़ें, जैसे:const cors = require('cors')({origin: true}); app.use(cors);
एक्सप्रेस ऐप्स और मिडलवेयर मॉड्यूल के साथ फायरबेस का उपयोग करने के बारे में अधिक जानने के लिए क्लाउड फ़ंक्शंस दस्तावेज़ पर जाएँ।
अगले कदम
वैश्विक सीडीएन पर अपनी गतिशील सामग्री के लिए कैशिंग सेट करें ।
फायरबेस एडमिन एसडीके का उपयोग करके अन्य फायरबेस सेवाओं के साथ बातचीत करें।
क्लाउड फ़ंक्शंस के लिए मूल्य निर्धारण और कोटा और सीमाओं की समीक्षा करें।