ממשק תכנות יישומים

ממשק תכנות יישומים (באנגלית: Application Programming Interface; בראשי תיבות: API) הוא ערכה של ספריות קוד, פקודות, פונקציות ופרוצדורות מן המוכן, בהן יכולים המתכנתים להשתמש בקלות, בלי להידרש לכתוב אותן בעצמם כדי שיוכלו להשתמש במידע של היישום שממנו הם רוצים להשתמש לטובת היישום שלהם.

לדוגמה: חברה קטנה רוצה לפתח יישומון 'מדריך מסעדות' שיציג את המסעדות במפה מבוססת צילומי לוויין, לכן - עליהם להקצות משאבים עצומים לבניית לוויין, שיגורו לחלל וכדומה - משימה עתירת זמן והוצאות כספיות, כשרוב הסיכויים שהתוצר יהיה נחות מזה של גוגל מפות. לעומת זאת, מאחר שיש לאתר המפות של גוגל API, ניתן לנצל את פלטפורמת המפה שלהם למדריך של החברה - מה שנקרא בעגה המקצועית MASHUP.

ככל שה-API מקיף וגמיש יותר כך השליטה והאינטגרציה בין המשתמש לבינם תהיה טובה יותר. חברות משקיעות כסף רב בבנייה ובשדרוג ה-API שלהם על מנת שיהיה יותר קל לשימוש, מתוך הבנה ש-API טוב יותר יזכה ליותר תשומת לב.

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

רוב המתכנתים עושים שימוש בממשקי תכנות יישומים ברוב חלקיה של התוכנה, לבד מתפקודי הליבה שלה.

== Web API ==

הממשק הנפוץ יותר, המאפשר העברת נתונים בין צד שרת לצד לקוח. web API בצד שרת הוא ממשק תוכנה המורכב מנקודת קצה אחת או יותר החשופות למערכת מוגדרת של הודעות בקשה-תגובה (request-response), כאשר הן הבקשות והן התגובות יעברו בדרך כלל בפורמט קריא לאדם - JSON או XML.

נקודות הקצה הן היבטים חשובים של אינטראקציה עם ממשקי web API בצד השרת, מכיוון שהן מציינות היכן נמצאים המשאבים שניתן לגשת אליהם באמצעות תוכנה חיצונית. בדרך כלל הגישה מתבצעת באמצעות URI (כתובת של דפים וקבצים באינטרנט, כמו URL) שאליו נשלחות בקשות ה-HTTP, ומתקבלות התגובות. ממשקי API של אינטרנט יכולים להיות ציבוריים או פרטיים, כאשר לממשקים הפרטיים נדרשת גישה באמצעות access token, מעין סיסמה המאפשרת את זיהוי המשתמש, ככזה הרשאי לגשת ל-API<ref></ref>.

על נקודות הקצה להיות סטטיות, על מנת להבטיח שהתוכנה המקיימת אינטראקציה עם נקודת הקצה תמשיך לתפקד. אם מיקומו של משאב מסוים משתנה (ויחד איתו גם נקודת הקצה), תוכנה שנכתבה בעבר ומסתמכת על המיקום הקודם תישבר, שכן כאשר היא ניגשת למיקום הקודם, המידע הרלוונטי לא חוזר ממנו. מאחר שספקי API בכל זאת נדרשים לעדכן את ממשקי ה-API שלהם באינטרנט, קיימות מערכות ניהול גרסאות ב-URI המצביעות על נקודות קצה ומאפשרות את שינוי המקום מבלי שהתוכנות החיצוניות המסתמכות על הAPI ייפגעו.

מתחלק לשני תקנים עיקריים: REST ו-SOAP.

=== צמיחה והשפעה ===
מספר ממשקי ה-web API גדל בעקביות במהלך השנים האחרונות, כאשר יותר ויותר עסקים מבינים את הזדמנויות הצמיחה הקשורות להפעלת פלטפורמה פתוחה, שכל מפתח יכול ליצור איתה אינטראקציה. פלטפורמת המידע והחדשות ProgrammableWeb מצאה כי למעלה מ-24,000 ממשקי web API היו זמינים ב-2022, לעומת 105 בלבד ב-2005. כיום, רק מעט מיישומי התוכנה/השירותים הגדולים אינם מציעים צורה כלשהי של ממשק web API. כך למשל, כל 100 האתרים המדורגים באתר אלכסה משתמשים בממשקי API או מספק ממשקי API משלהם, והדבר מצביע על היקף ההשפעה של ממשק הweb API על האינטרנט בכללותו<ref></ref>.

== אבטחת מידע ==
תחום ה-API הביא להרחבה של משטח התקיפה שיש להאקרים על אתרים ותשתיות. OWASP פתחו פרויקט מיוחד עבור אבטחת מידע ב-API, ואף נבנה רשימה של 10 בעיות האבטחה הגדולות ב-API<ref></ref>.

לדוגמה, אחת מבעיות האבטחה הנפוצות ביותר ל-API הוא חולשות בפרוטוקול האתר. במידה ולפרוטוקול האתר אין תעודת SSL בתוקף, ממשק ה-API יהיה נתון בסכנה משום שלא תתבצע הצפנה של המידע העובר. 

על מנת ללמוד על עשרת הבעיות הגדולות ב-API, נבנתה מערכת vapi<ref></ref> ואף נכתב מדריך לשימוש בו.

==ראו גם==
*ערכת כלים (מחשוב)
*Web service
*סוואגר (תוכנה)

==קישורים חיצוניים==

* 

== הערות שוליים ==

קטגוריה:תכנות
קטגוריה:תוכנות מערכת
קטגוריה:מונחים בתוכנה