> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# סקירת פונקציות בקאנד

> כתוב לוגיקת בקאנד מותאמת עם פונקציות serverless מבוססות Deno

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      אתה צופה בתיעוד למפתחים
    </div>

    <div className="dev-docs-banner-text">
      תיעוד זה מיועד למפתחים העובדים עם פלטפורמת המפתחים של Base44. למידע על פונקציות בקאנד בעורך האפליקציות, ראה{" "}

      <a href="/Integrations/Using-integrations#activating-backend-functions">
        שימוש באינטגרציות
      </a>

      .
    </div>
  </div>
</div>

פונקציות בקאנד מאפשרות לך להריץ קוד בקאנד מותאם בסביבה מאובטחת ומבודדת. השתמש בפונקציות כדי ליישם לוגיקה עסקית שאסור לה לרוץ בדפדפן, להתחבר ל-APIs של צד שלישי עם אישורים מוגנים, לעבד webhooks, או להרחיב את האפליקציה שלך עם נקודות קצה מותאמות.

פונקציות בקאנד רצות על [Deno](https://docs.deno.com/runtime/), runtime מודרני של TypeScript. קרא לפונקציות מה-frontend שלך [באמצעות ה-SDK](/developers/references/sdk/docs/interfaces/functions), שמטפל באימות אוטומטית. לכל פונקציה יש גם נקודת קצה HTTP משלה עבור webhooks ואינטגרציות חיצוניות.

פונקציות יכולות גם לרוץ אוטומטית באמצעות [automations](/developers/backend/resources/backend-functions/automations). תזמן פונקציות לרוץ בזמנים ספציפיים או הפעל אותן בתגובה לאירועי מסד נתונים כמו יצירה, עדכון או מחיקה של רשומות.

<Note>כל פרויקט תומך במקסימום של 50 פונקציות בקאנד.</Note>

## יצירת פונקציות

צור פונקציות בקאנד כקבצי TypeScript בתיקיית ה-functions של הפרויקט שלך. כברירת מחדל תיקיית ה-functions היא `base44/functions/`, אבל אתה יכול להתאים את הנתיב ב[תצורת הפרויקט שלך](/developers/backend/overview/project-structure#config-jsonc).

כל פונקציה חיה בתיקיית משנה משלה עם קובץ `entry.ts` או `entry.js`:

<Tree>
  <Tree.Folder name="functions" defaultOpen>
    <Tree.Folder name="<function-name>" defaultOpen>
      <Tree.File name="entry.ts" />
    </Tree.Folder>
  </Tree.Folder>
</Tree>

ה-CLI משתמש בנתיב התיקייה יחסית לשורש ה-functions כשם הפונקציה. לדוגמה, `functions/sendWelcomeEmail/entry.ts` יוצר פונקציה בשם `sendWelcomeEmail`. אתה יכול גם לקנן פונקציות בתיקיות משנה לארגון. `functions/email/send/entry.ts` יוצר פונקציה בשם `email/send`.

### הוספת קובץ תצורה

לצרכים מתקדמים כמו שמות פונקציה מותאמים או [automations](/developers/backend/resources/backend-functions/automations), הוסף קובץ `function.jsonc`:

<Tree>
  <Tree.Folder name="functions" defaultOpen>
    <Tree.Folder name="<function-name>" defaultOpen>
      <Tree.File name="entry.ts" />

      <Tree.File name="function.jsonc" />
    </Tree.Folder>
  </Tree.Folder>
</Tree>

קובץ התצורה מגדיר את שם הפונקציה ואת נקודת הכניסה:

```jsonc theme={null}
{
  "name": "sendWelcomeEmail",
  "entry": "entry.ts",
}
```

| Property      | תיאור                                                                                                                                                                                  |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`        | אופציונלי. מזהה ייחודי עבור הפונקציה. בשימוש בעת הפעלה דרך SDK או HTTP. ברירת מחדל היא נתיב התיקייה יחסית לשורש ה-functions.                                                           |
| `entry`       | הקובץ המכיל את קוד הפונקציה.                                                                                                                                                           |
| `automations` | אופציונלי. מערך של תצורות automation להרצת הפונקציה לפי לוח זמנים או בתגובה לאירועי מסד נתונים. ראה [Automations](/developers/backend/resources/backend-functions/automations) לפרטים. |

### entry.ts

קובץ הקוד מכיל את לוגיקת הפונקציה שלך. פונקציות חייבות להשתמש ב-wrapper של `Deno.serve()` ולהחזיר אובייקטי `Response`:

```typescript theme={null}
import { createClientFromRequest } from "npm:@base44/sdk";

Deno.serve(async (req) => {
  try {
    const base44 = createClientFromRequest(req);
    const user = await base44.auth.me();

    if (!user) {
      return Response.json({ error: "Unauthorized" }, { status: 401 });
    }

    const { name } = await req.json();

    return Response.json({
      message: `Hello, ${name || user.full_name}!`,
    });
  } catch (error) {
    return Response.json({ error: error.message }, { status: 500 });
  }
});
```

## בדיקה מקומית

הרץ את הפונקציות שלך מקומית עם [`base44 dev`](/developers/references/cli/commands/dev) כדי לבדוק שינויים מבלי לפרוס. ראה [Local development](/developers/backend/overview/local-dev/local-development-overview) לפרטים.

## פריסת פונקציות

פרוס פונקציות עם [`functions deploy`](/developers/references/cli/commands/functions-deploy) או [`deploy`](/developers/references/cli/commands/deploy) כדי לדחוף את כל משאבי הפרויקט בבת אחת. אתה יכול לפרוס פונקציות ספציפיות לפי שם עם `functions deploy <names...>`, או להשתמש ב-`--force` להסרת פונקציות מרוחקות שלא נמצאו מקומית.

כדי להוריד פונקציות מופצות לפרויקט המקומי שלך, השתמש ב-[`functions pull`](/developers/references/cli/commands/functions-pull). כדי לראות מה מופץ כרגע, השתמש ב-[`functions list`](/developers/references/cli/commands/functions-list).

## קריאה לפונקציות

קרא לפונקציות בקאנד מה-frontend שלך באמצעות ה-SDK, או דרך HTTP עבור webhooks ואינטגרציות חיצוניות.

### דרך ה-SDK

השתמש ב-[`base44.functions.invoke()`](/developers/references/sdk/docs/interfaces/functions) כדי לקרוא לפונקציות מה-frontend שלך. ה-SDK מטפל באימות אוטומטית, ומעביר את אישורי המשתמש הנוכחי לפונקציה שלך.

```javascript theme={null}
import { base44 } from "@/api/base44Client";

const response = await base44.functions.invoke("sendWelcomeEmail", {
  name: "Alice",
});
```

### דרך HTTP

לכל פונקציה מופצת יש נקודת קצה HTTP בכתובת:

```
https://<your-app-domain>/functions/<function-name>
```

זה שימושי עבור:

* **Webhooks:** קבל callbacks משירותים חיצוניים כמו Stripe או GitHub.
* **אינטגרציות חיצוניות:** אפשר למערכות אחרות לתקשר עם האפליקציה שלך.
* **בדיקות:** קרא לפונקציות ישירות עם כלים כמו cURL או Postman.

**דוגמת שימוש**

```bash theme={null}
curl -X POST https://your-app.base44.app/functions/sendWelcomeEmail \
  -H "Content-Type: application/json" \
  -d '{"name": "Alice"}'
```

<Note>
  בעת קריאה לפונקציות דרך HTTP ישיר (כמו cURL או webhooks), אין הקשר משתמש
  מאומת. השתמש ב-`asServiceRole` עבור כל הפעולות במקרים אלה.
</Note>

## שימוש ב-SDK בפונקציות

בתוך פונקציות הבקאנד שלך, אתה יכול לגשת לנתונים, אימות ואינטגרציות של האפליקציה דרך Base44 SDK. השתמש ב-[`createClientFromRequest()`](/developers/references/sdk/docs/functions/createClientFromRequest) כדי ליצור client מהבקשה הנכנסת.

הקשר האימות תלוי באופן שבו הפונקציה נקראה:

* **כאשר נקראה דרך ה-SDK מה-frontend שלך:** האימות של המשתמש מועבר אוטומטית. אתה יכול לגשת למשתמש הנוכחי עם `base44.auth.me()` ולבצע פעולות עם ההרשאות שלו. לפעולות ברמת admin, השתמש ב-[`asServiceRole`](/developers/references/sdk/docs/functions/createClientFromRequest#asservicerole).

* **כאשר נקראה דרך HTTP ישיר (cURL, webhooks, שירותים חיצוניים):** אין משתמש מאומת, אז השתמש ב-`asServiceRole` עבור כל הפעולות.

## חיבור ל-APIs של צד שלישי

פונקציות בקאנד הן אחת מכמה דרכים [להתחבר ל-APIs של צד שלישי](/developers/references/sdk/getting-started/third-party-apis). הן אידיאליות כאשר אתה צריך שליטה מלאה על בקשות או רוצה לאחסן API keys באופן מאובטח כמשתני סביבה. השתמש ב-[`secrets set`](/developers/references/cli/commands/secrets-set) להגדרת משתני סביבה מה-CLI.

## צפייה בלוגים

במהלך [פיתוח מקומי](/developers/backend/overview/local-dev/local-development-overview), פלט הפונקציה מודפס ישירות ל-terminal שלך ללא צורך בפקודת `logs`.

עבור פונקציות מופצות, צפה בלוגים עם פקודת [`logs`](/developers/references/cli/commands/logs). הלוגים כוללים פלט console, שגיאות ומידע על תזמון. אתה יכול לסנן לפי שם פונקציה או טווח זמן. אם אתה משתמש בסוכן קידוד AI, ה-[base44-troubleshooter](/developers/backend/overview/skills#base44-troubleshooter) skill יכול לשלוף ולנתח את הלוגים האלה אוטומטית.

## TypeScript types

ייצר TypeScript types מתצורות הפונקציה שלך כדי לקבל בטיחות סוגים ו-autocomplete עבור שמות פונקציות בקוד ה-SDK שלך. למד עוד על [dynamic types](/developers/references/sdk/getting-started/dynamic-types).

## ראה גם

* [Automations](/developers/backend/resources/backend-functions/automations): תזמן פונקציות או הפעל אותן באירועי מסד נתונים
* [`functions` module](/developers/references/sdk/docs/interfaces/functions): סימוכין SDK להפעלת פונקציות
* [`createClientFromRequest`](/developers/references/sdk/docs/functions/createClientFromRequest): יצירת client בפונקציות בקאנד
* [`functions deploy`](/developers/references/cli/commands/functions-deploy): פרוס פונקציות מקומיות ל-Base44
* [`functions pull`](/developers/references/cli/commands/functions-pull): הורד פונקציות מופצות לפרויקט המקומי שלך
* [`functions list`](/developers/references/cli/commands/functions-list): רשימת כל הפונקציות המופצות
* [`functions delete`](/developers/references/cli/commands/functions-delete): מחק פונקציות מופצות
* [`logs`](/developers/references/cli/commands/logs): צפה בלוגי פונקציות
* [`exec`](/developers/references/cli/commands/exec): בדוק פונקציות בבידוד מסקריפטים עצמאיים

<Note>דף זה תורגם באמצעות בינה מלאכותית. למידע המדויק והעדכני ביותר, עיין ב[גרסה האנגלית](/). </Note>
