1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [סמינר] [המבוא של מתכנת לAPIs] 2 00:00:02,480 --> 00:00:04,059 [בילי Janitsch] [אוניברסיטת הרווארד] [טומי MacWilliam] 3 00:00:04,059 --> 00:00:08,220 [זה CS50.] [CS50.TV] 4 00:00:08,220 --> 00:00:12,100 >> היי, כולם, אני בילי, והיום אני הולך לדבר על API, 5 00:00:12,100 --> 00:00:15,220 או ממשקי תכנות יישומים, 6 00:00:15,220 --> 00:00:20,040 במיוחד בהקשר של CS50 עבודות גמר ודברים מהסוג הזה. 7 00:00:20,040 --> 00:00:22,490 באופן כללי מה הוא API? 8 00:00:22,490 --> 00:00:25,530 במובן רחב ביותר, זה סוג של אדם באמצע שמאפשר 2 חתיכות 9 00:00:25,530 --> 00:00:28,610 של תוכנה כדי לתקשר אחד עם השני. 10 00:00:28,610 --> 00:00:32,530 זה סוג של הגדרה רחבה מאוד והוא לא כל כך רלוונטי למה שאנחנו מסתכלים. 11 00:00:32,530 --> 00:00:35,450 מה שאנחנו באמת רוצים הוא איזשהו אמצע קרקע שימושית 12 00:00:35,450 --> 00:00:40,570 כדי לתקשר עם איזה מסד נתונים כלשהו. 13 00:00:40,570 --> 00:00:43,310 >> הנה תרשים, ובעצם הרעיון הוא ש 14 00:00:43,310 --> 00:00:46,790 אנחנו יישום, ואנחנו רוצים לקבל נתונים מבסיס נתונים, 15 00:00:46,790 --> 00:00:49,570 אבל אנחנו לא רוצים לתשאל את מסד הנתונים באופן ישיר. 16 00:00:49,570 --> 00:00:52,710 במקום שאנחנו רוצים לעבור את זה סוג של איש באמצע, ה-API. 17 00:00:52,710 --> 00:00:55,440 הרעיון מאחורי זה הוא מספרים 2 ו 3 בתרשים 18 00:00:55,440 --> 00:00:57,750 שניהם הולכים להיות מאוד מסובך ומבולגן. 19 00:00:57,750 --> 00:00:59,960 במילים אחרות, כאשר ה-API היא שאילתא מסד הנתונים, 20 00:00:59,960 --> 00:01:03,300 זה כנראה הולך להיות באמצעות טבלאות SQL וכל דברים מהסוג הזה, 21 00:01:03,300 --> 00:01:05,489 ולמדנו קצת על זה בCS50, אבל בסך הכל, 22 00:01:05,489 --> 00:01:07,590 שמתם לב שזה קצת כאב. 23 00:01:07,590 --> 00:01:10,590 זה נהיה מאוד מאוד מסובך ומבולגן, במיוחד כאשר אתה עושה 24 00:01:10,590 --> 00:01:12,530 שאילתות מורכבות ודברים מסוג זה. 25 00:01:12,530 --> 00:01:15,960 >> מה שאנחנו באמת רוצים הוא איזושהי דרך יעילה ופשוטה 26 00:01:15,960 --> 00:01:19,780 כדי לקבל את הנתונים, וזה הרעיון שעומד מאחורי המספרים 1 ו 4 בתרשים. 27 00:01:19,780 --> 00:01:23,600 במילים אחרות, אנחנו רוצים באמת דרך פשוטה להגיד לי API מה להביא לנו 28 00:01:23,600 --> 00:01:27,760 ודרך ממש פשוטה כדי לקבל את הנתונים בחזרה. 29 00:01:27,760 --> 00:01:33,020 יש דרך מרכזית אחת שנתונים אלה בדרך כלל שלחו וקבלו, 30 00:01:33,020 --> 00:01:36,490 אשר JSON, או סימון אובייקט JavaScript. 31 00:01:36,490 --> 00:01:40,370 זה יכול להשתנות מעט ככל איך אתה שולח בקשה ל-API. 32 00:01:40,370 --> 00:01:43,210 במילים אחרות, אם אתה רוצה קצת כמות מסוימת של נתונים, 33 00:01:43,210 --> 00:01:46,670 איך אתה אומר API כדי לקבל נתונים יכולים להשתנות מעט. 34 00:01:46,670 --> 00:01:49,210 בדרך כלל זה כרוך בעשייה כלשהי בקשת רשת. 35 00:01:49,210 --> 00:01:53,130 במילים אחרות, גישה לסוג מסוים של כתובת אתר שעומד לספר API 36 00:01:53,130 --> 00:01:56,190 בדיוק מה שאתה רוצה, אבל את הנתונים כמעט תמיד נשלחו בחזרה, 37 00:01:56,190 --> 00:01:59,530 במילים אחרות, מספר 4 בJSON. 38 00:01:59,530 --> 00:02:01,030 >> מה JSON בדיוק? 39 00:02:01,030 --> 00:02:03,030 כפי שאמרתי, סימון אובייקט JavaScript. 40 00:02:03,030 --> 00:02:07,090 זה בעצם התקן האוניברסלי להעברה וקבלת נתונים. 41 00:02:07,090 --> 00:02:11,410 הרעיון הוא שיש לך 3 קטגוריות אלה של דברים. 42 00:02:11,410 --> 00:02:13,540 יש לך מערכים, hashmaps ופרימיטיבים. 43 00:02:13,540 --> 00:02:16,580 מערכים וhashmaps שבדקתם קצת בCS50, 44 00:02:16,580 --> 00:02:19,870 אבל אתה סוג של קבלת תחושה מאוד קפדנית של מה שהם. 45 00:02:19,870 --> 00:02:22,780 במילים אחרות, עם מערכים שאתה יודע שהם מקלידים מאוגדים, 46 00:02:22,780 --> 00:02:26,560 אז יש לך סוג אחד של סוג שהולך לאורך כל המערך בלבד. 47 00:02:26,560 --> 00:02:29,310 JSON הוא הרבה יותר קל עם דברים מהסוג הזה. 48 00:02:29,310 --> 00:02:33,590 בעיקרון הרעיון הוא שאתה בונה אובייקט זה, 49 00:02:33,590 --> 00:02:36,270 שיכול להיות מורכב מכל אחד מהדברים האלה 3 50 00:02:36,270 --> 00:02:39,470 ויכול להיות מורכב מאלה מרובים שלהם, והם יכולים להיות מקוננים. 51 00:02:39,470 --> 00:02:42,110 >> הסוג של כאן בדוגמה של JSON, 52 00:02:42,110 --> 00:02:47,910 אשר הסוגריים המסולסלים האלה כאן מייצגים HashMap, 53 00:02:47,910 --> 00:02:51,400 וHashMap הוא בעצם מיפוי מסוג כלשהו של מפתח 54 00:02:51,400 --> 00:02:53,340 לאיזשהו ערך. 55 00:02:53,340 --> 00:02:56,440 אתה רואה כאן שיש לנו את מפתח הנכסים, 56 00:02:56,440 --> 00:02:59,600 וזה מיפוי גבי מערך, שכל העניין הזה. 57 00:02:59,600 --> 00:03:04,120 אנו רואים אלמנט נוסף HashMap, שהוא isAwesome מפתח זה, 58 00:03:04,120 --> 00:03:07,370 שהמפות לערך ראשוני של אמיתי, ובמילים אחרות, בוליאני. 59 00:03:07,370 --> 00:03:09,420 הפרימיטיבים יכולים להיות מחרוזות. הם יכולים להיות שלמים. 60 00:03:09,420 --> 00:03:11,960 הם יכולים להיות bools, משהו כזה. 61 00:03:11,960 --> 00:03:18,410 ואתה רואה את התוכן של מערך זה שנקודתי מאפיינים ליש 2 מחרוזות בזה, 62 00:03:18,410 --> 00:03:20,050 עצמי דומה ונפלא. 63 00:03:20,050 --> 00:03:27,410 אלה 2 מאפיינים של JSON, ואנו רואים שJSON הוא מדהים. 64 00:03:27,410 --> 00:03:30,060 להסתכל על זה קצת יותר לעומק אני הולך לבנות 65 00:03:30,060 --> 00:03:32,870 דוגמה מורכבת יותר של JSON כאן. 66 00:03:32,870 --> 00:03:37,000 >> בואו נתחיל עם מערך, למשל, פשוט מערך ריק. 67 00:03:37,000 --> 00:03:39,180 אבל זה סוג של משעמם, אז אנחנו הולכים למלא אותו קצת, 68 00:03:39,180 --> 00:03:43,420 וכפי שאמרתי, במערכי JSON הם סוג כריכה, 69 00:03:43,420 --> 00:03:46,400 כך אנחנו גם יכולים להיות מחרוזת כאן, שהוא היי, 70 00:03:46,400 --> 00:03:49,330 וזה אלמנט נוסף שהמערך. 71 00:03:49,330 --> 00:03:53,450 וכמו כן, אנו יכולים להוסיף hashmapping כאן, שהוא הולך להיות כמה מיפויים. 72 00:03:53,450 --> 00:04:00,470 זה הולך להיות מיפוי משם למחרוזת בילי. 73 00:04:00,470 --> 00:04:04,590 יש לנו מיפוי משם לבילי, ויש לנו מיפוי של 74 00:04:04,590 --> 00:04:10,860 הצבע אהוב לכחול. 75 00:04:10,860 --> 00:04:12,700 זה בעצם דוגמה טובה לJSON. 76 00:04:12,700 --> 00:04:18,160 זה סוג של מקבל לתוך-אופס, צריך פסיק שם, על כל חלקיו השונים שלו. 77 00:04:18,160 --> 00:04:21,140 שוב, זה לא קשור בכלל להקליד, כך שאתה יכול להיות כל סוג של סוגים 78 00:04:21,140 --> 00:04:24,710 בתוך מה שאתה רוצה, והרעיון הוא שזה עצמי דומה. 79 00:04:24,710 --> 00:04:28,830 במילים אחרות, עכשיו זה משהו שאובייקט JSON, כפי שהוא כל העניין הזה, 80 00:04:28,830 --> 00:04:33,200 כהוא בדיוק זה, כך שאתה יכול להיות פרימיטיבי להיות אובייקט, 81 00:04:33,200 --> 00:04:35,680 מערך להיות אובייקט או HashMap להיות אובייקט. 82 00:04:35,680 --> 00:04:40,270 >> כפי שאתה יכול לראות סוג של, JSON הוא ממש ממש שימושי בכך שהוא כל כך מגוון. 83 00:04:40,270 --> 00:04:45,860 אתה יכול לקבל את כל נתונים אפשריים שניתן להעלות על דעת שמאוחסנת בJSON. 84 00:04:45,860 --> 00:04:47,900 זה הופך אותו לשפה באמת נחמדה להשתמש עם APIs 85 00:04:47,900 --> 00:04:50,770 כי זה פחות או יותר אומר שלא משנה מה נתונים שאתה רוצה 86 00:04:50,770 --> 00:04:54,270 יש הולך להיות איזו דרך לקבל אותו בחזרה בJSON. 87 00:04:54,270 --> 00:04:58,600 כמה מאפיינים שהופכים את JSON טוב במיוחד לדברים מהסוג הזה. 88 00:04:58,600 --> 00:05:02,270 כפי שניתן לראות, בהשוואה להרבה דברים שאתה כבר עובד עם בCS50 89 00:05:02,270 --> 00:05:06,040 זה יחסית מאוד קל לקריאה וגם קל מאוד לכתוב. 90 00:05:06,040 --> 00:05:09,700 אתה יכול לשנן את זה אם אתה רוצה, כמו שאני עושה שבדוגמה, 91 00:05:09,700 --> 00:05:12,990 אשר נותן לך גרסה נחמדה, יפה שאתה יכול לראות ממש טוב. 92 00:05:12,990 --> 00:05:17,150 אבל מעבר לכך, זה גם קל לקריאה וכתיבה למחשב. 93 00:05:17,150 --> 00:05:19,870 במילים אחרות, זה קל לנתח וקל לקידוד, 94 00:05:19,870 --> 00:05:23,820 מה שאומר שזה די מהר ככל שקרא את הנתונים הוא מודאג, 95 00:05:23,820 --> 00:05:26,460 וJSON יכול להיות שנוצר ממש במהירות. 96 00:05:26,460 --> 00:05:30,300 >> זה גם מאוד קל לגשת לחלקים שונים של JSON ודברים מסוג זה. 97 00:05:30,300 --> 00:05:33,320 זה נחמד, ויתר על כן, עובדה שזה עצמי דומה, 98 00:05:33,320 --> 00:05:36,090 במילים אחרות, העובדה שאתה יכול להיות בתוך JSON JSON בתוך JSON 99 00:05:36,090 --> 00:05:40,040 ממש נחמד לאחסון נתונים. 100 00:05:40,040 --> 00:05:45,490 חלק אחר שהוא בדרך כלל באמת שימושי בעבודה עם ממשקי API הוא jQuery. 101 00:05:45,490 --> 00:05:49,290 אתה למדת קצת JavaScript, שהיא דרך נחמדה 102 00:05:49,290 --> 00:05:53,710 כדי לתפעל HTML ו-CSS בתוך אתר. 103 00:05:53,710 --> 00:05:57,190 אבל זה יכול להיות סוג של כאב לקוד ב-JavaScript הרגיל, 104 00:05:57,190 --> 00:05:59,810 בעיקר בגלל JavaScript היא באמת שפה מפורטת. 105 00:05:59,810 --> 00:06:03,020 אתה צריך ללמוד הרבה תחביר, ורק כדי לעשות את דברים פשוטים מאוד 106 00:06:03,020 --> 00:06:07,590 זה לוקח הרבה קוד, כך jQuery היא ספריית JavaScript. 107 00:06:07,590 --> 00:06:09,800 במילים אחרות, זה קובץ JavaScript שאתה יכול לטעון 108 00:06:09,800 --> 00:06:12,730 ולאחר מכן להשתמש בפונקציות jQuery לעשות דברים מסוימים. 109 00:06:12,730 --> 00:06:15,670 וjQuery בעצם עושה את החיים הרבה יותר קלים. 110 00:06:15,670 --> 00:06:20,390 זה מפשט את מה שהייתה מוריד מאה קווים ב-JavaScript לכמה שורות בjQuery. 111 00:06:20,390 --> 00:06:24,430 >> זה שימושי במיוחד אם אתה משתמש בממשקי API כי בדרך כלל 112 00:06:24,430 --> 00:06:27,600 איך אתה תהיה גישה לממשקי API היא על ידי הגשת בקשות AJAX, 113 00:06:27,600 --> 00:06:30,130 ואני מאמין שדוד לא הזכיר בהרצאה שבקשות AJAX 114 00:06:30,130 --> 00:06:33,120 בדרך כלל כשאתה עושה בקשת רשת לאיזשהו שרת 115 00:06:33,120 --> 00:06:37,760 ומקבל בחזרה איזה נתונים ועדכון דף באופן מיידי. 116 00:06:37,760 --> 00:06:41,840 ואילו במישור JavaScript שייקח את המספרים מטורפים של קווים 117 00:06:41,840 --> 00:06:44,620 כדי לאמת את כל הכותרות ולעשות את כל דברים מהסוג הזה, 118 00:06:44,620 --> 00:06:46,810 jQuery יש תפקיד באמת פשוט שנקרא AJAX, 119 00:06:46,810 --> 00:06:51,760 וכל מה שאתה צריך לעשות הוא לתת בAJAX הפרמטרים שברצונך לתת API, 120 00:06:51,760 --> 00:06:56,830 מיקומו של ה-API וכל סוג נוסף של אפשרויות שברצונך להגדיר. 121 00:06:56,830 --> 00:07:02,480 זה באמת, באמת נחמד ושימושי מאוד לדברים מהסוג הזה. 122 00:07:02,480 --> 00:07:06,970 זה כל מה שאנחנו צריכים כדי להתחיל לקבל את ידינו מלוכלכות בממשקי API. 123 00:07:06,970 --> 00:07:10,220 >> אני הולך להעלות כמה דוגמאות ולחקור את המאפיינים השונים שלהם 124 00:07:10,220 --> 00:07:13,150 ומדוע הם שימושיים עבור סוגים שונים של דברים. 125 00:07:13,150 --> 00:07:15,570 הדבר הראשון שאני ממש אראה לך משהו שאני עובד על 126 00:07:15,570 --> 00:07:18,310 במעבדת המחקר שלי, שהוא מציג Ngram, 127 00:07:18,310 --> 00:07:23,270 ובעצם הרעיון של מציג Ngram הוא שאתה יכול לחפש איזה מילה 128 00:07:23,270 --> 00:07:28,840 או ביטוי ולראות כמה פעמים הוא הופיע בקבוצה מסוימת של טקסט לאורך זמן. 129 00:07:28,840 --> 00:07:33,160 דוגמה זו הנה מערך נתונים זה של תינוקות 130 00:07:33,160 --> 00:07:36,480 שנולדו בניו יורק בין שנתי 1920 ו 2000. 131 00:07:36,480 --> 00:07:40,090 אנחנו יכולים לחפש, למשל, לשם ג'ניפר, 132 00:07:40,090 --> 00:07:44,400 ואנחנו רואים ש-1960 מראש זה באמת לא היה בשימוש כל כך הרבה, 133 00:07:44,400 --> 00:07:48,900 ואז כמו שאנחנו נכנסים לשנים מאוחרות יותר זה הופך להיות נפוץ יותר ויותר. 134 00:07:48,900 --> 00:07:53,680 אנחנו גם יכולים לעשות השוואות, אז אם נשווה לג'ניפר, למשל, תומס, 135 00:07:53,680 --> 00:07:56,520 אנו יכולים לראות תומאס כבר די נפוץ בהיסטוריה, 136 00:07:56,520 --> 00:07:58,780 בעוד ג'ניפר הוא שם חדש יותר. 137 00:07:58,780 --> 00:08:00,590 אנחנו יכולים לעשות דברים מסוג הזה. 138 00:08:00,590 --> 00:08:02,460 >> איך זה עובד בקשה? 139 00:08:02,460 --> 00:08:06,030 בעיקרון, זה עובד דרך ה-API. 140 00:08:06,030 --> 00:08:08,660 במילים אחרות, יש לנו פרמטרים מסוימים כאן. 141 00:08:08,660 --> 00:08:11,360 יש לנו את הפרמטרים של מה שאנחנו מחפשים בעצם ל, 142 00:08:11,360 --> 00:08:13,720 שהם השמות האלה, ואז יש לנו כמה מאפיינים אחרים, 143 00:08:13,720 --> 00:08:16,570 כמו ציר Y וציר X. 144 00:08:16,570 --> 00:08:18,440 אתה יכול לראות שיש לנו כמה אפשרויות שונות ככל 145 00:08:18,440 --> 00:08:20,860 רזולוצית זמן לשימוש ודברים מהסוג הזה. 146 00:08:20,860 --> 00:08:26,700 יש לנו אפשרויות אלה ככל מה שאנחנו באמת רוצים נתונים מבסיס הנתונים, 147 00:08:26,700 --> 00:08:29,400 ואנחנו רוצים לקבל את הנתונים חזרה בדרך מועילה. 148 00:08:29,400 --> 00:08:34,020 בדרך כלל, אם היינו שאילתות בבסיס הנתונים ישירות זה היה כאילו להיות כאב לעשות 149 00:08:34,020 --> 00:08:38,970 מפני שלכאורה נתונים אלה על שמות תינוק חיו במסד נתונים באיזה מקום, 150 00:08:38,970 --> 00:08:42,789 וזה יהיה ממש מסובך לצריך שאילתא אותה באופן ידני 151 00:08:42,789 --> 00:08:45,830 ולהחליט בדיוק אילו נתונים לחזור. 152 00:08:45,830 --> 00:08:49,300 במילים אחרות, שאכפת לנו רק על ג'ניפר ותומס במקרה זה, 153 00:08:49,300 --> 00:08:53,410 ואנחנו דואגים רק על ציר מסוים וכל דברים מהסוג הזה. 154 00:08:53,410 --> 00:08:55,720 >> איך לעקוף את זה? 155 00:08:55,720 --> 00:09:01,200 לחפור לתוך API זה קצת יותר אני אראה לך דוגמה נוספת לפלטפורמה זו 156 00:09:01,200 --> 00:09:04,490 אשר משתמש בערכת נתונים מעט שונה. 157 00:09:04,490 --> 00:09:09,950 מערך נתונים זה, במקום להיות שמות של תינוקות, הוא למעשה רק כולו 158 00:09:09,950 --> 00:09:12,460 להדפיס נתוני פרסום של הספרייה פתוחה, 159 00:09:12,460 --> 00:09:18,410 שהוא מקור ענק של טקסטים פורסמו במשך 100 או כך השנים האחרונות. 160 00:09:18,410 --> 00:09:23,540 הרעיון הוא שיש לנו זה compository של מיליון ומ' של טקסט, 161 00:09:23,540 --> 00:09:27,420 שאנו יכולים כעת לחפש מילים וביטויים שונים פנימה 162 00:09:27,420 --> 00:09:30,840 הנה דוגמה שמשתנית באופן מעט שונה מהדוגמא הקודמת 163 00:09:30,840 --> 00:09:33,350 הראיתי לך, שהוא יש לנו 3 שאילתות החיפוש הללו, 164 00:09:33,350 --> 00:09:36,290 מלחמה, מלחמה, והמילה הצרפתית למלחמה, שהוא הכינוי. 165 00:09:36,290 --> 00:09:40,380 ואנחנו מחפשים בתוך 3 חלקים שונים של מסד הנתונים המוחלטים. 166 00:09:40,380 --> 00:09:45,080 במילים אחרות, בשאילתא הראשונה זה אנחנו מחפשים רק בארה"ב, 167 00:09:45,080 --> 00:09:51,150 בשניית אחת רק בבריטניה, ורק שליש מעבודות שפורסמו בצרפת. 168 00:09:51,150 --> 00:09:53,120 אנו רואים כמה דפוסים מעניינים לצוץ. 169 00:09:53,120 --> 00:09:58,180 לדוגמה, אנו רואים ממש בסביבה ש- 170 00:09:58,180 --> 00:10:02,410 אופס, פשלתי ציר קצת, אבל אתה יכול לראות בטווח זה כאן 171 00:10:02,410 --> 00:10:05,730 סביב מלחמת האזרחים יש זינוק גדול במהדורה האמריקנית 172 00:10:05,730 --> 00:10:08,340 אבל לא ספייק כזה גדול בשתיים אחרים, וברור שזה בגלל 173 00:10:08,340 --> 00:10:10,880 מלחמת האזרחים האמריקנית הייתה קורית באותו רגע. 174 00:10:10,880 --> 00:10:13,890 >> אנו יכולים לראות כמה דברים מגניבים שם, 175 00:10:13,890 --> 00:10:17,070 אבל מה אנחנו באמת אכפת לי הוא איך הגענו לנתונים אלה. 176 00:10:17,070 --> 00:10:21,320 אני אקח אותך מאחורי הקלעים ביישום זה בקצת. 177 00:10:21,320 --> 00:10:24,540 טריק הוא שאם אתה עובד עם האתר וסוג של רוצה לדעת 178 00:10:24,540 --> 00:10:27,430 מה קורה מאחורי הקלעים, אתה יכול לפתוח את כלי פיתוח. 179 00:10:27,430 --> 00:10:30,200 אני הולך להיות באמצעות כלי הפיתוח של הכרום, וכדי להגיע לאלה 180 00:10:30,200 --> 00:10:35,160 אתה יכול לעשות שליטה, משמרת, J, ושלוקח אותך לקונסולת JavaScript. 181 00:10:35,160 --> 00:10:37,420 יש כמה לשוניות כאן. 182 00:10:37,420 --> 00:10:39,680 כולם יכולים להיות די שימושיים בנסיבות שונות, אבל אכפת לי מהרשת 183 00:10:39,680 --> 00:10:44,150 כרטיסייה עכשיו, ואני באמת צריך לרענן כדי לקבל עבודה ש. 184 00:10:44,150 --> 00:10:50,180 אה, סליחה. 185 00:10:50,180 --> 00:10:52,320 הוא אוהב לתת דוגמה אקראית. 186 00:10:52,320 --> 00:10:54,700 אוקיי, אנו נשתמש בדוגמה זו במקום אז. 187 00:10:54,700 --> 00:11:01,330 >> הרעיון הוא שיש API זה כאן, 188 00:11:01,330 --> 00:11:05,330 ואתה יכול לראות בדיוק מה API חוזר. 189 00:11:05,330 --> 00:11:10,220 זה מה שהוא מקבל בחזרה הבקשה מ-API שנשלח שבקשה. 190 00:11:10,220 --> 00:11:13,680 בואו להגדיל אותי בקצת, 191 00:11:13,680 --> 00:11:18,340 ואנחנו בעצם רואים זה רק סדרה של זוגות ערך המרכזיים בJSON. 192 00:11:18,340 --> 00:11:23,220 במילים אחרות, יש לנו HashMap זה כאן הוא שממפה ערכים. 193 00:11:23,220 --> 00:11:26,440 במילים אחרות, זה מיפוי שנים לערכים. 194 00:11:26,440 --> 00:11:32,600 בשנת 1765 כל מילה שאנו בתחילה חפשנו משמש 90 פעמים 195 00:11:32,600 --> 00:11:35,810 מתוך 1 מיליון דולרים, כך שאנחנו מקבלים בחזרה את התוצאה הזאת. 196 00:11:35,810 --> 00:11:40,280 זה לא בדיוק JSON מאז יש לנו כותרת התוצאה הקטנה הזה, 197 00:11:40,280 --> 00:11:45,630 אבל שים לב שכל האובייקט הזה כאן הוא רק כתם גדול גדול JSON. 198 00:11:45,630 --> 00:11:51,070 יש לנו כאן מערך המכיל את כל האלמנט הזה, 199 00:11:51,070 --> 00:11:55,590 ואתה יכול לראות שכל האלמנט מסתיים שם, ואז יש לנו עוד אלמנט גדול 200 00:11:55,590 --> 00:11:59,430 שהולך כל הדרך למטה עד הסוף, ושמסתיים כאן. 201 00:11:59,430 --> 00:12:02,200 יש לנו מגוון גדול מאוד עם 2 חפצים שבו, 202 00:12:02,200 --> 00:12:04,630 וכל אחד מאובייקטים אלה הוא HashMap. 203 00:12:04,630 --> 00:12:07,340 אתה יכול לראות בכל אחד מאלה יש לנו hashmaps מיפוי 204 00:12:07,340 --> 00:12:12,700 ערך זה מדד 0 וערכו של ערך זה לHashMap אחר, 205 00:12:12,700 --> 00:12:18,360 ששוב הוא מיפוי ערכי ציר X לערכי ציר Y. 206 00:12:18,360 --> 00:12:20,970 >> אתה יכול לראות JSON מקבל קצת מסובך, אבל בסך הכל, 207 00:12:20,970 --> 00:12:24,190 זה דווקא שימושי מאוד, וזה מאוד נוח לגישה, לעומת 208 00:12:24,190 --> 00:12:27,390 צורות שונות אחרות של סימון. 209 00:12:27,390 --> 00:12:30,550 ככל מה שאנחנו שולחים למעשה נתונים לAPI כדי לקבל, 210 00:12:30,550 --> 00:12:34,690 אני מתכוון ללכת לקצה האחורי קצת כאן. 211 00:12:34,690 --> 00:12:39,850 זה הקובץ הגדול JavaScript שמתעסק בכל האינטראקציות של Web App, 212 00:12:39,850 --> 00:12:44,810 וכל כך לא אכפת לנו על רוב זה, אבל אכפת לנו מזה קצת. 213 00:12:44,810 --> 00:12:47,410 לדוגמה, אנו דואגים לתפקוד buildQuery זה, 214 00:12:47,410 --> 00:12:50,670 והרעיון של פונקציה זו הוא בעצם זה מסתכל סביב העמוד, 215 00:12:50,670 --> 00:12:53,750 להבין מה המשתמש רוצה לבצע שאילתא, במילים אחרות, 216 00:12:53,750 --> 00:12:57,090 בדיקת התיבות האלה שבם יש הזנת מונחי החיפוש שלו, 217 00:12:57,090 --> 00:13:01,380 בדיקת ערכי ציר X שהם בחרו וכל דברים מסוג זה Y והשונה, 218 00:13:01,380 --> 00:13:06,650 וזה הולך לו לפלוט את הערך הזה בשאילתה, אשר אז יכול לשלוח ל- API. 219 00:13:06,650 --> 00:13:09,180 >> זה נראה מורכב, וזה די מסובך 220 00:13:09,180 --> 00:13:18,090 אבל מה שאני מתכוון לעשות, למעשה, אני כבר עושה את זה, שהוא גדול, 221 00:13:18,090 --> 00:13:21,640 הוא שאני הולך לקבל את הקונסולה להדפיס בדיוק שערך שאילתא 222 00:13:21,640 --> 00:13:28,110 שזה לשלוח אותו ל- API. 223 00:13:28,110 --> 00:13:30,870 זה ממש כאן. מצטער, זה פלטים הרבה דברים. 224 00:13:30,870 --> 00:13:33,690 אבל זה מה שאכפת לנו, זה אובייקט ממש כאן. 225 00:13:33,690 --> 00:13:35,300 זהו אובייקט השאילתה. 226 00:13:35,300 --> 00:13:40,670 במילים אחרות, זה בדיוק מה שיישום האינטרנט שולח לAPI, 227 00:13:40,670 --> 00:13:45,730 ולכן בואו נסתכל פנימה קצת, ואנחנו רואים שיש לנו כאן כמה ערכים. 228 00:13:45,730 --> 00:13:48,710 אנו רואים שיש לנו סוג ספירה זו, שהיא מופעים למ' מילים, 229 00:13:48,710 --> 00:13:51,460 וזה בדיוק מה שבחרנו בציר Y לכאן. 230 00:13:51,460 --> 00:13:53,740 זה המקום שבי שבא. 231 00:13:53,740 --> 00:13:58,010 יש לנו ערך מסד נתונים, מה שאומר שיש איזה אתר מסוים 232 00:13:58,010 --> 00:14:01,610 שנתונים אלה הם חיו ב, ואנחנו רוצים לגשת לנתונים ספציפיים 233 00:14:01,610 --> 00:14:04,950 בניגוד לנתוני שמות לתינוקות, למשל. 234 00:14:04,950 --> 00:14:08,320 אז יש לנו ערך קבוצות זה, 235 00:14:08,320 --> 00:14:12,090 וזה אומר שאנחנו רוצים לחפש לפי שנה לעומת 236 00:14:12,090 --> 00:14:16,030 כל ערך ציר X אחר. 237 00:14:16,030 --> 00:14:19,040 אז יש לנו שיטה, שחלק APIs יעשה דברים מרובים. 238 00:14:19,040 --> 00:14:22,360 במילים אחרות, ב-API זה יכול גם לחזור סוגים אחרים של נתונים, 239 00:14:22,360 --> 00:14:27,740 אבל במקרה הזה, אנחנו רוצים שמיפוי של ערכי ציר X לערכי ציר Y. 240 00:14:27,740 --> 00:14:30,730 זה מה שאומר לו מה לעשות שם, 241 00:14:30,730 --> 00:14:35,020 ויש לנו מערך חיפוש זה גבולות, המכיל 2 ערכים. 242 00:14:35,020 --> 00:14:40,720 הראשון הוא מה שאנחנו רואים כאן, שהוא כל הערכים 243 00:14:40,720 --> 00:14:43,020 שמסתתרים בתוך התיבה הקטנה הראשונה בראש. 244 00:14:43,020 --> 00:14:47,570 >> במילים אחרות, אנחנו רוצים לחפש מילת הקרב, ואנחנו רוצים לסנן אותה 245 00:14:47,570 --> 00:14:51,920 בטקסטים באנגלית בתוך ספרות אמריקנית. 246 00:14:51,920 --> 00:14:54,590 יש לנו את הארץ הזאת, שהיא ארה"ב. 247 00:14:54,590 --> 00:14:59,130 יש לנו שפה, שהיא אנגלית, אז יש לנו את כל החלקים השונים האלה 248 00:14:59,130 --> 00:15:02,690 שכולם אומרים לי API בדיוק מה שאנחנו רוצים. 249 00:15:02,690 --> 00:15:04,940 אנחנו לא יודעים מה הנתונים שאנחנו מקבלים בחזרה הם עדיין, 250 00:15:04,940 --> 00:15:10,970 אבל אנחנו יודעים שהנתונים הולכים בצורה מסוימת. 251 00:15:10,970 --> 00:15:13,650 דוגמה זו היא סוג של בצד המסובך, 252 00:15:13,650 --> 00:15:16,180 ולך לא בהכרח יהיה באמצעות API מורכב זו, 253 00:15:16,180 --> 00:15:20,600 אבל זה כדי להראות לך את הטווח והעצמה של מה APIs יכול לעשות. 254 00:15:20,600 --> 00:15:24,980 במילים אחרות, באמצעות מערכת שאילתא פשוטה יחסית שבעצם יש תיבת קלט 255 00:15:24,980 --> 00:15:29,490 עם כמה בוררים אחרים במקומות שונים. 256 00:15:29,490 --> 00:15:32,010 >> בואו להגדיל אותי בחזרה לכאן. 257 00:15:32,010 --> 00:15:37,720 יש לנו תיבת קלט עם כמה בחירות metadata שונות, 258 00:15:37,720 --> 00:15:40,610 ויש לנו בחירות ציר X ו-Y ציר. 259 00:15:40,610 --> 00:15:42,830 אנחנו לא באמת צריכים שתחומים רבים, 260 00:15:42,830 --> 00:15:46,210 ואנחנו יכולים לראות בקלות שאנחנו מסוגלים לבצע שאילתא איזה API 261 00:15:46,210 --> 00:15:48,510 ולקבל את נתונים חזרה ולאחר מכן הכניס אותו לתוך תרשים זה, 262 00:15:48,510 --> 00:15:52,080 אשר לאחר מכן הוא הולך להציג אותו בצורה יעילה. 263 00:15:52,080 --> 00:15:54,970 להסתכל על דוגמה נוספת שעשוי להיות קצת יותר מוכר לחבר 'ה 264 00:15:54,970 --> 00:15:56,510 אנחנו הולכים להפוך לפייסבוק. 265 00:15:56,510 --> 00:15:59,440 API של פייסבוק נקרא גרף פייסבוק, 266 00:15:59,440 --> 00:16:04,390 ובעצם מה שזה אומר הוא פייסבוק רואה את עצמו כאתר הזה מהסיבי 267 00:16:04,390 --> 00:16:08,000 של המון חלקים שונים שכל יש להם יחסים מסוימים אחד לשני. 268 00:16:08,000 --> 00:16:11,070 במילים אחרות, אני משתמש בפייסבוק, ולכן יש לי פרופיל, 269 00:16:11,070 --> 00:16:14,310 ויש לי גם חברים מסוימים, וכל אחד מהם יש פרופיל, 270 00:16:14,310 --> 00:16:17,580 וכל אחד מהחברים שלי יש קיר, שבו יש הערות שונות על זה, 271 00:16:17,580 --> 00:16:20,800 וכל אחת מההערות האלה יש אהבות וכל דברים מהסוג הזה. 272 00:16:20,800 --> 00:16:23,100 >> יש המון חלקים שונים לפייסבוק. 273 00:16:23,100 --> 00:16:26,670 זה API עצום מורכב, ויש טונות שאתה יכול לעשות עם זה, 274 00:16:26,670 --> 00:16:28,450 אבל זה בעצם די פשוט לשימוש. 275 00:16:28,450 --> 00:16:33,680 אני מתכוון להתחיל על ידי הולך graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 אשר היא שם החשבון הייחודי שלי, ושם החשבון שלך יהיה גם יהיו 277 00:16:38,430 --> 00:16:43,710 איזו מילה אם בחרת את זה, או שזה יכול להיות רק מחרוזת של מספרים. 278 00:16:43,710 --> 00:16:46,360 מה שאנחנו מקבלים בחזרה הוא מידע די בסיסי. 279 00:16:46,360 --> 00:16:50,460 אנו רואים שיש לי שם פרטי, שהוא בילי, שם משפחה, שהוא Janitsch. 280 00:16:50,460 --> 00:16:53,370 יש הפייסבוק ייחודי שיש לי. 281 00:16:53,370 --> 00:16:57,920 אתה יכול לראות שאני גבר, ושיש לי הגדרת השפה שלי 282 00:16:57,920 --> 00:17:01,290 לאנגלית הבריטית. 283 00:17:01,290 --> 00:17:03,490 במילים אחרות, אנו רואים מידע מאוד בסיסי כאן. 284 00:17:03,490 --> 00:17:08,670 זה לא יותר מדי, אבל זה נותן לנו מושג על מה שיש. 285 00:17:08,670 --> 00:17:10,849 >> אנחנו יכולים לעשות את אותו דבר לדוד מלאן, למשל. 286 00:17:10,849 --> 00:17:13,599 אני חושב שהשם שלו הוא dmalan. 287 00:17:13,599 --> 00:17:16,369 אנו רואים הדוד מלאן יש מזהה ייחודי. 288 00:17:16,369 --> 00:17:19,300 יש לו שם, שם פרטי, שם אמצעי, שם משפחה. 289 00:17:19,300 --> 00:17:24,210 כמו כן, אנו רואים שהוא גבר ויש לו סט השפה שלו לאנגלית האמריקנית. 290 00:17:24,210 --> 00:17:26,869 במילים אחרות, אנו רואים מידע די בסיסי כאן. 291 00:17:26,869 --> 00:17:28,860 עכשיו, מה קורה אם אנחנו מנסים לבדוק משהו אחר? 292 00:17:28,860 --> 00:17:33,060 בואו נגיד שאני מתעניייין במה שאהב הדוד מלאן בפייסבוק. 293 00:17:33,060 --> 00:17:36,860 אני יכול לעשות / אוהבת. עכשיו אנחנו נתקלים בבעיה. 294 00:17:36,860 --> 00:17:39,280 יש לנו איזה סוג של שגיאה שאומר אסימון גישה 295 00:17:39,280 --> 00:17:41,660 נדרש לבקש משאב זה. 296 00:17:41,660 --> 00:17:44,730 אבל אם אתה חושב על זה, זה בעצם הגיוני כי זה יהיה מוזר 297 00:17:44,730 --> 00:17:47,830 אם אתה יכול לגשת לכל חלק אחד של מסד הנתונים של פייסבוק 298 00:17:47,830 --> 00:17:50,170 בדיוק מסוג כלשהו של API פשוט, נכון? 299 00:17:50,170 --> 00:17:56,040 במילים אחרות, ככל הנראה את המידע שלך לא ניתן לגשת על ידי כל מי שרוצה את זה. 300 00:17:56,040 --> 00:17:58,330 >> שגיאה זו היא בדיוק מה שזה אומר. 301 00:17:58,330 --> 00:18:03,630 APIs חלקם דורש הרשאות מסוימות כדי לגשת לנתונים שלהם. 302 00:18:03,630 --> 00:18:06,940 וAPIs אפילו מתקדם יותר, כמו פייסבוק אחת, 303 00:18:06,940 --> 00:18:09,840 ידרוש הרשאות מסוימות לעשות דברים מסוימים. 304 00:18:09,840 --> 00:18:12,650 אני יכול לראות את המידע הבסיסי הזה על הדוד מלאן. 305 00:18:12,650 --> 00:18:15,950 אני יכול לראות שהוא גבר ושהוא מתגורר בארצות הברית, 306 00:18:15,950 --> 00:18:19,270 אבל אני באמת לא יכול לראות שום דבר מעבר לכך. 307 00:18:19,270 --> 00:18:23,050 כדי לעקוף זאת לעת עתה, פייסבוק יש כלי הנחמד הזה 308 00:18:23,050 --> 00:18:27,690 שהוא הגרף API Explorer, והרעיון של זה אתה יכול למיין של 309 00:18:27,690 --> 00:18:31,880 איפור הרשאות לעצמך מבוסס על חשבונך 310 00:18:31,880 --> 00:18:35,680 ולאחר מכן להציג את הדברים באופן ספציפי לחשבון שלך יכול להציג. 311 00:18:35,680 --> 00:18:45,120 לדוגמה, אם אני עושה graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 אופס, אני מניח שאני צריך לאמת מחדש האסימון שלי כאן. 313 00:18:53,510 --> 00:18:55,950 אוקיי. 314 00:18:55,950 --> 00:19:01,740 אם אני עושה את זה שוב, מצוין, עכשיו אני רואה שאני מקבל את האובייקט הזה בחזרה 315 00:19:01,740 --> 00:19:06,300 שאומר שאני אוהב את אטריות ברכה, שהם בקטגורית המשחקים והצעצועים. 316 00:19:06,300 --> 00:19:08,620 אני אוהב סוסי ים, הנמצאים בבעלי חי הקטגוריה. 317 00:19:08,620 --> 00:19:10,180 אלה הם כמו פייסבוק הממשי שלי. 318 00:19:10,180 --> 00:19:13,280 הם די מביכים. 319 00:19:13,280 --> 00:19:16,090 >> אבל אנחנו יכולים לראות בנתונים אלה, כולם חזרו בJSON. 320 00:19:16,090 --> 00:19:18,160 זה די קריא. 321 00:19:18,160 --> 00:19:20,970 במילים אחרות, יש לנו מיפוי זה של נתונים לסוג כלשהו של מערך, 322 00:19:20,970 --> 00:19:25,220 וכל אחד מהרכיבים של מערך זה הוא HashMap אשר ממפה 323 00:19:25,220 --> 00:19:28,530 שם כמו והקטגוריה של כמו. 324 00:19:28,530 --> 00:19:31,240 כל כמו יש מזהה ייחודי. 325 00:19:31,240 --> 00:19:34,510 יש כל מיני דברים שונים של מידע שאנו יכולים לקבל, 326 00:19:34,510 --> 00:19:37,980 ואם אתם מעוניינים להשתמש בפייסבוק API לפרויקט גמר CS50 327 00:19:37,980 --> 00:19:40,720 או לכל דבר כמו שזה בעצם די בר ביצוע. 328 00:19:40,720 --> 00:19:44,260 בעצם איך לך לעקוף את דבר האימות הוא פייסבוק 329 00:19:44,260 --> 00:19:48,030 משתמש במערכת הנקראת OAuth, או אימות פתוחה, 330 00:19:48,030 --> 00:19:52,870 ואני לא רוצה להיכנס לזה עכשיו כי OAuth או סוג האחר 331 00:19:52,870 --> 00:19:56,060 אימות נוטה להשתנות הרבה בין APIs השונה, 332 00:19:56,060 --> 00:19:58,320 כדי שאוכל לבלות זמן רב הולך על כל אחד, 333 00:19:58,320 --> 00:20:01,170 אבל הם בעצם די מובנים מאליו. 334 00:20:01,170 --> 00:20:04,050 >> אם פייסבוק API של Google זה מאוד קריא. 335 00:20:04,050 --> 00:20:06,670 יש כל מפרט. 336 00:20:06,670 --> 00:20:10,210 לדוגמה, זה התיעוד של פייסבוק API, 337 00:20:10,210 --> 00:20:14,170 ואתה יכול לראות שאני בדף המשתמש, כדי שאוכל ללמוד על כל סוגים השונים של דברים 338 00:20:14,170 --> 00:20:17,170 שזמינים לקבל ככל נתונים 339 00:20:17,170 --> 00:20:21,550 וגם את ההרשאות השונות שאני צריך כדי לגשת אליהם. 340 00:20:21,550 --> 00:20:25,470 כפי שראינו, אנחנו לא צריכים את הרשאות גישה לשם או למין, 341 00:20:25,470 --> 00:20:29,380 אבל מעבר לזה אנחנו צריכים את הרשאות עבור רוב הדברים. 342 00:20:29,380 --> 00:20:33,040 בדף זה, או יותר נכון, אתר זה גם אומר לך איך להגיע 343 00:20:33,040 --> 00:20:35,640 אסימון להיות מסוגל לאמת את עצמך. 344 00:20:35,640 --> 00:20:39,290 רוב מערכות אימות להשתמש איזה אסימון 345 00:20:39,290 --> 00:20:42,880 איפה אתה מקבל את הערך ייחודי זה, שהוא באמת מחרוזת ארוכה ואקראית, 346 00:20:42,880 --> 00:20:46,240 ואופן שבו הם יכולים לקשר את הבקשה שאתה עושה איתך. 347 00:20:46,240 --> 00:20:50,560 במילים אחרות, הם יודעים שאתה לא עושה משהו חשוד עם הנתונים שלהם. 348 00:20:50,560 --> 00:20:53,340 הם יודעים בדיוק מה אתה מקבל. 349 00:20:53,340 --> 00:20:56,180 הם גם יודעים שיש לך הרשאה כדי להציג את המידע. 350 00:20:56,180 --> 00:20:59,110 >> אם עשית פייסבוק אפליקציה והאפליקציה שלך יש משתמשים מסוימים, 351 00:20:59,110 --> 00:21:03,380 ואותם המשתמשים שאפשרו ליישום לגשת לחלקים מסוימים של הפרופיל שלהם, 352 00:21:03,380 --> 00:21:07,790 אז לא משנה איזה מקש או אסימון שהאפליקציה שבאמצעות ה-API 353 00:21:07,790 --> 00:21:11,090 תוכל לגשת לנתונים למשתמשים אלה. 354 00:21:11,090 --> 00:21:13,780 זה אולי נשמע מסובך, אבל זה לא נורא כל כך, 355 00:21:13,780 --> 00:21:16,810 ואם אתה רוצה להשתמש בפייסבוק אני מאוד ממליץ לך 356 00:21:16,810 --> 00:21:18,990 לשקול שחקתי עם ה-API שלהם. 357 00:21:18,990 --> 00:21:21,610 זה מאוד מגניב, ואתה יכול לעשות הרבה דברים שונים עם זה. 358 00:21:21,610 --> 00:21:24,880 אם המשתמש מעניק לך הרשאות אלה אתה יכול אפילו לחזור ל-API 359 00:21:24,880 --> 00:21:28,820 ואומר שאני רוצה בעצם לפרסם לקיר של המשתמש הזה, או שאני רוצה שיהיה להם לפרסם תמונה, 360 00:21:28,820 --> 00:21:32,390 ובגלל זה בערוץ החדשות שלך אתה מקבל לפעמים אלה דברים מעצבנים 361 00:21:32,390 --> 00:21:37,840 אמר שהחבר שלך ראה את הסרטון הזה על איזה אתר או משהו כזה מוזר. 362 00:21:37,840 --> 00:21:43,120 זאת משום שהיישום הוענק גישה לפרסם על הקיר של אותו האדם. 363 00:21:43,120 --> 00:21:48,350 הרעיון כללי, פייסבוק API הוא מסובך למדי, אלא גם באמת שימושי. 364 00:21:48,350 --> 00:21:53,220 בהחלט שווה לבדוק אם אתה עדיין מחפש פרויקט גמר. 365 00:21:53,220 --> 00:21:57,930 >> חבילה נוספת של ממשקי API שאני הולך לעבור עליו CS50 APIs. 366 00:21:57,930 --> 00:22:00,070 בואו להגדיל אותי לכאן. 367 00:22:00,070 --> 00:22:03,390 CS50 למעשה יש להרכיב סדרה שלמה של APIs 368 00:22:03,390 --> 00:22:07,080 שאתה יכול להשתמש עבור פרויקט גמר או סתם לכל דבר שאתה עושה. 369 00:22:07,080 --> 00:22:12,830 והם בעיקר הרווארד בנושא, והם משתנים מתפריט HUDS, 370 00:22:12,830 --> 00:22:17,780 לדוגמה, לרווארד אירועי API זה, אשר יאפשר לך לגשת לרשימה 371 00:22:17,780 --> 00:22:21,290 אירועים שונים שמתרחשים ברווארד ודברים מסוג זה. 372 00:22:21,290 --> 00:22:24,510 וכדי שנוכל ללחוץ על כל אחד מאלה ולקבל מפרט עבורו, 373 00:22:24,510 --> 00:22:28,090 שתוכל למצוא לכל API, והרעיון הוא 374 00:22:28,090 --> 00:22:33,920 זה מאפשר לך לדעת,, מה בדיוק לבקש מ-API ואיך לבקש אותו. 375 00:22:33,920 --> 00:22:37,370 במילים אחרות, אם אני רוצה את כל האירועים שקורים מחר 376 00:22:37,370 --> 00:22:42,550 אז יש לי ברור שכדי לתת לו מועד שאני רוצה בתבנית מסוימת, 377 00:22:42,550 --> 00:22:46,030 ו-B, הוא יגיד לי בדיוק מה הוא הולך להחזיר לי. 378 00:22:46,030 --> 00:22:48,590 זה אומר שאני הולך להחזיר אותך אובייקט JSON זה, 379 00:22:48,590 --> 00:22:50,960 או כמו שאתה יכול לראות, יש פורמטים שונים. 380 00:22:50,960 --> 00:22:54,050 >> אתה יכול גם להחזיר את הנתונים כקובץ CSV, למשל. 381 00:22:54,050 --> 00:22:57,620 אבל אתה יודע איך בדיוק נתונים שהוא הולכים להיראות כשאתה מקבל אותו בחזרה 382 00:22:57,620 --> 00:23:00,610 כך שאתה יכול לצפות לעשות דברים מסוימים עם זה. 383 00:23:00,610 --> 00:23:07,240 אנחנו יכולים לגלול למטה ולראות, למשל, אם ברצוננו לבצע שאילתא API 384 00:23:07,240 --> 00:23:11,500 כדי לקבל לוח שנה, ואז תוכל להשתמש בכתובת אינטרנט המסוים הזה 385 00:23:11,500 --> 00:23:16,480 ולתת לו פרמטרים מסוימים שהם הולכים להיות את הנתונים שאנחנו רוצים בדיוק. 386 00:23:16,480 --> 00:23:19,540 וכמו כן, אם אנחנו רוצים את הנתונים בחזרה בתבנית מסוימת, 387 00:23:19,540 --> 00:23:23,790 אז אנחנו יכולים לשאול אותו לפלט של נתונים בקובץ CSV, 388 00:23:23,790 --> 00:23:27,700 וזה רק פרמטר נוסף שאנחנו עוברים ל-API. 389 00:23:27,700 --> 00:23:29,210 המון דברים מגניבים לעשות שם. 390 00:23:29,210 --> 00:23:32,550 הייתי בהחלט ממליץ לבדוק את CS50 APIs. 391 00:23:32,550 --> 00:23:36,000 >> אני הולך להסתכל על ה-API מזון הרווארד זה בפרט לקצת. 392 00:23:36,000 --> 00:23:39,870 דבר אחד שנועדתי למעשה הוא אתר זה הרווארד Noms, 393 00:23:39,870 --> 00:23:44,930 המשתמש ב-API המזון CS50 כדי לאחזר את תפריט HUDS ליום. 394 00:23:44,930 --> 00:23:50,400 ועבור אנשים בבית הספר מאריך, HUDS הוא שירות האוכל באוניברסיטת הרווארד. 395 00:23:50,400 --> 00:23:55,130 מה שאתה מקבל זה דף שמכיל את כל הארוחות ליום, ולכן אנו רואים את ארוחת צהריים. 396 00:23:55,130 --> 00:23:58,130 יש לנו כמה קטגוריות שונות. יש לנו את השעועית ותחנת מחיטה מלאה. 397 00:23:58,130 --> 00:24:00,340 יש לנו תחנת אורז החום. 398 00:24:00,340 --> 00:24:03,360 אנחנו יכולים לראות שיש לנו לבראנץ' כמה פריטי מזון אלו. 399 00:24:03,360 --> 00:24:07,030 אם נלחץ עליהם, ואז אנחנו מקבלים את המידע התזונתי. 400 00:24:07,030 --> 00:24:12,240 אתה רואה את זה הוא המידע התזונתי לאשכולית, במקרה שתהיתם. 401 00:24:12,240 --> 00:24:14,870 וכך שוב, אנחנו הולכים להציץ לתוך הסוף יחזור לכאן קצת 402 00:24:14,870 --> 00:24:18,530 ולראות מה בדיוק זה עושה כדי לקבל מידע זה. 403 00:24:18,530 --> 00:24:21,710 ומתברר שבפועל לא תהיה מאוד מורכב. 404 00:24:21,710 --> 00:24:28,720 קובץ זה נראה קצת מבולגן, אבל קח בחשבון שזה נמצא בטיפול של כל אתר האינטרנט, 405 00:24:28,720 --> 00:24:34,130 ואם אני לגלול למטה אנו רואים פונקצית נתוני שינוי זה. 406 00:24:34,130 --> 00:24:36,630 >> עכשיו, רק שיהיו ברור, זה כתוב בCoffeeScript, 407 00:24:36,630 --> 00:24:39,570 שהיא שפה שאתה כנראה לא ראית בעבר. 408 00:24:39,570 --> 00:24:44,810 אבל זה די קריא, אז אני אוכל להיכנס לזה כאילו זה היה pseudocode. 409 00:24:44,810 --> 00:24:49,080 שנת תאריך הוא פונקציה שהולכת לקחת בערך תאריך זה, 410 00:24:49,080 --> 00:24:51,740 וזה גם הולך לקחת בראשון, שלא אכפת לנו בערך באותה מידה. 411 00:24:51,740 --> 00:24:54,110 אבל הדבר החשוב הוא שיש לו תאריך זה, 412 00:24:54,110 --> 00:25:00,080 והתאריך שהוא היום שאנו רוצים לבקש את כל פריטי מזון ל. 413 00:25:00,080 --> 00:25:04,030 ואז אתה רואה שיש לנו קצת תחביר כאן, 414 00:25:04,030 --> 00:25:09,000 שבעצם ניתוח שהמועד לפורמט קריא. 415 00:25:09,000 --> 00:25:11,920 במילים אחרות, ה-API דורשת את התאריך בפורמט מסוים. 416 00:25:11,920 --> 00:25:17,390 אתה לא יכול סתם להגיד 16 נובמבר 2012 לספירה. 417 00:25:17,390 --> 00:25:20,320 זה לא יודע מה לעשות עם זה. היא רוצה את התאריך בפורמט ספציפי. 418 00:25:20,320 --> 00:25:23,230 כל מה שאנחנו עושים כאן זה נותן לו בדיוק את זה בתבנית, 419 00:25:23,230 --> 00:25:26,520 שהוא ערך בשנה ולאחר מכן מקף, ערך חודש, 420 00:25:26,520 --> 00:25:29,420 מקף אחר וערך התאריך. 421 00:25:29,420 --> 00:25:34,910 ואנחנו גם אומרים שאנחנו רוצים את הנתונים להיות פלט בJSON. 422 00:25:34,910 --> 00:25:37,560 >> עכשיו אנחנו מכינים בקשת AJAX זה, וכפי שציינתי קודם לכן, 423 00:25:37,560 --> 00:25:41,680 jQuery יש פונקציה זו שימושית במיוחד AJAX שכל מה שאתה צריך לעשות הוא לציין 424 00:25:41,680 --> 00:25:45,780 כמה פרמטרים כאן למטה, וזה ינתנו לך בדיוק את מה שאתה רוצה. 425 00:25:45,780 --> 00:25:50,490 אנחנו מספרים לו את כתובת האתר שאנחנו רוצים זה ללכת להיא API המזון CS50 זה, 426 00:25:50,490 --> 00:25:52,270 שיש לנו מהמפרט. 427 00:25:52,270 --> 00:25:56,730 אנחנו אומרים שאנחנו רוצים את הנתונים בJSON וכי 428 00:25:56,730 --> 00:25:59,490 אנחנו הולכים לתת לו את הנתונים שיש לנו שהוגדרו כאן. 429 00:25:59,490 --> 00:26:02,670 זה היום שאנחנו רוצים את פריטי מזון ל. 430 00:26:02,670 --> 00:26:07,790 ואז כל מה שאנחנו צריכים לעשות זה להגדיר איזה פונקצית הצלחה, 431 00:26:07,790 --> 00:26:11,980 וזה בעצם מה שקורה כשמחזיר את נתוני API. 432 00:26:11,980 --> 00:26:15,490 במילים אחרות, אנחנו כבר ארזנו את כל הפרמטרים שאנחנו רוצים, 433 00:26:15,490 --> 00:26:20,530 אשר במקרה זה הוא היום שבו אנחנו רוצים את זה ואת העובדה שאנחנו רוצים אותו בJSON, 434 00:26:20,530 --> 00:26:23,840 ואנחנו שלחנו אותו ל-API, אז עכשיו API אומר, בסדר, 435 00:26:23,840 --> 00:26:26,350 כאן הוא הנתונים שלך, שחזרתי את זה בשבילך. 436 00:26:26,350 --> 00:26:29,930 יש לנו את פונקצית ההצלחה, מה שאומר שניתן API 437 00:26:29,930 --> 00:26:32,230 חוזר כמה נתונים בהצלחה, מה אנחנו עושים עם זה? 438 00:26:32,230 --> 00:26:35,980 >> ומתברר שכל מה שאנחנו עושים זה לקרוא לפונקצית תפריט עדכון זה 439 00:26:35,980 --> 00:26:42,680 עם כל מה שב-API, ולכן אנחנו יכולים לחפש כי 440 00:26:42,680 --> 00:26:47,970 ותראה שכל מה שאנחנו עושים הוא באמצעות חבורה של תחביר החדש כאן 441 00:26:47,970 --> 00:26:52,220 כדי לעדכן את ה-HTML ולהכניס נתונים חדשים. 442 00:26:52,220 --> 00:26:56,580 מה זה מאפשר לו שיש לנו החיצים האלה משני הצדדים, ואנחנו יכולים ללחוץ, 443 00:26:56,580 --> 00:27:01,060 ועכשיו אנחנו מסתכלים על הנתונים ליום הבא ושוב ליום המחרת, 444 00:27:01,060 --> 00:27:04,820 ובכל פעם שזה עדכון שערך התאריך וביצוע שאילתא API, 445 00:27:04,820 --> 00:27:07,510 מקבל בחזרה חלק מנתונים ומכניסים אותו לאתר. 446 00:27:07,510 --> 00:27:10,590 שוב, אתה יכול לראות, סופר, סופר שימושי. 447 00:27:10,590 --> 00:27:14,410 יישום זה לקח לי כמה שעות כדי לפרוץ יחד, 448 00:27:14,410 --> 00:27:20,140 ויש לי קצת יותר ניסיון, כמובן, אך פרויקט הגמר שלך CS50 449 00:27:20,140 --> 00:27:22,870 יכול להסתכל משהו דומה מאוד לזה. 450 00:27:22,870 --> 00:27:29,540 >> APIs הם סופר חזקים לכמות המאמץ שהם לוקחים. 451 00:27:29,540 --> 00:27:32,800 הדבר האחרון שאני הולך לעבור עליו כמה APIs באופן רחב יותר. 452 00:27:32,800 --> 00:27:35,480 אני לא מצליח להגיע עד אליהם ככל מה שהם עושים באופן ספציפי, 453 00:27:35,480 --> 00:27:38,740 אבל אני אתן לך מושג מה יש שם בחוץ. 454 00:27:38,740 --> 00:27:42,700 2 אלה באמת שימושיים, אם אתה מתעניייין בניתוח נתונים או הדמיה 455 00:27:42,700 --> 00:27:45,960 או משהו כזה, הוא Freebase וויקיפדיה. 456 00:27:45,960 --> 00:27:49,800 ויקיפדיה-כנראה שכולכם יודעים, הוא אנציקלופדיה מקוונת חופשיה, 457 00:27:49,800 --> 00:27:53,230 וזה בעצם יש API, כך שאם אתה רוצה, למשל, 458 00:27:53,230 --> 00:27:56,250 לקבל את כל הטקסטים והמאמרים לתמנון 459 00:27:56,250 --> 00:27:58,030 אתה יכול בקלות לעשות את זה. 460 00:27:58,030 --> 00:28:02,300 פשוט תגידו היי, ויקיפדיה API, אני רוצה את הנתונים שהוחזרו כזה, 461 00:28:02,300 --> 00:28:07,010 ואני רוצה אותו בפורמט זה, ואת המאמר שהייתי רוצה זה תמנון, 462 00:28:07,010 --> 00:28:09,820 ומהר מאוד זה ייתן לך בחזרה את המידע הזה. 463 00:28:09,820 --> 00:28:12,230 זה יכול להיות שימושי מאוד אם אתה רוצה לעשות איזה אתר 464 00:28:12,230 --> 00:28:16,200 זה טוב יותר לצופת ויקיפדיה או משהו כזה. 465 00:28:16,200 --> 00:28:21,350 >> Freebase הוא סוג של דומה, למרות שזה קצת יותר קשה ככל API. 466 00:28:21,350 --> 00:28:24,390 Freebase הוא כמו ויקיפדיה שבזה אנציקלופדיה מקוונת 467 00:28:24,390 --> 00:28:29,050 אשר מכיל המון המון נתונים שונים על כל מיני נושאים שונים, 468 00:28:29,050 --> 00:28:33,150 אבל הוא מאוחסן במסד נתונים יחסי, שהוא מעט שונה מויקיפדיה. 469 00:28:33,150 --> 00:28:36,410 ויקיפדיה יש מאמרים ומאמרים שלה הצמודים למאמרים אחרים, 470 00:28:36,410 --> 00:28:38,860 אבל ברוב המקרים, אם אתה רוצה את הנתונים עבור תמנון, 471 00:28:38,860 --> 00:28:41,990 אתה הולך למאמר התמנון, לקבל את הנתונים, ויש לך חבורה של טקסט 472 00:28:41,990 --> 00:28:43,830 על תמנונים, אז זה נהדר. 473 00:28:43,830 --> 00:28:46,870 Freebase פועל באופן מעט יותר מסובך שב 474 00:28:46,870 --> 00:28:48,930 הכל קשור אחד לשני. 475 00:28:48,930 --> 00:28:52,620 במילים אחרות, אם אנחנו מחפשים תמנון 476 00:28:52,620 --> 00:28:54,940 אז יש לו חבורה של קטגוריות הקשורים אליו. 477 00:28:54,940 --> 00:28:57,920 >> לדוגמה, זו חיה, שחיה מתחת למים, 478 00:28:57,920 --> 00:28:59,710 יש לו טמפרטורת גוף מסוימת. 479 00:28:59,710 --> 00:29:01,210 אני לא יודע. 480 00:29:01,210 --> 00:29:04,230 וכל אחת מהקטגוריות הללו הם קישורים למקומות אחרים שבם אתה יכול ללכת 481 00:29:04,230 --> 00:29:06,640 כדי לראות את הדברים באותה קטגוריה. 482 00:29:06,640 --> 00:29:13,450 במילים אחרות, ערכת נתוני התמנון תכיל קישור לנתונים שנקבעו לכל בעלי החיים, 483 00:29:13,450 --> 00:29:16,790 ושיאפשר לי לנוע באתר ממש במהירות. 484 00:29:16,790 --> 00:29:21,740 זה יכול להיות מאוד שימושי אם אתה עושה משהו כמו השוואות. 485 00:29:21,740 --> 00:29:24,490 במילים אחרות, ניתן דבר מסוים, אתה רוצה לראות 486 00:29:24,490 --> 00:29:27,890 מה עוד שזה קשור לכאן ולראות מה זה לא קשור. 487 00:29:27,890 --> 00:29:30,700 דברים מסוג זה. זה יכול להיות שימושי במספר הדרכים. 488 00:29:30,700 --> 00:29:34,250 אם אתם מחפשים יותר אתגר ולהיות מסוגל לעשות כמה דברים מורכבים יותר 489 00:29:34,250 --> 00:29:38,740 הייתי שוקל לקחת מבט Freebase-API. 490 00:29:38,740 --> 00:29:44,670 אבל במידה רבה, ויקיפדיה היא מקום מאוד פשוט ללכת רחוק ככל מקבל מידע. 491 00:29:44,670 --> 00:29:48,340 עוד מקום שאני אסתכל עליו Last.fm, ובעצם אני הולך לאתר 492 00:29:48,340 --> 00:29:53,800 במקרה שיש אנשים שלא מכירים, אבל Last.fm הוא בעצם מוסיקה 493 00:29:53,800 --> 00:29:57,220 טעמים ואתר המלצות. 494 00:29:57,220 --> 00:29:59,000 אתה יכול לעשות את חשבון. 495 00:29:59,000 --> 00:30:04,250 אתה יכול להתחיל להעלות מוסיקה מנגן המוזיקה שלך 496 00:30:04,250 --> 00:30:08,020 לאתר האינטרנט, ובעצם הוא יתחיל לתת לך המלצות מוסיקה 497 00:30:08,020 --> 00:30:10,030 על סמך מה אתה מקשיב. 498 00:30:10,030 --> 00:30:14,270 >> לדוגמה, אם אתה הולך לדף הפרופיל שלך, זה שלי, 499 00:30:14,270 --> 00:30:18,180 אתה יכול לראות שיש לך רשימה של הקשיב לאחרונה למסלולים. 500 00:30:18,180 --> 00:30:22,550 אתה יכול לראות את האמנים אהובים כוללים, כל דברים מהסוג הזה, 501 00:30:22,550 --> 00:30:25,280 ושוב, יש API גדול מאחורי Last.fm, 502 00:30:25,280 --> 00:30:29,360  ואתה יכול להשתמש בו כדי לעשות המון המון דברים ממש מגניבים. 503 00:30:29,360 --> 00:30:38,870 לדוגמה, אני אלך לדף של חבר שיש לו אתר אינטרנט כלי Last.fm זה. 504 00:30:38,870 --> 00:30:42,380 זו בעצם פלטפורמה אחרת, המבוססת על ה-API Last.fm, 505 00:30:42,380 --> 00:30:45,420 והיא עושה מספר דברים מעניינים למדי. 506 00:30:45,420 --> 00:30:50,260 אם אני נכנסתי עם שם המשתמש שלי, למשל, 507 00:30:50,260 --> 00:30:53,110 אני יכול לשאול אותו כדי ליצור ענן תג, למשל, 508 00:30:53,110 --> 00:30:56,480 ומה שהוא הולך לעשות הוא להחזיר לי את דמותו של 509 00:30:56,480 --> 00:30:59,850 כל הז'אנרים השונים ודברים מסוג זה שאני אוהב לשמוע. 510 00:30:59,850 --> 00:31:01,410 איך הוא עושה את זה? 511 00:31:01,410 --> 00:31:05,670 מאוד בעצם זה אומר לLast.fm API הנה זה משתמש. 512 00:31:05,670 --> 00:31:10,710 אני הייתי רוצה לדעת את הז'אנר של כל שיר שאי פעם הקשיב ל, 513 00:31:10,710 --> 00:31:15,130 ואתה יכול לעשות זאת על ידי ביצוע שיחת AJAX די פשוט Last.fm-API. 514 00:31:15,130 --> 00:31:18,990 את יחזרו רשימה גדולה, ואז ברור שדברים אחרים כלשהו שנעשה 515 00:31:18,990 --> 00:31:22,280 כדי להפוך אותה למילת ענן, אבל אתה יכול לראות כולל 516 00:31:22,280 --> 00:31:25,850 זה מאוד קל לגישה וקלה מאוד לשימוש. 517 00:31:25,850 --> 00:31:30,750 ממש נחמד למספר דברים. 518 00:31:30,750 --> 00:31:35,940 >> אני חושב שכל העניין אני אגיד באופן כללי. 519 00:31:35,940 --> 00:31:39,040 הדבר האחרון שאני אזכיר על APIs באופן כללי הוא ש 520 00:31:39,040 --> 00:31:41,840 לפעמים אתה תוכל לרוץ לתוך משהו שנקרא שיעור ההגבלה, 521 00:31:41,840 --> 00:31:44,940 והרעיון של שיעור המגביל הוא שאתה לא רוצה להתעלל בממשקי API. 522 00:31:44,940 --> 00:31:48,130 במילים אחרות, זה ממש נחמד שהרבה האתרים האלה יש APIs 523 00:31:48,130 --> 00:31:51,070 כי אתה יכול ללכת ולשימוש בחינם. 524 00:31:51,070 --> 00:31:54,460 עם זאת, אם אתה עושה מיליון או מיליארדים של בקשות ליום, 525 00:31:54,460 --> 00:31:57,610 לדוגמה, אם אתה תקוע בלולאה אינסופית שאין שיעור של תשאול 526 00:31:57,610 --> 00:32:00,680 איזה API ומקבל בחזרה כמות עצומה של נתונים, 527 00:32:00,680 --> 00:32:04,570 כמובן שזה לא טוב, אז מה הרבה APIs לעשות הוא שהקצב הזה מגביל תכונה 528 00:32:04,570 --> 00:32:09,970 זה אומר שאתה יכול לעשות 1,000 בקשות ליום לכתובת או משהו כזה IP בלבד. 529 00:32:09,970 --> 00:32:12,540 ואם אתה עושה הרבה בדיקות ודברים מהסוג הזה, 530 00:32:12,540 --> 00:32:14,890 לפעמים אתה תוכל לרוץ לתוך זה, ופתאום זה מה שיבלום אותך 531 00:32:14,890 --> 00:32:18,280 ואומרים לא, אני לא נותן לך שום נתונים נוספים. 532 00:32:18,280 --> 00:32:20,000 >> מה אתה רוצה לעשות הוא לשחק לפי הכללים. 533 00:32:20,000 --> 00:32:22,950 אתה רוצה לוודא שאתה קורא את מפרט ה-API בזהירות. 534 00:32:22,950 --> 00:32:26,330 אם יש לו כללים מסוימים מצורפים אליו, כמו שאתה יכול לעשות X שאילתות ליום בלבד 535 00:32:26,330 --> 00:32:30,000 או שאתה יכול לגשת לחלק מהנתונים של מספר מסוים של פעמים בלבד 536 00:32:30,000 --> 00:32:32,900 או משהו כמו שאתה רוצה לוודא שאתה מקל על זה. 537 00:32:32,900 --> 00:32:38,360 כל זמן שאתה משחק בתוך הכללים האלה אתה כנראה תצטרך זמן ממש נחמד באמצעות ממשקי API. 538 00:32:38,360 --> 00:32:42,030 takeaway הכולל שלך הוא APIs של ממש, ממש שימושי. 539 00:32:42,030 --> 00:32:45,610 >> יש API לכמעט כל שירות אינטרנט גדול בחוץ. 540 00:32:45,610 --> 00:32:50,700 פחות או יותר כל חלק של כלי Suite גוגל, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 Gmail, Google Calendar, כל הדברים האלה יש API שלה. 542 00:32:54,390 --> 00:32:58,280 אתה יכול להשתמש בם כדי להגיע משני נתוני השרת ולשלוח את הנתונים לשרת. 543 00:32:58,280 --> 00:33:00,870 במילים אחרות, אם אתה רוצה להפוך את אפליקציה של לוח שנה שיכול לעדכן 544 00:33:00,870 --> 00:33:04,190 Google Calendar של מישהו, יש API לזה. 545 00:33:04,190 --> 00:33:07,810 אם אתה רוצה לעשות משהו שהולך להגיד לך איפה 546 00:33:07,810 --> 00:33:12,530 המיקום של כתובת מסוימת הוא שאתה יכול להשתמש-Google Maps API לשם כך. 547 00:33:12,530 --> 00:33:15,860 APIs מידה פנטסטית שימושי, והם בכל מקום. 548 00:33:15,860 --> 00:33:18,700 אם אתה מעוניין בסוג כלשהו של רעיון, 549 00:33:18,700 --> 00:33:22,170 יש כנראה קשור API שאתה יכול להשתמש בו כדי לקבל נתונים רבים 550 00:33:22,170 --> 00:33:25,060 מהר מאוד ומאוד פשוט. 551 00:33:25,060 --> 00:33:28,140 >> אם אתה עדיין מחפש פרויקט, או אם אתה רק רוצה לשחק 552 00:33:28,140 --> 00:33:31,820 עם משהו באופן כללי, APIs בהחלט שווה לעשות. 553 00:33:31,820 --> 00:33:37,200 תודה, ואני שמח לענות על כל שאלה שאתם יכולים להיות. 554 00:33:37,200 --> 00:33:44,900 אוקיי, תודה רבה. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]