होस्टिंग REST API का इस्तेमाल करके अपनी साइट पर डिप्लॉय करें

Firebase होस्टिंग REST API की मदद से, आपकी Firebase से होस्ट की गई साइटों पर प्रोग्राम के हिसाब से और अपनी पसंद के मुताबिक डिप्लॉयमेंट. नया या अपडेट किया गया होस्टिंग कॉन्टेंट डिप्लॉय करने के लिए, इस REST API का इस्तेमाल करें और कॉन्फ़िगरेशन.

Firebase सीएलआई का इस्तेमाल करने के विकल्प के तौर पर डिप्लॉयमेंट के तौर पर, Firebase होस्टिंग REST API का इस्तेमाल प्रोग्राम के हिसाब से किया जा सकता है इसका एक नया version बनाएं ऐसेट जोड़ने के लिए, वर्शन पर फ़ाइलें अपलोड करें. इसके बाद, वर्शन को इस तरह डिप्लॉय करें: आपकी साइट.

उदाहरण के लिए, Firebase होस्टिंग REST API का इस्तेमाल करके, ये काम किए जा सकते हैं:

  • डिप्लॉयमेंट शेड्यूल करें. क्रॉन जॉब के साथ REST API का इस्तेमाल करके, Firebase से होस्ट किए गए कॉन्टेंट को नियमित शेड्यूल के हिसाब से बदला जा सकता है. उदाहरण के लिए, अपने कॉन्टेंट का कोई खास छुट्टी या इवेंट से जुड़ा वर्शन डिप्लॉय करने के लिए).

  • डेवलपर टूल के साथ इंटिग्रेट करना. टूल में ऐसा विकल्प बनाया जा सकता है जिसकी मदद से बस एक क्लिक का इस्तेमाल करके, अपने वेब ऐप्लिकेशन प्रोजेक्ट को Firebase होस्टिंग पर डिप्लॉय करें उदाहरण के लिए, IDE में मौजूद डिप्लॉय बटन पर क्लिक करना).

  • स्टैटिक कॉन्टेंट जनरेट होने पर डिप्लॉयमेंट को ऑटोमेट करें. जब कोई प्रोसेस प्रोग्राम के हिसाब से स्टैटिक कॉन्टेंट जनरेट करता है. उदाहरण के लिए, यूज़र जनरेटेड कॉन्टेंट जैसे कि विकी या समाचार लेख), तो जनरेट की गई सामग्री को फ़ाइलों को डाइनैमिक तौर पर उपलब्ध कराने के बजाय, उन्हें हर तरह की स्टैटिक फ़ाइलें इस्तेमाल करने की अनुमति दें. इससे आपके खर्च की बचत होगी की सुविधा देता है. साथ ही, यह आपकी फ़ाइलों को बड़े पैमाने पर उपलब्ध कराता है.

इस गाइड में सबसे पहले, एपीआई को चालू करने, उसकी पुष्टि करने, और उसे अनुमति देने का तरीका बताया गया है. इसके बाद, इस ��ाइड में Firebase होस्टिंग बनाने का उदाहरण दिया गया है वर्शन में ज़रूरी फ़ाइलों को अपलोड करने के लिए, और फिर आखिर में वर्शन है.

इस REST API के बारे में ज़्यादा जानने के लिए, यहां जाएं: Hosting REST API का पूरा रेफ़रंस दस्तावेज़.

शुरू करने से पहले: REST API चालू करें

आपको Google API कंसोल में, Firebase होस्टिंग REST API चालू करना होगा:

  1. खोलें Firebase होस्टिंग एपीआई पेज में जाकर देखें.

  2. जब कहा जाए, तब अपना Firebase प्रोजेक्ट चुनें.

  3. Firebase Hosting API पेज पर, चालू करें पर क्लिक करें.

पहला चरण: एपीआई अनुरोधों की पुष्टि करने और उन्हें अनुमति देने के लिए ऐक्सेस टोकन पाना

