ראשי תיבות בממשקי API ופרוטוקולים - מדריך מלא¶
עולם ה-API מלא בראשי תיבות ובשמות פרוטוקולים שזורקים עליכם כאילו כולם כבר מכירים אותם. REST, gRPC, JWT, CORS - כל מי שקורא תיעוד טכני נתקל בהם כל הזמן, אבל לא תמיד מסבירים מה זה בעצם אומר. במדריך הזה ריכזנו את המונחים הכי חשובים בעולם ה-API והפרוטוקולים, עם הסבר פשוט וברור לכל אחד מהם, כדי שתוכלו להפסיק לנחש ולהתחיל להבין.
סגנונות תכנון ממשקים¶
הסגנון REST (Representational State Transfer) הוא הגישה הנפוצה ביותר היום לבניית ממשקי API. הרעיון הוא לתאר כל משאב בכתובת URL משלו ולהשתמש בפעולות HTTP הרגילות כמו GET, POST ו-DELETE כדי לעבוד איתו. לדוגמה, קריאה ל-GET /users/5 מחזירה את פרטי המשתמש עם המזהה 5.
הפרוטוקול SOAP (Simple Object Access Protocol) הוא סטנדרט ישן ומחמיר יותר מ-REST, שמעביר הודעות בפורמט XML קבוע מראש. הוא עדיין נפוץ בעולמות ארגוניים ופיננסיים ששמרו על מערכות ותיקות, אבל ברוב הפרויקטים החדשים נוטשים אותו לטובת REST או GraphQL.
השפה GraphQL מאפשרת ללקוח לבקש בדיוק את השדות שהוא צריך, ולא יותר, בקריאה אחת בלבד. זה פותר בעיה נפוצה ב-REST שבה צריך לפנות לכמה נקודות קצה כדי לאסוף את כל המידע. גוגל, פייסבוק וגיטהאב משתמשים ב-GraphQL בממשקי ה-API הציבוריים שלהם.
המסגרת gRPC שפיתחה גוגל מאפשרת לשירותים לתקשר ביניהם במהירות גבוהה, באמצעות פורמט בינארי בשם Protocol Buffers במקום JSON. היא פופולרית מאוד בתקשורת בין מיקרו-שירותים בתוך אותה מערכת, כי היא מהירה משמעותית מ-REST רגיל.
המונח RPC (Remote Procedure Call) מתאר גישה כללית שבה תוכנית קוראת לפונקציה שרצה על מחשב אחר, כאילו היא פונקציה מקומית רגילה. gRPC הוא בעצם מימוש מודרני של הרעיון הזה.
הWebhook הוא דרך שבה שרת אחד מודיע לשרת אחר על אירוע, בלי שהצד השני יצטרך לשאול כל הזמן אם קרה משהו חדש. לדוגמה, שירות תשלומים יכול לשלוח Webhook לאתר שלכם ברגע שעסקה הושלמה בהצלחה.
פורמטים להעברת נתונים¶
הפורמט JSON (JavaScript Object Notation) הוא הדרך הנפוצה ביותר היום לייצג נתונים מובנים בממשקי API. הוא קל לקריאה, קל לכתיבה, וכמעט כל שפות התכנות יודעות לעבוד איתו בלי מאמץ. מבנה בסיסי נראה כך: {"name": "דנה", "age": 28}.
הפורמט XML (Extensible Markup Language) ותיק יותר מ-JSON ומבוסס על תגיות שדומות ל-HTML. הוא מפורט יותר ומכביד על הקריאה, אבל עדיין בשימוש במערכות ישנות ובפרוטוקולים כמו SOAP.
אבטחה, אימות והרשאות¶
HTTP הוא הפרוטוקול הבסיסי שדרכו דפדפנים ושרתים מדברים ביניהם, וHTTPS הוא אותו פרוטוקול בדיוק עם שכבת הצפנה מעליו. כל אתר שמעביר מידע רגיש, כמו סיסמאות או פרטי אשראי, חייב לרוץ על HTTPS.
הפרוטוקול TLS (Transport Layer Security) הוא זה שמצפין את התקשורת ב-HTTPS, והSSL (Secure Sockets Layer) הוא הגרסה הישנה שלו שכבר לא בשימוש בפועל, אבל השם עדיין נשאר בשפה היומיומית. כשאתם רואים מנעול קטן ליד כתובת האתר בדפדפן, זה אומר שהחיבור מוצפן באמצעות TLS.
הפרוטוקול OAuth מאפשר לאתר אחד לקבל הרשאה מוגבלת לפעול בשם המשתמש באתר אחר, בלי שהמשתמש ייתן לו את הסיסמה שלו בכלל. כשאתם מתחברים לאתר עם כפתור "התחברות עם גוגל", זה OAuth בפעולה.
JWT (JSON Web Token) הוא אסימון קטן שמכיל מידע על המשתמש בצורה חתומה דיגיטלית, שהשרת יכול לאמת בלי לפנות למסד נתונים בכל בקשה. הרבה אתרים משתמשים ב-JWT כדי לזהות משתמשים מחוברים לאורך זמן.
CORS (Cross-Origin Resource Sharing) הוא מנגנון אבטחה בדפדפנים שקובע אילו אתרים מותר להם לבקש נתונים משרת שנמצא בדומיין אחר. אם ניסיתם פעם לקרוא ל-API מקוד JavaScript וקיבלתם שגיאת CORS, זה בדיוק המנגנון הזה שחסם אתכם.
מפתח API Key הוא מחרוזת ייחודית שמזהה מי שולח את הבקשה לשרת, ומשמשת בעיקר למעקב ולהגבלת שימוש, לא תמיד לאבטחה חזקה. ספקי שירות רבים דורשים API Key בכל בקשה כדי לדעת איזה חשבון להריץ.
הפרוטוקול SSH (Secure Shell) מאפשר להתחבר מרחוק למחשב או לשרת ולהריץ עליו פקודות, בצורה מוצפנת ומאובטחת. מפתחים משתמשים ב-SSH כל הזמן כדי להתחבר לשרתים ולנהל אותם מהטרמינל.
פרוטוקולי תקשורת בסיסיים¶
TCP/IP הוא צמד הפרוטוקולים שעליו בנוי כל האינטרנט. IP אחראי על מציאת הדרך בין מחשבים ברשת, ו-TCP דואג שהנתונים יגיעו שלמים ובסדר הנכון. HTTP, שעליו בנויים רוב ממשקי ה-API, רץ מעל TCP/IP.
פרוטוקול WebSocket פותח חיבור פתוח ורציף בין הלקוח לשרת, שמאפשר לשני הצדדים לשלוח הודעות בכל רגע בלי לפתוח בקשה חדשה בכל פעם. הוא מתאים מאוד לצ'אטים חיים ולעדכוני מחירים בזמן אמת.
הפרוטוקול FTP (File Transfer Protocol) משמש להעברת קבצים בין מחשבים דרך הרשת. הוא עדיין נפוץ בהעלאת קבצים לשרתי אחסון, אם כי כיום נהוג להשתמש בגרסה מוצפנת שלו בשם SFTP.
פרוטוקול SMTP (Simple Mail Transfer Protocol) אחראי על שליחת הודעות דואר אלקטרוני בין שרתים. כשאתם משתמשים בשירות כמו SendGrid כדי לשלוח מיילים אוטומטיים מהאתר שלכם, הוא עושה זאת דרך SMTP.
מערכת DNS (Domain Name System) מתרגמת שמות דומיין קריאים לבני אדם, כמו amittech.dev, לכתובות IP שהמחשבים בפועל מבינים. בלי DNS הייתם צריכים לזכור מספרים במקום כתובות אתרים.
מושגים נוספים בעבודה יומיומית עם API¶
הגבלת קצב (Rate Limiting) היא מנגנון שמגביל כמה בקשות מותר לשלוח לשרת בפרק זמן נתון, כדי למנוע עומס יתר או ניצול לרעה. הרבה ממשקי API מחזירים שגיאת 429 כשחורגים מהמכסה שהוגדרה.
נקודת קצה (Endpoint) היא כתובת URL ספציפית שדרכה אפשר לפנות לפעולה מסוימת ב-API, כמו /users או /orders/12. כל API בנוי מכמה נקודות קצה, וכל אחת מהן אחראית על משאב או פעולה אחרת.
אידמפוטנטיות (Idempotency) היא תכונה של פעולה שאפשר לבצע אותה כמה פעמים ברצף ולקבל בכל פעם את אותה תוצאה, בלי תופעות לוואי נוספות. לדוגמה, בקשת DELETE שמוחקת משתמש היא אידמפוטנטית, כי גם אם תשלחו אותה פעמיים, התוצאה הסופית זהה.
אם אתם רוצים להעמיק ולא רק להכיר את המונחים אלא גם לבנות API בעצמכם, קורס הצד שרת החינמי שלנו, שכולל פרק שלם על פיתוח API ילווה אתכם צעד אחר צעד.
יש עוד מונחים שנתקלתם בהם ולא היה לכם ברור מה הם אומרים? ספרו לנו בקהילה, ואולי המדריך הבא כבר יענה בדיוק על זה.