यह दस्तावेज़ बताता है कि आप दूरस्थ कॉन्फ़िग टेम्पलेट के रूप में ज्ञात JSON-स्वरूपित पैरामीटर और शर्तों के सेट को प्रोग्रामेटिक रूप से कैसे पढ़ और संशोधित कर सकते हैं। यह आपको बैकएंड पर टेम्प्लेट परिवर्तन करने की अनुमति देता है जिसे क्लाइंट ऐप क्लाइंट लाइब्रेरी का उपयोग करके ला सकता है।
इस गाइड में वर्णित Remote Config REST API या Admin SDK का उपयोग करके, आप अपनी स्वयं की प्रक्रियाओं में Remote Config परिवर्तनों को सीधे एकीकृत करने के लिए Firebase कंसोल में टेम्पलेट को प्रबंधित करना बायपास कर सकते हैं। उदाहरण के लिए, रिमोट कॉन्फिग बैकएंड एपीआई के साथ, आप यह कर सकते हैं:
- रिमोट कॉन्फिग अपडेट शेड्यूल करना । क्रॉन जॉब के साथ एपीआई कॉल का उपयोग करके, आप नियमित समय पर रिमोट कॉन्फिग मानों को बदल सकते हैं।
- अपने स्वयं के स्वामित्व वाले सिस्टम से फायरबेस रिमोट कॉन्फिग में कुशलता से संक्रमण करने के लिए बैच आयात कॉन्फ़िगरेशन मान ।
सर्वर-साइड होने वाली घटनाओं के आधार पर अपने ऐप में मूल्यों को बदलते हुए, फायरबेस के लिए क्लाउड फ़ंक्शंस के साथ रिमोट कॉन्फिगरेशन का उपयोग करें । उदाहरण के लिए, आप अपने ऐप में किसी नई सुविधा का प्रचार करने के लिए रिमोट कॉन्फ़िग का उपयोग कर सकते हैं, और फिर जब आपको पता चलता है कि पर्याप्त लोगों ने नई सुविधा के साथ इंटरैक्ट किया है, तो उस प्रचार को स्वचालित रूप से बंद कर दें।
इस गाइड के निम्नलिखित अनुभाग उन कार्यों का वर्णन करते हैं जो आप रिमोट कॉन्फिग बैकएंड एपीआई के साथ कर सकते हैं। REST API के माध्यम से इन कार्यों को करने वाले कुछ कोड की समीक्षा करने के लिए, इनमें से एक नमूना ऐप देखें:
- फायरबेस रिमोट कॉन्फिग रेस्ट एपीआई जावा क्विकस्टार्ट
- फायरबेस रिमोट कॉन्फिग रेस्ट एपीआई Node.js क्विकस्टार्ट
- फायरबेस रिमोट कॉन्फिग रेस्ट एपीआई पायथन क्विकस्टार्ट
Firebase व्यवस्थापक SDK का उपयोग करके दूरस्थ कॉन्फ़िगरेशन को संशोधित करें
एडमिन एसडीके सर्वर लाइब्रेरी का एक सेट है जो आपको विशेषाधिकार प्राप्त वातावरण से फायरबेस के साथ इंटरैक्ट करने देता है। रिमोट कॉन्फिग में अपडेट करने के अलावा, एडमिन एसडीके फायरबेस ऑथ टोकन के निर्माण और सत्यापन को सक्षम बनाता है, रीयलटाइम डेटाबेस से पढ़ना और लिखना, और इसी तरह। व्यवस्थापक SDK पूर्वापेक्षाएँ और सेटअप के बारे में अधिक जानने के लिए, अपने सर्वर में Firebase व्यवस्थापक SDK जोड़ें देखें।
एक विशिष्ट रिमोट कॉन्फिग प्रवाह में, आप वर्तमान टेम्पलेट प्राप्त कर सकते हैं, कुछ पैरामीटर या पैरामीटर समूहों और शर्तों को संशोधित कर सकते हैं, टेम्पलेट को मान्य कर सकते हैं और फिर उसे प्रकाशित कर सकते हैं। वे एपीआई कॉल करने से पहले, आपको एसडीके से अनुरोधों को अधिकृत करना होगा।
SDK प्रारंभ करें और API अनुरोधों को अधिकृत करें
जब आप बिना किसी पैरामीटर के व्यवस्थापक SDK को प्रारंभ करते हैं, तो SDK Google अनुप्रयोग डिफ़ॉल्ट क्रेडेंशियल का उपयोग करता है और FIREBASE_CONFIG
परिवेश चर से विकल्पों को पढ़ता है। यदि FIREBASE_CONFIG
चर की सामग्री {
से शुरू होती है तो इसे JSON ऑब्जेक्ट के रूप में पार्स किया जाएगा। अन्यथा एसडीके मानता है कि स्ट्रिंग एक JSON फ़ाइल का नाम है जिसमें विकल्प हैं।
उदाहरण के लिए:
Node.js
const admin = require('firebase-admin'); admin.initializeApp();
जावा
FileInputStream serviceAccount = new FileInputStream("service-account.json"); FirebaseOptions options = FirebaseOptions.builder() .setCredentials(GoogleCredentials.fromStream(serviceAccount)) .build(); FirebaseApp.initializeApp(options);
वर्तमान रिमोट कॉन्फिग टेम्पलेट प्राप्त करें
रिमोट कॉन्फिग टेम्प्लेट के साथ काम करते समय, ध्यान रखें कि वे संस्करणबद्ध हैं, और यह कि प्रत्येक संस्करण के निर्माण के समय से लेकर अपडेट के साथ बदलने के समय तक सीमित जीवनकाल होता है: 90 दिन, 300 संग्रहीत संस्करणों की कुल सीमा के साथ। अधिक जानकारी के लिए टेम्पलेट और संस्करण देखें।
आप JSON प्रारूप में रिमोट कॉन्फिग टेम्पलेट के वर्तमान सक्रिय संस्करण को प्राप्त करने के लिए बैकएंड एपीआई का उपयोग कर सकते हैं। टेम्पलेट प्राप्त करने के लिए:
Node.js
function getTemplate() { var config = admin.remoteConfig(); config.getTemplate() .then(function (template) { console.log('ETag from server: ' + template.etag); var templateStr = JSON.stringify(template); fs.writeFileSync('config.json', templateStr); }) .catch(function (err) { console.error('Unable to get template'); console.error(err); }); }
जावा
Template template = FirebaseRemoteConfig.getInstance().getTemplateAsync().get(); // See the ETag of the fetched template. System.out.println("ETag from server: " + template.getETag());
रिमोट कॉन्फ़िगरेशन पैरामीटर संशोधित करें
आप रिमोट कॉन्फिग पैरामीटर और पैरामीटर समूहों को प्रोग्रामेटिक रूप से संशोधित और जोड़ सकते हैं। उदाहरण के लिए, "new_menu" नामक मौजूदा पैरामीटर समूह में आप मौसमी जानकारी के प्रदर्शन को नियंत्रित करने के लिए एक पैरामीटर जोड़ सकते हैं:
Node.js
function addParameterToGroup(template) { template.parameterGroups['new_menu'].parameters['spring_season'] = { defaultValue: { useInAppDefault: true }, description: 'spring season menu visibility.', }; }
जावा
template.getParameterGroups().get("new_menu").getParameters() .put("spring_season", new Parameter() .setDefaultValue(ParameterValue.inAppDefault()) .setDescription("spring season menu visibility.") );
एपीआई आपको नए पैरामीटर और पैरामीटर समूह बनाने, या डिफ़ॉल्ट मान, सशर्त मान और विवरण संशोधित करने की अनुमति देता है। सभी मामलों में, आपको संशोधन करने के बाद टेम्पलेट को स्पष्ट रूप से प्रकाशित करना होगा।
दूरस्थ कॉन्फ़िग शर्तों को संशोधित करें
आप रिमोट कॉन्फिग शर्तों और सशर्त मानों को प्रोग्रामेटिक रूप से संशोधित और जोड़ सकते हैं। उदाहरण के लिए, एक नई शर्त जोड़ने के लिए:
Node.js
function addNewCondition(template) { template.conditions.push({ name: 'android_en', expression: 'device.os == \'android\' && device.country in [\'us\', \'uk\']', tagColor: 'BLUE', }); }
जावा
template.getConditions().add(new Condition("android_en", "device.os == 'android' && device.country in ['us', 'uk']", TagColor.BLUE));
सभी मामलों में, आपको संशोधन करने के बाद टेम्पलेट को स्पष्ट रूप से प्रकाशित करना होगा।
रिमोट कॉन्फिग बैकएंड एपीआई कई शर्तें और तुलना ऑपरेटर प्रदान करते हैं जिनका उपयोग आप अपने ऐप के व्यवहार और उपस्थिति को बदलने के लिए कर सकते हैं। शर्तों और इन शर्तों के लिए समर्थित ऑपरेटरों के बारे में अधिक जानने के लिए, सशर्त अभिव्यक्ति संदर्भ देखें।
रिमोट कॉन्फिग टेम्पलेट को मान्य करें
वैकल्पिक रूप से, आप अपने अपडेट को प्रकाशित करने से पहले सत्यापित कर सकते हैं, जैसा कि दिखाया गया है:
Node.js
function validateTemplate(template) { admin.remoteConfig().validateTemplate(template) .then(function (validatedTemplate) { // The template is valid and safe to use. console.log('Template was valid and safe to use'); }) .catch(function (err) { console.error('Template is invalid and cannot be published'); console.error(err); }); }
जावा
try { Template validatedTemplate = FirebaseRemoteConfig.getInstance() .validateTemplateAsync(template).get(); System.out.println("Template was valid and safe to use"); } catch (ExecutionException e) { if (e.getCause() instanceof FirebaseRemoteConfigException) { FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause(); System.out.println("Template is invalid and cannot be published"); System.out.println(rcError.getMessage()); } }
यह सत्यापन प्रक्रिया त्रुटियों के लिए जाँच करती है जैसे पैरामीटर और शर्तों के लिए डुप्लिकेट कुंजियाँ, अमान्य स्थिति नाम या गैर-मौजूद शर्तें, या गलत प्रारूपित ईटैग। उदाहरण के लिए, एक अनुरोध जिसमें कुंजियों की अनुमत संख्या-2000 से अधिक है, त्रुटि संदेश लौटाएगा, Param count too large
।
रिमोट कॉन्फिग टेम्पलेट प्रकाशित करें
एक टेम्प्लेट को पुनः प्राप्त करने और अपने वांछित अपडेट के साथ इसे संशोधित करने के बाद, आप इसे प्रकाशित कर सकते हैं। इस खंड में वर्णित टेम्पलेट को प्रकाशित करना संपूर्ण मौजूदा कॉन्फ़िग टेम्पलेट को अद्यतन फ़ाइल के साथ बदल देता है, और नए सक्रिय टेम्पलेट को एक संस्करण संख्या असाइन की जाती है जो इसे बदले गए टेम्पलेट से एक संख्या अधिक होती है।
यदि आवश्यक हो, तो आप पिछले संस्करण पर वापस जाने के लिए REST API का उपयोग कर सकते हैं। किसी अपडेट में त्रुटियों के जोखिम को कम करने के लिए, आप प्रकाशित करने से पहले सत्यापित कर सकते हैं।
Node.js
function publishTemplate() { var config = admin.remoteConfig(); var template = config.createTemplateFromJSON( fs.readFileSync('config.json', 'UTF8')); config.publishTemplate(template) .then(function (updatedTemplate) { console.log('Template has been published'); console.log('ETag from server: ' + updatedTemplate.etag); }) .catch(function (err) { console.error('Unable to publish template.'); console.error(err); }); }
जावा
try { Template publishedTemplate = FirebaseRemoteConfig.getInstance() .publishTemplateAsync(template).get(); System.out.println("Template has been published"); // See the ETag of the published template. System.out.println("ETag from server: " + publishedTemplate.getETag()); } catch (ExecutionException e) { if (e.getCause() instanceof FirebaseRemoteConfigException) { FirebaseRemoteConfigException rcError = (FirebaseRemoteConfigException) e.getCause(); System.out.println("Unable to publish template."); System.out.println(rcError.getMessage()); } }
REST API का उपयोग करके दूरस्थ कॉन्फ़िगरेशन को संशोधित करें
यह खंड https://firebaseremoteconfig.googleapis.com
पर रिमोट कॉन्फिग रेस्ट एपीआई की मुख्य क्षमताओं का वर्णन करता है। पूरी जानकारी के लिए, एपीआई संदर्भ देखें।
एपीआई अनुरोधों को प्रमाणित और अधिकृत करने के लिए एक्सेस टोकन प्राप्त करें
Firebase प्रोजेक्ट Google सेवा खातों का समर्थन करते हैं, जिनका उपयोग आप अपने ऐप सर्वर या विश्वसनीय परिवेश से Firebase सर्वर API को कॉल करने के लिए कर सकते हैं। यदि आप स्थानीय रूप से कोड विकसित कर रहे हैं या अपने एप्लिकेशन को ऑन-प्रिमाइसेस परिनियोजित कर रहे हैं, तो आप सर्वर अनुरोधों को अधिकृत करने के लिए इस सेवा खाते के माध्यम से प्राप्त क्रेडेंशियल्स का उपयोग कर सकते हैं।
किसी सेवा खाते को प्रमाणित करने और उसे Firebase सेवाओं तक पहुंचने के लिए अधिकृत करने के लिए, आपको JSON प्रारूप में एक निजी कुंजी फ़ाइल जनरेट करनी होगी।
अपने सेवा खाते के लिए एक निजी कुंजी फ़ाइल बनाने के लिए:
Firebase कंसोल में, सेटिंग > सेवा खाते खोलें.
नई निजी कुंजी उत्पन्न करें पर क्लिक करें, फिर कुंजी उत्पन्न करें पर क्लिक करके पुष्टि करें।
कुंजी वाली JSON फ़ाइल को सुरक्षित रूप से संग्रहीत करें।
सेवा खाते के माध्यम से अधिकृत करते समय, आपके पास अपने आवेदन के लिए क्रेडेंशियल प्रदान करने के लिए दो विकल्प होते हैं। आप या तो GOOGLE_APPLICATION_CREDENTIALS पर्यावरण चर सेट कर सकते हैं, या आप कोड में सेवा खाता कुंजी का पथ स्पष्ट रूप से पास कर सकते हैं। पहला विकल्प अधिक सुरक्षित है और इसकी दृढ़ता से अनुशंसा की जाती है।
पर्यावरण चर सेट करने के लिए:
पर्यावरण चर GOOGLE_APPLICATION_CREDENTIALS को JSON फ़ाइल के फ़ाइल पथ पर सेट करें जिसमें आपकी सेवा खाता कुंजी है। यह चर केवल आपके वर्तमान शेल सत्र पर लागू होता है, इसलिए यदि आप एक नया सत्र खोलते हैं, तो चर को फिर से सेट करें।
लिनक्स या macOS
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
खिड़कियाँ
पावरशेल के साथ:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
उपरोक्त चरणों को पूरा करने के बाद, एप्लिकेशन डिफॉल्ट क्रेडेंशियल्स (एडीसी) आपके क्रेडेंशियल्स को स्पष्ट रूप से निर्धारित करने में सक्षम है, जिससे आप गैर-Google परिवेशों में परीक्षण या चलते समय सेवा खाता क्रेडेंशियल्स का उपयोग कर सकते हैं।
अल्पकालिक OAuth 2.0 एक्सेस टोकन प्राप्त करने के लिए अपनी पसंदीदा भाषा के लिए Google Auth लाइब्रेरी के साथ अपने Firebase क्रेडेंशियल का उपयोग करें:
नोड.जेएस
function getAccessToken() {
return admin.credential.applicationDefault().getAccessToken()
.then(accessToken => {
return accessToken.access_token;
})
.catch(err => {
console.error('Unable to get access token');
console.error(err);
});
}
इस उदाहरण में, Google API क्लाइंट लाइब्रेरी JSON वेब टोकन या JWT के साथ अनुरोध को प्रमाणित करती है। अधिक जानकारी के लिए, JSON वेब टोकन देखें।
अजगर
def _get_access_token():
"""Retrieve a valid access token that can be used to authorize requests.
:return: Access token.
"""
credentials = ServiceAccountCredentials.from_json_keyfile_name(
'service-account.json', SCOPES)
access_token_info = credentials.get_access_token()
return access_token_info.access_token
जावा
private static String getAccessToken() throws IOException {
GoogleCredentials googleCredentials = GoogleCredentials
.fromStream(new FileInputStream("service-account.json"))
.createScoped(Arrays.asList(SCOPES));
googleCredentials.refreshAccessToken();
return googleCredentials.getAccessToken().getTokenValue();
}
आपके एक्सेस टोकन की समय सीमा समाप्त होने के बाद, टोकन रीफ्रेश विधि को अपडेट किए गए एक्सेस टोकन को पुनर्प्राप्त करने के लिए स्वचालित रूप से कॉल किया जाता है।
रिमोट कॉन्फिग तक पहुंच को अधिकृत करने के लिए, https://www.googleapis.com/auth/firebase.remoteconfig
के दायरे का अनुरोध करें।
रिमोट कॉन्फिग टेम्पलेट को संशोधित करें
रिमोट कॉन्फिग टेम्प्लेट के साथ काम करते समय, ध्यान रखें कि वे संस्करणबद्ध हैं, और यह कि प्रत्येक संस्करण के निर्माण के समय से लेकर अपडेट के साथ बदलने के समय तक सीमित जीवनकाल होता है: 90 दिन, 300 संग्रहीत संस्करणों की कुल सीमा के साथ। अधिक जानकारी के लिए टेम्पलेट और संस्करण देखें।
वर्तमान रिमोट कॉन्फिग टेम्पलेट प्राप्त करें
आप JSON प्रारूप में रिमोट कॉन्फिग टेम्पलेट के वर्तमान सक्रिय संस्करण को प्राप्त करने के लिए बैकएंड एपीआई का उपयोग कर सकते हैं। निम्नलिखित आदेशों का प्रयोग करें:
कर्ल
curl --compressed -D headers -H "Authorization: Bearer token" -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -o filename
यह आदेश JSON पेलोड को एक फ़ाइल में और हेडर (Etag सहित) को एक अलग फ़ाइल में आउटपुट करता है।
कच्चा HTTP अनुरोध
Host: firebaseremoteconfig.googleapis.com GET /v1/projects/my-project-id/remoteConfig HTTP/1.1 Authorization: Bearer token Accept-Encoding: gzip
यह एपीआई कॉल एक अलग हेडर के साथ निम्नलिखित JSON लौटाता है जिसमें एक ETag शामिल होता है जिसका उपयोग आप बाद के अनुरोध के लिए करते हैं।
रिमोट कॉन्फिग टेम्पलेट को मान्य करें
वैकल्पिक रूप से, आप अपने अपडेट को प्रकाशित करने से पहले सत्यापित कर सकते हैं। अपने प्रकाशन अनुरोध में URL पैरामीटर ?validate_only=true
जोड़कर टेम्प्लेट अपडेट की पुष्टि करें। प्रतिक्रिया में, स्थिति कोड 200 और प्रत्यय -0
के साथ एक अद्यतन ईटैग का अर्थ है कि आपका अपडेट सफलतापूर्वक सत्यापित किया गया था। कोई भी गैर-200 प्रतिक्रिया इंगित करती है कि JSON डेटा में त्रुटियां हैं जिन्हें आपको प्रकाशित करने से पहले ठीक करना होगा।
रिमोट कॉन्फिग टेम्प्लेट अपडेट करें
टेम्पलेट को पुनः प्राप्त करने और अपने वांछित अपडेट के साथ JSON सामग्री को संशोधित करने के बाद, आप इसे प्रकाशित कर सकते हैं। इस खंड में वर्णित टेम्पलेट को प्रकाशित करना संपूर्ण मौजूदा कॉन्फ़िग टेम्पलेट को अद्यतन फ़ाइल के साथ बदल देता है, और नए सक्रिय टेम्पलेट को एक संस्करण संख्या असाइन की जाती है जो इसे बदले गए टेम्पलेट से एक संख्या अधिक होती है।
यदि आवश्यक हो, तो आप पिछले संस्करण पर वापस जाने के लिए REST API का उपयोग कर सकते हैं। किसी अपडेट में त्रुटियों के जोखिम को कम करने के लिए, आप प्रकाशित करने से पहले सत्यापित कर सकते हैं।
कर्ल
curl --compressed -H "Content-Type: application/json; UTF8" -H "If-Match: last-returned-etag" -H "Authorization: Bearer token" -X PUT https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig -d @filename
इस curl
कमांड के लिए, आप फ़ाइल नाम के बाद "@" वर्ण का उपयोग करके सामग्री निर्दिष्ट कर सकते हैं।
कच्चा HTTP अनुरोध
Host: firebaseremoteconfig.googleapis.com PUT /v1/projects/my-project-id/remoteConfig HTTP/1.1 Content-Length: size Content-Type: application/json; UTF8 Authorization: Bearer token If-Match: expected ETag Accept-Encoding: gzip JSON_HERE
क्योंकि यह एक लिखित अनुरोध है, ETag को इस कमांड द्वारा संशोधित किया जाता है और एक अद्यतन ETag अगले PUT
कमांड के प्रतिक्रिया हेडर में प्रदान किया जाता है।
दूरस्थ कॉन्फ़िग शर्तों को संशोधित करें
आप दूरस्थ कॉन्फ़िग शर्तों और सशर्त मानों को प्रोग्रामेटिक रूप से संशोधित कर सकते हैं। आरईएसटी एपीआई के साथ, टेम्पलेट को प्रकाशित करने से पहले आपको शर्तों को संशोधित करने के लिए सीधे टेम्पलेट को संपादित करना होगा।
{ "conditions": [{ "name": "android_english", "expression": "device.os == 'android' && device.country in ['us', 'uk']", "tagColor": "BLUE" }, { "name": "tenPercent", "expression": "percent <= 10", "tagColor": "BROWN" }], "parameters": { "welcome_message": { "defaultValue": { "value": "Welcome to this sample app" }, "conditionalValues": { "tenPercent": { "value": "Welcome to this new sample app" } }, "description": "The sample app's welcome message" }, "welcome_message_caps": { "defaultValue": { "value": "false" }, "conditionalValues": { "android_english": { "value": "true" } }, "description": "Whether the welcome message should be displayed in all capital letters." } } }
उपरोक्त संशोधन पहले शर्तों के एक सेट को परिभाषित करते हैं, और फिर प्रत्येक पैरामीटर के लिए डिफ़ॉल्ट मान और शर्त-आधारित पैरामीटर ( सशर्त मान ) मानों को परिभाषित करते हैं। यह प्रत्येक तत्व के लिए एक वैकल्पिक विवरण भी जोड़ता है; कोड टिप्पणियों की तरह, ये डेवलपर के उपयोग के लिए हैं और ऐप में प्रदर्शित नहीं होते हैं। संस्करण नियंत्रण उद्देश्यों के लिए एक ETag भी प्रदान किया जाता है।
रिमोट कॉन्फिग बैकएंड एपीआई कई शर्तें और तुलना ऑपरेटर प्रदान करते हैं जिनका उपयोग आप अपने ऐप के व्यवहार और उपस्थिति को बदलने के लिए कर सकते हैं। शर्तों और इन शर्तों के लिए समर्थित ऑपरेटरों के बारे में अधिक जानने के लिए, सशर्त अभिव्यक्ति संदर्भ देखें।
HTTP त्रुटि कोड
स्थिति का कोड | अर्थ |
---|---|
200 | सफलतापूर्वक उत्परिवर्तित |
400 | एक सत्यापन त्रुटि हुई। उदाहरण के लिए, एक अनुरोध जिसमें चाबियों की अनुमत संख्या-2000 से अधिक है, त्रुटि संदेश के साथ 400 (खराब अनुरोध) लौटाएगा, Param count too large । साथ ही, यह HTTPS स्थिति कोड इन दो स्थितियों में हो सकता है:
|
401 | एक प्राधिकरण त्रुटि हुई (कोई एक्सेस टोकन प्रदान नहीं किया गया था या Firebase Remote Config REST API को Cloud Developer Console में आपके प्रोजेक्ट में नहीं जोड़ा गया है) |
403 | एक प्रमाणीकरण त्रुटि हुई (गलत पहुंच टोकन प्रदान किया गया था) |
500 | एक आंतरिक त्रुटि हुई। अगर यह त्रुटि होती है, तो फायरबेस समर्थन टिकट फाइल करें |
200 के स्थिति कोड का अर्थ है कि रिमोट कॉन्फिग टेम्प्लेट (प्रोजेक्ट के लिए पैरामीटर, मान और शर्तें) को अपडेट कर दिया गया है और अब यह इस प्रोजेक्ट का उपयोग करने वाले ऐप्स के लिए उपलब्ध है। अन्य स्थिति कोड इंगित करते हैं कि पहले से मौजूद रिमोट कॉन्फिग टेम्प्लेट अभी भी प्रभावी है।
अपने टेम्प्लेट में अपडेट सबमिट करने के बाद, यह सत्यापित करने के लिए कि आपके परिवर्तन अपेक्षित रूप से दिखाई दे रहे हैं, Firebase कंसोल पर जाएं। यह महत्वपूर्ण है क्योंकि शर्तों का क्रम प्रभावित करता है कि उनका मूल्यांकन कैसे किया जाता है (पहली शर्त जो true
का मूल्यांकन करती है वह प्रभावी होती है)।
ETag उपयोग और जबरन अद्यतन
रिमोट कॉन्फिग रेस्ट एपीआई दौड़ की स्थिति और संसाधनों के ओवरलैपिंग अपडेट को रोकने के लिए एक इकाई टैग (ईटैग) का उपयोग करता है। Etags के बारे में अधिक जानने के लिए, ETag - HTTP देखें।
REST API के लिए, Google अनुशंसा करता है कि आप नवीनतम GET
कमांड द्वारा प्रदान किए गए ETag को कैश करें, और PUT
आदेश जारी करते समय उस ETag मान का उपयोग if If-Match
अनुरोध शीर्षलेख में करें। यदि आपका PUT
कमांड HTTPS स्टेटस कोड 409 में परिणत होता है, तो आपको अपने अगले PUT
कमांड के साथ उपयोग करने के लिए एक नया ETag और टेम्प्लेट प्राप्त करने के लिए एक नया GET
कमांड जारी करना चाहिए।
आप रिमोट कॉन्फिग टेम्पलेट को निम्नानुसार अद्यतन करने के लिए बाध्य करके ETag, और उससे प्रदान की जाने वाली सुरक्षा को दरकिनार कर सकते हैं: If-Match: *
हालांकि, इस दृष्टिकोण की अनुशंसा नहीं की जाती है क्योंकि यह आपके रिमोट कॉन्फिग के अपडेट के नुकसान का जोखिम उठाता है। टेम्पलेट यदि एकाधिक क्लाइंट दूरस्थ कॉन्फ़िग टेम्पलेट को अद्यतन कर रहे हैं। इस प्रकार का विरोध API का उपयोग करने वाले एकाधिक क्लाइंट के साथ या API क्लाइंट और Firebase कंसोल उपयोगकर्ताओं के परस्पर विरोधी अपडेट के साथ हो सकता है।
रिमोट कॉन्फिग टेम्पलेट संस्करणों को प्रबंधित करने के बारे में मार्गदर्शन के लिए, रिमोट कॉन्फिग टेम्प्लेट और वर्जनिंग देखें।