Firebase प्रोजेक्ट, Google पर काम करते हैं सेवा खाते, जिसे आप Firebase को कॉल करने के लिए इस्तेमाल कर सकते हैं आपके ऐप्लिकेशन के सर्वर या भरोसेमंद एनवायरमेंट से सर्वर एपीआई. अगर आपको अपने समाचार संगठन के लिए, स्थानीय तौर पर कोड भेजने या आपके ऐप्लिकेशन को कंपनी की इमारत में डिप्लॉय करने पर, इस्तेमाल करके हासिल किए गए क्रेडेंशियल इस सेवा खाते के ज़रिए, सर्वर के अनुरोधों को मंज़ूरी देने के लिए.

किसी सेवा खाते की पुष्टि करने और उसे अनुमति देने के लिए Firebase की सेवाएं ऐक्सेस करने के लिए, आपको JSON में एक निजी कुंजी फ़ाइल जनरेट करनी होगी फ़ॉर्मैट.

अपने सेवा खाते के लिए, निजी पासकोड वाली फ़ाइल जनरेट करने के लिए:

  1. Firebase कंसोल में, सेटिंग > सेवा खाते.

  2. नई निजी कुंजी जनरेट करें पर क्लिक करें, फिर कुंजी जनरेट करें पर क्लिक करके पुष्टि करें.

  3. कुंजी वाली JSON फ़ाइल को सुरक्षित तरीके से सेव करें.

अपने Firebase क्रेडेंशियल का एक साथ इस्तेमाल करें Google ऑथ लाइब्रेरी कृपया कु�� समय तक चलने वाले OAuth 2.0 ऐक्सेस टोकन को फिर से पाने के लिए, अपनी पसंदीदा भाषा का इस्तेमाल करें:

node.js

const {google} = require('googleapis');
function getAccessToken() {
  return new Promise(function(resolve, reject) {
    var key = require('./service-account.json');
    var jwtClient = new google.auth.JWT(
      key.client_email,
      null,
      key.private_key,
      SCOPES,
      null
    );
    jwtClient.authorize(function(err, tokens) {
      if (err) {
        reject(err);
        return;
      }
      resolve(tokens.access_token);
    });
  });
}

इस उदाहरण में, Google API क्लाइंट लाइब्रेरी अनुरोध को JSON वेब टोकन या JWT. ज़्यादा जानकारी के लिए, यह देखें JSON वेब टोकन.

Python

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

Java

private static String getAccessToken() throws IOException {
  GoogleCredential googleCredential = GoogleCredential
      .fromStream(new FileInputStream("service-account.json"))
      .createScoped(Arrays.asList(SCOPES));
  googleCredential.refreshToken();
  return googleCredential.getAccessToken();
}

ऐक्सेस टोकन की समयसीमा खत्म होने पर, टोकन रीफ़्रेश करने का तरीका अपडेट किया गया ऐक्सेस टोकन फिर से पाने के लिए अपने-आप.

दूसरा चरण: पक्का करें कि आपके प्रोजेक्ट की डिफ़ॉल्ट होस्टिंग साइट हो

