שים לב לנקודות הבאות:
- פריסת פונקציות אחת בכל פעם אינה מוגבלת ל-50. בקשה יחידה שמחליפה את כל הפונקציות בפרויקט שלך עדיין מוגבלת ל-50.
- לפונקציות בקאנד יש זמן ריצה מקסימלי של 5 דקות, שנאכף באותה דרך בין אם הפונקציה נקראת ישירות, מופעלת על ידי אוטומציה, או נקראת כשלב workflow. בקשות שחורגות מהמגבלה הזו מופסקות.
יצירת פונקציות
צור פונקציות בקאנד כקבצי TypeScript בתיקיית ה-functions של הפרויקט שלך. כברירת מחדל תיקיית ה-functions היאbase44/functions/, אבל אתה יכול להתאים את הנתיב בתצורת הפרויקט שלך.
כל פונקציה חיה בתיקיית משנה משלה עם קובץ entry.ts או entry.js:
functions
<function-name>
entry.ts
functions/sendWelcomeEmail/entry.ts יוצר פונקציה בשם sendWelcomeEmail. אתה יכול גם לקנן פונקציות בתיקיות משנה לארגון. functions/email/send/entry.ts יוצר פונקציה בשם email/send.
הוספת קובץ תצורה
לצרכים מתקדמים כמו שמות פונקציה מותאמים או automations, הוסף קובץfunction.jsonc:
functions
<function-name>
entry.ts
function.jsonc
entry.ts
קובץ הקוד מכיל את לוגיקת הפונקציה שלך. פונקציות חייבות להשתמש ב-wrapper שלDeno.serve() ולהחזיר אובייקטי Response:
מספר קבצים לכל פונקציה
פונקציה לא מוגבלת לקובץentry.ts יחיד. פצל את הלוגיקה למספר קבצים בתוך תיקיית הפונקציה, וייבא אותם עם נתיבים יחסיים. כל קובץ .js, .ts, .json ו-.jsonc בתיקיית הפונקציה נפרס יחד איתה.
functions
process-order
entry.ts
validate.ts
types.ts
שיתוף קוד בין פונקציות
כדי לעשות שימוש חוזר בקוד בין פונקציות, מקם אותו בתיקייהshared בתוך התיקייה base44/.
כשאתה פורס פונקציה, ה-CLI מעלה איתה את התיקייה shared. השרת מאגד רק את הקבצים המשותפים שהפונקציה מייבאת. כל פונקציה נפרסת עם עותק משלה של הקוד המשותף שהיא משתמשת בו. המשמעות:
- כל פונקציה יכולה לייבא מ-
sharedעם נתיב יחסי. - פונקציות שונות עשויות להריץ גרסאות שונות של אותו קובץ משותף. שינוי קובץ משותף ופריסה של פונקציה אחת מעדכנים רק את העותק של אותה פונקציה. השאר שומרות על הגרסה הישנה עד שתפרוס אותן מחדש. כדי להחיל שינוי משותף בכל מקום, הרץ
base44 functions deployללא ארגומנטים. כך כל הפונקציות נפרסות מחדש בבת אחת.
base44
shared
response.ts
functions
greet
entry.ts
farewell
entry.ts
בדיקה מקומית
הרץ את הפונקציות שלך מקומית עםbase44 dev כדי לבדוק שינויים מבלי לפרוס. ראה Local development לפרטים.
פריסת פונקציות
פרוס פונקציות עםfunctions deploy או deploy כדי לדחוף את כל משאבי הפרויקט בבת אחת. אתה יכול לפרוס פונקציות ספציפיות לפי שם עם functions deploy <names...>, או להשתמש ב---force להסרת פונקציות מרוחקות שלא נמצאו מקומית.
כדי להוריד פונקציות מופצות לפרויקט המקומי שלך, השתמש ב-functions pull. כדי לראות מה מופץ כרגע, השתמש ב-functions list.
קריאה לפונקציות
קרא לפונקציות בקאנד מה-frontend שלך באמצעות ה-SDK, או דרך HTTP עבור webhooks ואינטגרציות חיצוניות.דרך ה-SDK
השתמש ב-base44.functions.invoke() כדי לקרוא לפונקציות מה-frontend שלך. ה-SDK מטפל באימות אוטומטית, ומעביר את אישורי המשתמש הנוכחי לפונקציה שלך.
דרך HTTP
לכל פונקציה מופצת יש נקודת קצה HTTP בכתובת:- Webhooks: קבל callbacks משירותים חיצוניים כמו Stripe או GitHub.
- אינטגרציות חיצוניות: אפשר למערכות אחרות לתקשר עם האפליקציה שלך.
- בדיקות: קרא לפונקציות ישירות עם כלים כמו cURL או Postman.
בעת קריאה לפונקציות דרך HTTP ישיר (כמו cURL או webhooks), אין הקשר משתמש
מאומת. השתמש ב-
asServiceRole עבור כל הפעולות במקרים אלה.שימוש ב-SDK בפונקציות
בתוך פונקציות הבקאנד שלך, אתה יכול לגשת לנתונים, אימות ואינטגרציות של האפליקציה דרך Base44 SDK. השתמש ב-createClientFromRequest() כדי ליצור client מהבקשה הנכנסת.
הקשר האימות תלוי באופן שבו הפונקציה נקראה:
-
כאשר נקראה דרך ה-SDK מה-frontend שלך: האימות של המשתמש מועבר אוטומטית. אתה יכול לגשת למשתמש הנוכחי עם
base44.auth.me()ולבצע פעולות עם ההרשאות שלו. לפעולות ברמת admin, השתמש ב-asServiceRole. -
כאשר נקראה דרך HTTP ישיר (cURL, webhooks, שירותים חיצוניים): אין משתמש מאומת, אז השתמש ב-
asServiceRoleעבור כל הפעולות.
Runtime API
Base44 מספקת מודול מובנהbase44:runtime עם כלי פלטפורמה לפונקציות שלך. ייבא אותו ישירות, ללא התקנה:
waitUntil(): שומר את הפונקציה פעילה כדי לסיים עבודת רקע אחרי שהחזרת תגובה.secrets: קורא את ה-secrets של האפליקציה בזמן ריצה עםsecrets.get().
הרצת עבודת רקע אחרי התגובה
השתמש ב-waitUntil() כדי לשמור את הפונקציה פעילה לעבודת רקע אחרי שהחזרת תגובה. העבר לה promise, והפונקציה תמשיך לרוץ עד שה-promise יסתיים. כך תוכל להגיב מהר ולסיים אחר כך עבודה כמו רישום לוגים, התראות או webhooks יוצאים.
waitUntil() מחזירה את אותו promise שהעברת. לכן תוכל להרכיב אותו או להמתין לו בהמשך אותו handler.
עבודת רקע מתבצעת במאמץ מיטבי. אין הבטחה שתסתיים או שתנוסה שוב. אל תסתמך עליה לפעולות קריטיות שאסור שיאבדו.
קריאת secrets
השתמש ב-secrets.get() כדי לקרוא את משתני הסביבה של האפליקציה בזמן ריצה. היא מחזירה את הערך כמחרוזת, או undefined כשה-secret לא מוגדר:
secrets.get() בתוך ה-handler, ולא ברמה העליונה של המודול. ה-secrets נפתרים לכל בקשה בנפרד. לכן קריאה בזמן טעינת המודול, לפני שבקשה כלשהי רצה, מחזירה undefined.
הגדר secrets מה-CLI עם secrets set.
חיבור ל-APIs של צד שלישי
פונקציות בקאנד הן אחת מכמה דרכים להתחבר ל-APIs של צד שלישי. הן אידיאליות כאשר אתה צריך שליטה מלאה על בקשות או רוצה לאחסן API keys באופן מאובטח כמשתני סביבה. השתמש ב-secrets set להגדרת משתני סביבה מה-CLI.
צפייה בלוגים
במהלך פיתוח מקומי, פלט הפונקציה מודפס ישירות ל-terminal שלך ללא צורך בפקודתlogs.
עבור פונקציות מופצות, צפה בלוגים עם פקודת logs. הלוגים כוללים פלט console, שגיאות ומידע על תזמון. אתה יכול לסנן לפי שם פונקציה או טווח זמן. אם אתה משתמש בסוכן קידוד AI, ה-base44-troubleshooter skill יכול לשלוף ולנתח את הלוגים האלה אוטומטית.
TypeScript types
ייצר TypeScript types מתצורות הפונקציה שלך כדי לקבל בטיחות סוגים ו-autocomplete עבור שמות פונקציות בקוד ה-SDK שלך. למד עוד על dynamic types.ראה גם
- Automations: תזמן פונקציות או הפעל אותן באירועי מסד נתונים
functionsmodule: סימוכין SDK להפעלת פונקציותcreateClientFromRequest: יצירת client בפונקציות בקאנדfunctions deploy: פרוס פונקציות מקומיות ל-Base44functions pull: הורד פונקציות מופצות לפרויקט המקומי שלךfunctions list: רשימת כל הפונקציות המופצותfunctions delete: מחק פונקציות מופצותlogs: צפה בלוגי פונקציותexec: בדוק פונקציות בבידוד מסקריפטים עצמאיים
דף זה תורגם באמצעות AI. למידע המדויק והעדכני ביותר, עיין בגרסה האנגלית.