ממשק תכנות יישומים - API
![](https://static.wixstatic.com/media/098ef0ceb8ee4c89a53e3d244c140a71.jpg/v1/fill/w_817,h_567,al_c,q_85,enc_avif,quality_auto/098ef0ceb8ee4c89a53e3d244c140a71.jpg)
כיום הרבה חברות רציניות בעלות אפליקציות או שירותי אינטרנט גלובליים, המכבדת את עצמה,
מחזיקה ספריות קוד אותם היא מנגישה לקהילת המפתחים, על מנת שיעשו בה שימוש בפיתוח שלהם, כשהקוד הוא גמיש, עם פקודות רחבות ונתון להתאמה אישית של השימוש במידע על ידי המתכנת .
למשל, גוגל נותנת למפתחים אפשרויות להשתמש במפה לצרכים שלהם ועוד הרבה. פייסבוק (מידע על לייקים, על הפרופיל וכו'), טוויטר ועוד.
לדוגמה: על מנת שהמשתמש לא יצטרך למלא פרטיו בהרשמה לאתר, ניתן להתחבר דרך פייסבוק והופ.. כל הפרטים שלו נלקחים משם.
שירותים פופולאריים בארץ, ניתן למצוא כדוגמה את פיקוד העורף, שנותן לקבל עידכונים לאפליקציות ואתרים לגבי התראות צבע אדום.
כך גם ניתן לקבל מידע לגבי אוטובוסים ותחבורה, לגבי מצב הבורסה ועוד ועוד.
כמובן כל מפתח משתמש בזה בהתאם לצרכים שלו ולפי האפשרויות שניתנו לו,
בדך כלל המפתח יצטרך להוסיף לקוד את המזהה חשבון שלו (מפתח).
זה כמו מחרוזת ארוכה אשר מהווה אישור שזה משתמש מורשה של גוגל לדוגמה
וכן נותנת את זהות המפתח (למשל, לדעת שהוא שילם כסף במידע והשירות בתשלום).
var apiKey = "HadF4tHfwuH8w1aRDjQpOrg0y0gF3AWm8sRseRznc3K3h6Hh9j2";
הנתונים מועברים בדר"כ בפורמט xml או בפורמט json (ולעיתים גם CSV, למידע טבלאי המופרד בפסיקים).
המעלה בפורמט הראשון (xml), הדומה לשפת האינטרנט html, הוא שבוא ניתן להעביר מידע מורכב יותר, כיוון שכל צומת יכול לכלול מאפיינים.
עם זאת הפורמט השני (json), שהוא פורמט של אובייקטים בשפת java script, שוקל פחות ומהיר יותר.
איך עובד תהליך התקשורת:
הלקוח, במקרה שלנו הדפדפן (בעצם הקוד, html, java-script, ajax), שולח בקשה בתוכנית http (פרוטוקול תקשורת בו מועברים דפים ומידע באינטרנט), על מנת לקבל תשובה מתאימה מהשרת.
הבקשה צריכה לכלול:
1. סוג הבקשה: האם בשיטת GET, לקבל מידע (דרך שורת ה-URL)
או POST, לשלוח מידע (מילוי טופס) וכדומה.
2. כתובת אינטרנט: המפנה לשרת כזה או אחר של חברה כלשהי.
על מנת שנדע לאיזה שרת לבפנות את הבקשה.
3. האם הבקשה תהיה בצורה אסכרונית, זאת אומרת שהיא תנוהל בתהליך נפרד.
תהליך (thread) זה נושא בפני עצמו. זה גוזל משאבים מהמערכת,
אך לעיתים נחוייב להשתמש בו על מנת שהמשתמש לא יחשוב שהאתר נתקע
(במקרה שיקח הרבה זמן להעביר את מידע מהשרת).
4. כותרת הבקשה: מכילה פרטים על הבקשה, כמו באיזה פורמט ואיזה קידוד (לתמיכה בעברית: UTF-8).
5. גוף הבקשה: המידע אותו אני שולח או מבקש (לדוגמה: name="israel" או n=2).
כשיש בקשה כזו, נשתמש בדרך כל בסימון המראה למשתמש שאנחנו ממתינים לתגובה מהשרת,
או פס עם התקדמות, עם התקדמות לפי אחוזים.
(שיתקע באחוז 95%, במידע ואין תגובה, כי אין דרך לדעת באמת מתי תגובת השרת תושלם.
כך שזה אמנם מועיל לחוות משתמש, שרואה זמן המתנה משוער,
אך בעצם במקרה זה, זהו אשליה).
ישנם קודי מצב של השרת הנשלחים כתגובה,
לפיה נדע מה קורה עם הבקשה שלנו.
כל קודד מכיל שלוש ספרות המתחילות בין 1 ל-5.
הנפוצים ביותר הם:
קוד 200 האומר שהבקשה נשלחה בהצלחה,
קוד 404 האומר שהכתובת שהקיש הלקוח אינה קיימת.
בעיקרון סוגי הסטטוס של השרת מחולקים לפי הספרה הראשונה.
100 ואילך: מספק מידע על תהליכים הקוראים בשרת.
200 ואילך: מספק מידע על הגעת המידע ללקוח.
300 ואילך: מספק מידע על העברת הבקשה לכתובת שרת אחרת.
400 ואילך: מספק מידע על שגיאות אצל הלקוח.
500 ואילך: מספק מידע על שגיאות בשרת.
כמו כן, כל תגובה כוללת כותרת וגוף בדומה לכותרת וגוף של בקשה.
HTTP Status Codes:
1xx: Informational - Request received, continuing process
100 Continue
101 Switching Protocols
102 Processing
103-199 Unassigned
2xx: Success - The action was successfully received, understood, and accepted
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
207 Multi-Status
208 Already Reported
209-225 Unassigned
226 IM Used
227-299 Unassigned
3xx: Redirection - Further action must be taken in order to complete the request
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
4xx: Client Error - The request contains bad syntax or cannot be fulfilled
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Timeout
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Payload Too Large
414 URI Too Long
415 Unsupported Media Type
416 Range Not Satisfiable
417 Expectation Failed
418-420 Unassigned
421 Misdirected Request
422 Unprocessable Entity
423 Locked
424 Failed Dependency
425 Unassigned
426 Upgrade Required
427 Unassigned
428 Precondition Required
429 Too Many Requests
430 Unassigned
431 Request Header Fields Too Large
432-499 Unassigned
5xx: Server Error - The server failed to fulfill an apparently valid request
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported
506 Variant Also Negotiates
507 Insufficient Storage
508 Loop Detected
509 Unassigned
510 Not Extended
511 Network Authentication Required
512-599 Unassigned