Firebase होस्टिंग में पहली बार डिप्लॉयमेंट से पहले, आपके Firebase प्रोजेक्ट को डिफ़ॉल्ट है होस्टिंग SITE.

  1. sites.list एंडपॉइंट का इस्तेमाल करें.

    उदाहरण के लिए:

    cURL निर्देश

    curl -H "Content-Type: application/json" \
           -H "Authorization: Bearer ACCESS_TOKEN" \
    
    https://firebasehosting.googleapis.com/v1beta1/projects/PROJECT_ID/sites
    

    रॉ एचटीटीपीएस अनुरोध

    Host: firebasehosting.googleapis.com
    
    POST /v1beta1/projects/PROJECT_ID/sites HTTP/1.1
    Authorization: Bearer ACCESS_TOKEN
    Content-Type: application/json
    
    • अगर किसी एक साइट में "type": "DEFAULT_SITE" है, तो आपका प्रोजेक्ट के पास पहले से एक डिफ़ॉल्ट होस्टिंग साइट है. इस चरण के बाकी बचे चरण छोड़ें, और अगले चरण पर जाएं: अपनी साइट के लिए एक नया वर्शन बनाएं.

    • अगर आपको कोई खाली अरे मिलता है, तो इसका मतलब है कि आपके पास डिफ़ॉल्ट होस्टिंग सेवा मौजूद नहीं है की वेबसाइट पर जाएं. इस चरण के बाकी हिस्से को पूरा करें.

  2. अपनी डिफ़ॉल्ट होस्टिंग साइट के लिए SITE_ID तय करें. बनाए रखें SITE_ID तय करते समय इन बातों का ध्यान रखें:

    • इस SITE_ID का इस्तेमाल, आपके डिफ़ॉल्ट Firebase सबडोमेन बनाने के लिए किया जाता है:
      SITE_ID.web.app और SITE_ID.firebaseapp.com.

    • SITE_ID की ये ज़रूरी शर्तें होती हैं:

      • एक मान्य होस्टनेम लेबल होना ��ाहिए, इसका मतलब है कि इसमें ., _ वगैरह नहीं होने चाहिए.
      • इसमें 30 या इससे कम वर्ण होने चाहिए
      • Firebase में यह ग्लोबल तौर पर, यूनीक होना चाहिए

    ध्यान दें कि हम अक्सर आपको अपने प्रोजेक्ट आईडी को SITE_ID के तौर पर इस्तेमाल करने का सुझाव देते हैं डिफ़ॉल्ट होस्टिंग साइट. इस आईडी को ढूंढने का तरीका जानें Firebase प्रोजेक्ट को समझना.

  3. आप sites.create एंडपॉइंट के लिए, अपनी पसंद के SITE_ID का इस्तेमाल करें siteId पैरामीटर.

    उदाहरण के लिए:

    cURL निर्देश

    curl -H "Content-Type: application/json" \
           -H "Authorization: Bearer ACCESS_TOKEN" \
    
    https://firebasehosting.googleapis.com/v1beta1/projects/PROJECT_ID/sites?siteId=SITE_ID
    

    रॉ एचटीटीपीएस अनुरोध

    Host: firebasehosting.googleapis.com
    
    POST /v1beta1/projects/PROJECT_ID/sites?siteId=SITE_ID
    Authorization: Bearer ACCESS_TOKEN
    Content-Type: application/json
    

    sites.create को किया जाने वाला यह एपीआई कॉल, नीचे दिया गया JSON दिखाता है:

    {
      "name": "projects/PROJECT_ID/sites/SITE_ID",
      "defaultUrl": "https://SITE_ID.web.app",
      "type": "DEFAULT_SITE"
    }
    
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

तीसरा चरण: अपनी साइट के लिए नया वर्शन बनाना

नया एपीआई कॉल बनाने के लिए आपको पहला एपीआई कॉल करना होगा आपकी साइट के लिए Version. इस गाइड में आगे, आपको फ़ाइलों को इस वर्शन में अपलोड करना होगा और फिर उसे अपने की वेबसाइट पर जाएं.

  1. उस साइट के लिए SITE_ID तय करें जिस पर आपको डिप्लॉय करना है.

  2. कॉल करें versions.create कॉल में आपके SITE_ID का इस्तेमाल करके एंडपॉइंट को कॉल करेगा.

    (ज़रूरी नहीं) आप किसी Firebase होस्टिंग कॉन्फ़िगरेशन ऑब्जेक्ट कॉल में एक ऐसा हेडर सेट करना शामिल है जो समय की अवधि.

    उदाहरण के लिए:

    cURL निर्देश

    curl -H "Content-Type: application/json" \
           -H "Authorization: Bearer ACCESS_TOKEN" \
           -d '{
                 "config": {
                   "headers": [{
                     "glob": "**",
                     "headers": {
                       "Cache-Control": "max-age=1800"
                     }
                   }]
                 }
               }' \
    https://firebasehosting.googleapis.com/v1beta1/sites/SITE_ID/versions
    

    रॉ एचटीटीपीएस अनुरोध

    Host: firebasehosting.googleapis.com
    
    POST /v1beta1/sites/SITE_ID/versions HTTP/1.1
    Authorization: Bearer ACCESS_TOKEN
    Content-Type: application/json
    Content-Length: 134
    
    {
      "config": {
        "headers": [{
          "glob": "**",
          "headers": {
            "Cache-Control": "max-age=1800"
          }
        }]
      }
    }
    

