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: צור גרסה חדשה עבור האתר שלך
קריאת ה-API הראשונה שלך היא ליצור 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" } }] } }
קריאת API זו ל- 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: ציין את רשימת הקבצים שברצונך לפרוס
כעת, לאחר שיש לך את מזהה הגרסה החדש שלך, עליך לומר ל-Firebase Hosting אילו קבצים ברצונך לפרוס בסופו של דבר בגרסה החדשה הזו.
שים לב שלאירוח יש מגבלת גודל מקסימלית של 2 GB עבור קבצים בודדים.
ממשק API זה מחייב לזהות קבצים באמצעות hash SHA256. לכן, לפני שתוכל לבצע את קריאת ה-API, תחילה תצטרך לחשב hash עבור כל קובץ סטטי על ידי Gzipping של הקבצים ואז לקחת את ה-hash SHA256 של כל קובץ שדחוס לאחרונה.
בהמשך הדוגמה שלנו, נניח שאתה רוצה לפרוס שלושה קבצים בגרסה החדשה: 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" } }
קריאת API זו ל- 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
שהיא ספציפית לגרסה החדשה.
בשלב הבא להעלאת שני הקבצים החדשים, תזדקק ל-hash ולכתובת ה- 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
העלאות מוצלחות מחזירות תגובת HTTPS 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"}
קריאת API זו ל- 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
קריאת API זו ל- 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
קבצים אלה נגישים גם בכתובות URL המשויכות לדומיין SITE_ID .firebaseapp.com
שלך.
אתה יכול גם לראות את המהדורה החדשה שלך ברשימה בלוח המחוונים של אירוח של מסוף Firebase.