Firebase Hosting REST API מאפשר פריסות פרוגרמטיות וניתנות להתאמה אישית לאתרים המתארחים ב-Firebase שלך. השתמש ב-REST API זה כדי לפרוס תוכן ותצורת אירוח חדשים או מעודכנים.
כחלופה לשימוש ב- Firebase CLI לפריסות, אתה יכול להשתמש ב-Firebase Hosting REST API כדי ליצור באופן תכנותי version
חדשה של נכסים עבור האתר שלך, להעלות קבצים לגרסה ולאחר מכן לפרוס את הגרסה לאתר שלך.
לדוגמה, עם Firebase Hosting REST API, אתה יכול:
תזמון פריס��. על ידי שימוש ב-REST API בשילוב עם עבודת cron, אתה יכול לשנות תוכן שמתארח ב-Firebase בלוח זמנים קבוע (לדוגמה, כדי לפרוס גרסה מיוחדת של חגים או אירועים של התוכן שלך).
שילוב עם כלי מפתחים. אתה יכול ליצור אפשרות בכלי שלך לפרוס את פרויקטי אפליקציית האינטרנט שלך ל-Firebase Hosting באמצעות לחיצה אחת בלבד (לדוגמה, לחיצה על כפתור פריסה בתוך IDE).
פריסה אוטומטית כאשר נוצר תוכן סטטי. כאשר תהליך מייצר תוכן סטטי באופן פרוגרמטי (לדוגמה, תוכן שנוצר על ידי משתמשים כגון ויקי או מאמר חדשותי), אתה יכול לפרוס את התוכן שנוצר כקבצים סטטיים במקום להגיש אותם באופן דינמי. זה חוסך לך כוח מחשוב יקר ומשרת את הקבצים שלך בצורה ניתנת להרחבה יותר.
מדריך זה מתאר תחילה כיצד להפעיל, לאמת ולאשר את ה-API. לאחר מכן, המדריך הזה עובר על דוגמה ליצירת גרסת Firebase Hosting, להעלאת קבצים נדרשים לגרסה, ואז לבסוף לפרוס את הגרסה.
תוכל גם ללמוד עוד על REST API זה בתיעוד המלא של Hosting REST API .
לפני שתתחיל: הפעל את REST API
עליך להפעיל את Firebase Hosting REST API במסוף Google APIs:
פתח את הדף של Firebase Hosting API במסוף Google APIs.
כשתתבקש, בחר בפרויקט Firebase שלך.
לחץ על הפעל בדף Firebase Hosting API.
שלב 1: קבל אסימון גישה לאימות ואישור בקשות API
פרויקטים של Firebase תומכים בחשבונות שירות של Google , שבהם אתה יכול להשתמש כדי לקרוא לממשקי API של שרת Firebase משרת האפליקציות או מהסביבה המהימנה שלך. אם אתה מפתח קוד באופן מקומי או פורס את היישום שלך במקום, אתה יכול להשתמש באישורים שהושגו דרך חשבון שירות זה כדי לאשר בקשות שרת.
כדי לאמת חשבון שירות ולהעניק לו הרשאה לגשת לשירותי Firebase, עליך ליצור קובץ מפתח פרטי בפורמט JSON.
כדי ליצור קובץ מפתח פרטי עבור חשבון השירות שלך:
במסוף Firebase, פתח את הגדרות > חשבונות שירות .
לחץ על צור מפתח פרטי חדש ולאחר מכן אשר על ידי לחיצה על צור מפתח .
אחסן בצורה מאובטחת ��ת קובץ ה-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 .
פִּיתוֹן
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(); }
לאחר שפג תוקפו של אסימון הגישה שלך, שיטת רענון האסימון נקראת באופן אוטומטי כדי לאחזר אסימון גישה מעודכן.
שלב 2: ודא שלפרויקט שלך יש אתר אירוח כברירת מחדל
לפני הפרי��ה הראשונה שלך ל-Firebase Hosting, לפרויקט Firebase שלך חייב להיות SITE
אירוח המוגדר כברירת מחדל.
בדוק אם לפרויקט שלך כבר יש אתר אירוח כברירת מחדל על ידי קריאה לנקודת הקצה
sites.list
.לדוגמה:
פקודת cURL
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ https://firebasehosting.googleapis.com/v1beta1/projects/PROJECT_ID/sites
בקשת HTTPS גולמית
Host: firebasehosting.googleapis.com POST /v1beta1/projects/PROJECT_ID/sites HTTP/1.1 Authorization: Bearer ACCESS_TOKEN Content-Type: application/json
אם לאחד מהאתרים יש
"type": "DEFAULT_SITE"
, אז לפרויקט שלך כבר יש אתר אירוח כברירת מחדל. דלג על המשך שלב זה ועבור לשלב הבא: צור גרסה חדשה עבור האתר שלך .אם אתה מקבל מערך ריק, אז אין לך ברירת מחדל של אתר אירוח. השלם את המשך שלב זה.
החלט על ה-
SITE_ID
עבור אתר האירוח המוגדר כברירת מחדל. זכור את הדברים הבאים כשאתה מחליט עלSITE_ID
זה:SITE_ID
זה משמש ליצירת תת-דומיינים המוגדרים כברירת מחדל של Firebase:SITE_ID .web.app
וSITE_ID .firebaseapp.com
.ל- SITE_ID
יש את הדרישות הבאות:חייבת להיות תווית שם מארח חוקית, כלומר היא לא יכולה להכיל .
,_
, וכו.חייב להכיל 30 תווים או פחות חייב להיות ייחודי עולמי בתוך Firebase
שים לב שלעתים קרובות אנו ממליצים להשתמש במזהה הפרויקט שלך בתור SITE_ID
עבור אתר האירוח המוגדר כברירת מחדל. למד כיצד למצוא את המזהה הזה ב- Search Projects Firebase .צור את אתר האירוח המוגדר כברירת מחדל על ידי קריאה לנקודת הקצה 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 בקשת HTTPS גולמית Host: firebasehosting.googleapis.com POST /v1beta1/projects/PROJECT_ID/sites?siteId=SITE_ID Authorization: Bearer ACCESS_TOKEN Content-Type: application/json קריאת API זו ל- sites.create
מחזירה את ה-JSON הבא:{ "name": "projects/PROJECT_ID/sites/SITE_ID", "defaultUrl": "https://SITE_ID.web.app", "type": "DEFAULT_SITE" }
שלב 3: צור גרסה חדשה עבור האתר שלך
Version
חדשה עבור האתר שלך. בהמשך מדריך זה, תעלה קבצים לגרסה זו, ולאחר מכן תפרוס אותה לאתר שלך.
קבע את ה- SITE_ID עבור האתר שאליו ברצונך לפרוס. התקשר ל- versions.create נקודת קצה באמצעות SITE_ID שלך בשיחה. (אופציונלי) אתה יכול גם להעביר אובייקט תצורה של Firebase Hosting בשיחה, כולל הגדרת כותרת ששומרת את כל הקבצים למשך זמן מוגדר. לדוגמה: פקודת 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 בקשת HTTPS גולמית 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
. תזדקק למזהה הייחודי הזה בכל מדריך זה כדי להתייחס לגרסה הספציפית הזו.
שלב 4: ציין את רשימת הקבצים שברצונך לפרוס
file1
, file2
ו- file3
.
Gzip את הקבצים: gzip file1 && gzip file2 && gzip file3 כעת יש לך שלושה קבצים דחוסים file1.gz
,file2.gz
ו-file3.gz
.קבל את ה-hash SHA256 של כל קובץ דחוס: cat file1.gz | openssl dgst -sha256 66d61f86bb684d0e35f94461c1f9cf4f07a4bb3407bfbd80e518bd44368ff8f4 cat file2.gz | openssl dgst -sha256 490423ebae5dcd6c2df695aea79f1f80555c62e535a2808c8115a6714863d083 cat file3.gz | openssl dgst -sha256 59cae17473d7dd339fe714f4c6c514ab4470757a4fe616dfdb4d81400addf315 כעת יש לך את שלושת הגיבובים SHA256 של שלושת הקבצים הדחוסים. שלח את שלושת הגיבובים האלה בבקשת API לנקודת הקצה versions.populateFiles
. רשום כל hash לפי הנתיב הרצוי עבור הקובץ שהועלה (בדוגמה זו,/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 בקשת HTTPS גולמית 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" }
ה- hash של כל קובץ שצריך להעלות. לדוגמה, בדוגמה זו file1
כבר הועלה בגרסה קודמת, כך שה-hash שלו אינו כלול ברשימתuploadRequiredHashes
.uploadUrl
שהיא ספציפית לגרסה החדשה.
uploadURL
מהתגובה versions.populateFiles
.
שלב 5: העלה קבצים נדרשים
uploadRequiredHashes
מתגובת versions.populateFiles
בשלב הקודם). להעלאות קבצים אלו, תזדקק ל-hashs של הקבצים ול- uploadUrl
מהשלב הקודם.
הוסף לוכסן קדימה ואת ה-hash של הקובץ ל- uploadUrl
כדי ליצור כתובת URL ספציפית לקובץ בפורמט:https://upload-firebasehosting.googleapis.com/upload/sites/ SITE_ID /versions/ VERSION_ID /files/ FILE_HASH
.העלה את כל הקבצים הדרושים אחד אחד (בדוגמה זו, רק file2.gz
ו-file3.gz
) לכתובת ה-URL הספציפית לקובץ באמצעות סדרה של בקשות.לדוגמה, כדי להעלות את הקובץ הדחוס 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 בקשת HTTPS גולמית 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
.
שלב 6: עדכן את מצב הגרסה ל-FINALIZED
versions.populateFiles
, תוכל לעדכן את הסטטוס של הגרסה שלך ל- FINALIZED
.
versions.patch
כאשר שדה status
בבקשת ה-API שלך מוגדר ל- 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
בקשת HTTPS גולמית
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" }
שלב 7: שחרר את הגרסה לפריסה
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
בקשת HTTPS גולמית
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
שלך.