versions.create को किया जाने वाला यह एपीआई कॉल, नीचे दिया गया JSON दिखाता है:

{
  "name": "sites/SITE_ID/versions/VERSION_ID",
  "status": "CREATED",
  "config": {
    "headers": [{
      "glob": "**",
      "headers": {
        "Cache-Control": "max-age=1800"
      }
    }]
  }
}

इस रिस्पॉन्स में नए वर्शन के लिए, इस फ़ॉर्मैट में एक यूनीक आइडेंटिफ़ायर शामिल होता है: sites/SITE_ID/versions/VERSION_ID. आपको इस खास जानकारी के रेफ़रंस के लिए, पूरी गाइड में इस यूनीक आइडेंटिफ़ायर की ज़रूरत होगी वर्शन है.

चौथा चरण: उन फ़ाइलों की सूची तय करें जिन्हें डिप्लॉय करना है

अब जब आपके पास अपना नया वर्शन आइडेंटिफ़ायर है, तो आपको Firebase होस्टिंग की मदद से उन फ़ाइलों को होस्ट करना जिन्हें आपको इस नई फ़ाइल में डिप्लॉय करना है वर्शन है.

ध्यान दें कि होस्टिंग की सेवा के लिए, अलग-अलग फ़ाइलें.

इस एपीआई के लिए ज़रूरी है कि आप SHA256 हैश से फ़ाइलों की पहचान करें. इसलिए, इससे पहले कि आप एपीआई कॉल करने के लिए, आपको पहले फ़ाइलों को Gzip करके, कंप्रेस की गई हर नई फ़ाइल का SHA256 हैश लिया जा रहा है.

हमारे उदाहरण को आगे बढ़ाते हुए, मान लें कि आपको नए वर्शन में तीन फ़ाइलें डिप्लॉय करनी हैं वर्शन: file1, file2, और file3.

  1. फ़ाइलें Gzip करें:

    gzip file1 && gzip file2 && gzip file3

    अब आपके पास कंप्रेस की गई तीन फ़ाइलें file1.gz, file2.gz, और file3.gz हैं.

  2. कंप्रेस की गई हर फ़ाइल का SHA256 हैश पाएं:

    cat file1.gz | openssl dgst -sha256
    
    66d61f86bb684d0e35f94461c1f9cf4f07a4bb3407bfbd80e518bd44368ff8f4
    
    cat file2.gz | openssl dgst -sha256
    
    490423ebae5dcd6c2df695aea79f1f80555c62e535a2808c8115a6714863d083
    
    cat file3.gz | openssl dgst -sha256
    
    59cae17473d7dd339fe714f4c6c514ab4470757a4fe616dfdb4d81400addf315
    

    अब आपके पास कंप्रेस की गई तीन फ़ाइलों के तीन SHA256 हैश हैं.

  3. इन तीन हैश को एपीआई अनुरोध में versions.populateFiles एंडपॉइंट का इस्तेमाल करें. अपलोड की गई फ़ाइल के लिए मनचाहे पाथ के हिसाब से हर हैश की सूची बनाएं (इसमें उदाहरण के लिए, /file1, /file2, और /file3).

    उदाहरण के लिए:

    cURL निर्देश

    $ curl -H "Content-Type: application/json" \
             -H "Authorization: Bearer ACCESS_TOKEN" \
             -d '{
                   "files": {
                     "/file1": "66d61f86bb684d0e35f94461c1f9cf4f07a4bb3407bfbd80e518bd44368ff8f4",
                     "/file2": "490423ebae5dcd6c2df695aea79f1f80555c62e535a2808c8115a6714863d083",
                     "/file3": "59cae17473d7dd339fe714f4c6c514ab4470757a4fe616dfdb4d81400addf315"
                   }
                 }' \
    https://firebasehosting.googleapis.com/v1beta1/sites/SITE_ID/versions/VERSION_ID:populateFiles
    

    रॉ एचटीटीपीएस अनुरोध

    Host: firebasehosting.googleapis.com
    
    POST /v1beta1/sites/SITE_ID/versions/VERSION_ID:populateFiles HTTP/1.1
    Authorization: Bearer ACCESS_TOKEN
    Content-Type: application/json
    Content-Length: 181
    
    {
      "files": {
        "/file1": "66d61f86bb684d0e35f94461c1f9cf4f07a4bb3407bfbd80e518bd44368ff8f4",
        "/file2": "490423ebae5dcd6c2df695aea79f1f80555c62e535a2808c8115a6714863d083",
        "/file3": "59cae17473d7dd339fe714f4c6c514ab4470757a4fe616dfdb4d81400addf315"
      }
    }
    

versions.populateFiles को किया जाने वाला यह एपीआई कॉल, नीचे दिया गया JSON दिखाता है:

{
  "uploadRequiredHashes": [
    "490423ebae5dcd6c2df695aea79f1f80555c62e535a2808c8115a6714863d083",
    "59cae17473d7dd339fe714f4c6c514ab4470757a4fe616dfdb4d81400addf315"
  ],
  "uploadUrl": "https://upload-firebasehosting.googleapis.com/upload/sites/SITE_ID/versions/VERSION_ID/files"
}

इस जवाब में ये चीज़ें शामिल होती हैं:

  • हर फ़ाइल का हैश जिसे अपलोड करना है. उदाहरण के लिए, इस उदाहरण file1 को पिछले वर्शन में पहले ही अपलोड कर दिया गया था, इसलिए इसका हैश को uploadRequiredHashes सूची में शामिल नहीं किया गया है.

  • uploadUrl, जो खास तौर पर नए वर्शन के लिए है.

अगले चरण में दो नई फ़ाइलें अपलोड करने के लिए, आपको हैश और versions.populateFiles के जवाब में से uploadURL.

पांचवां चरण: ज़रूरी फ़ाइलें अपलोड करना

आपको हर ज़रूरी फ़ाइल को अलग-अलग अपलोड करना होगा. ये फ़ाइलें, सूची में मौजूद हैं uploadRequiredHashes में, versions.populateFiles के जवाब में से पिछला चरण). इन फ़ाइल अपलोड के लिए, आपको फ़ाइल हैश और पिछले चरण से uploadUrl.

  1. uploadUrl में फ़ॉ��वर्ड स्लैश और फ़ाइल के हैश को जोड़ें फ़ाइल के लिए यूआरएल इस फ़ॉर्मैट में बनाएं: https://upload-firebasehosting.googleapis.com/upload/sites/SITE_ID/versions/VERSION_ID/files/FILE_HASH.

  2. एक-एक करके सभी ज़रूरी फ़ाइलें अपलोड करें (इस उदाहरण में, सिर्फ़ file2.gz और file3.gz).

    उदाहरण के लिए, कंप्रेस की गई file2.gz अपलोड करने के लिए:

    cURL निर्देश

    curl -H "Authorization: Bearer ACCESS_TOKEN" \
           -H "Content-Type: application/octet-stream" \
           --data-binary @./file2.gz \
    https://upload-firebasehosting.googleapis.com/upload/sites/SITE_ID/versions/VERSION_ID/files/FILE_HASH
    

    रॉ एचटीटीपीएस अनुरोध

    Host: upload-firebasehosting.googleapis.com
    
    POST /upload/sites/SITE_ID/versions/VERSION_ID/files/FILE_HASH HTTP/1.1
    Authorization: Bearer ACCESS_TOKEN
    Content-Type: application/octet-stream
    Content-Length: 500
    
    content-of-file2.gz
    

अपलोड होने पर, 200 OK एचटीटीपीएस रिस्पॉन्स मिलता है.

छठा चरण: वर्शन की स्थिति को FINALIZED में अपडेट करें

फ़ाइलें अपलोड करने के बाद, versions.populateFiles जवाब, आपके वर्शन की स्थिति को इस पर अपडेट किया जा सकता है: FINALIZED.

versions.patch पर कॉल करें आपके एपीआई अनुरोध में status फ़ील्ड वाला एंडपॉइंट FINALIZED पर सेट किया गया.

उदाहरण के लिए:

cURL निर्देश

curl -H "Content-Type: application/json" \
       -H "Authorization: Bearer ACCESS_TOKEN" \
       -X PATCH \
       -d '{"status": "FINALIZED"}' \
https://firebasehosting.googleapis.com/v1beta1/sites/SITE_ID/versions/VERSION_ID?update_mask=status

रॉ एचटीटीपीएस अनुरोध

Host: firebasehosting.googleapis.com

PATCH /v1beta1/sites/SITE_ID/versions/VERSION_ID?update_mask=status HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
Content-Length: 23

{"status": "FINALIZED"}

versions.patch को किए गए इस एपीआई कॉल से, नीचे दिया गया JSON मिलता है. जांच लें कि status को FINALIZED में अपडेट कर दिया गया है.

{
  "name": "sites/SITE_ID/versions/VERSION_ID",
  "status": "FINALIZED",
  "config": {
    "headers": [{
      "glob": "**",
      "headers": {"Cache-Control": "max-age=1800"}
    }]
  },
  "createTime": "2018-12-02T13:41:56.905743Z",
  "createUser": {
    "email": "SERVICE_ACCOUNT_EMAIL@SITE_ID.iam.gserviceaccount.com"
  },
  "finalizeTime": "2018-12-02T14:56:13.047423Z",
  "finalizeUser": {
    "email": "USER_EMAIL@DOMAIN.tld"
  },
  "fileCount": "5",
  "versionBytes": "114951"
}

सातवां चरण: डिप्लॉयमेंट के लिए वर्शन रिलीज़ करना

अब आपने वर्शन तैयार कर लिया है, तो उसे डिप्लॉयमेंट के लिए रिलीज़ करें. इस चरण के लिए, आपको बनाना होगा आपके डिवाइस का Release वर्शन जिसमें होस्टिंग कॉन्फ़िगरेशन और आपके नए वर्शन है.

releases.create पर कॉल करें एंडपॉइंट का इस्तेमाल करें.

उदाहरण के लिए:

cURL निर्देश

curl -H "Authorization: Bearer ACCESS_TOKEN" \
       -X POST
https://firebasehosting.googleapis.com/v1beta1/sites/SITE_ID/releases?versionName=sites/SITE_ID/versions/VERSION_ID

रॉ एचटीटीपीएस अनुरोध

Host: firebasehosting.googleapis.com

POST /v1beta1/sites/SITE_ID/releases?versionName=sites/SITE_ID/versions/VERSION_ID HTTP/1.1
Authorization: Bearer ACCESS_TOKEN

releases.create को किया जाने वाला यह एपीआई कॉल, नीचे दिया गया JSON दिखाता है:

{
  "name": "sites/SITE_ID/releases/RELEASE_ID",
  "version": {
    "name": "sites/SITE_ID/versions/VERSION_ID",
    "status": "FINALIZED",
    "config": {
    "headers": [{
      "glob": "**",
      "headers": {"Cache-Control": "max-age=1800"}
    }]
  }
  },
  "type": "DEPLOY",
  "releaseTime": "2018-12-02T15:14:37Z"
}

होस्ट करने का कॉन्फ़िगरेशन और नए वर्शन की सभी फ़ाइलें अब ऐसी होनी चाहिए लागू किया जा सकता है और आप यूआरएल का इस्तेमाल करके अपनी फ़ाइलें ऐक्सेस कर सकते हैं:

  • https://SITE_ID.web.app/file1
  • https://SITE_ID.web.app/file2
  • https://SITE_ID.web.app/file3

ये फ़ाइलें आपके SITE_ID.firebaseapp.com डोमेन.

आपको यहां दी गई सूची में अपनी नई रिलीज़ भी दिखेगी: होस्टिंग डैशबोर्ड के विकल्प का इस्तेमाल करना चाहिए.