1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Seminar] [eines Programmierers Einführung APIs] 2 00:00:02,480 --> 00:00:04,059 [Billy Janitsch] [Harvard University] [Tommy MacWilliam] 3 00:00:04,059 --> 00:00:08,220 [Dies ist CS50.] [CS50.TV] 4 00:00:08,220 --> 00:00:12,100 >> Hallo, alle, ich bin Billy, und heute werde ich über APIs zu sprechen, 5 00:00:12,100 --> 00:00:15,220 oder Anwendungsprogrammierschnittstellen, 6 00:00:15,220 --> 00:00:20,040 speziell im Zusammenhang mit der CS50 endgültigen Projekte und solche Dinge. 7 00:00:20,040 --> 00:00:22,490 In der Regel, was ist ein API? 8 00:00:22,490 --> 00:00:25,530 Ganz allgemein ist es eine Art mittleren Mann, 2 Stück ermöglicht 9 00:00:25,530 --> 00:00:28,610 von Software, um miteinander zu kommunizieren. 10 00:00:28,610 --> 00:00:32,530 Das ist eine Art von sehr weit gefasste Definition und ist nicht so relevant für das, was wir gerade sehen. 11 00:00:32,530 --> 00:00:35,450 Was wir wirklich wollen, ist eine Art von nützlichen Mittelweg 12 00:00:35,450 --> 00:00:40,570 mit irgendeiner Art von Datenbank irgendwo kommunizieren. 13 00:00:40,570 --> 00:00:43,310 >> Hier ist ein Diagramm, und im Grunde die Idee ist, dass 14 00:00:43,310 --> 00:00:46,790 wir sind eine Anwendung, und wir wollen, um Daten aus einer Datenbank zu erhalten, 15 00:00:46,790 --> 00:00:49,570 aber wir wollen nicht direkt auf die Datenbank abzufragen. 16 00:00:49,570 --> 00:00:52,710 Stattdessen wollen wir durch diese Art Mittelweg Mann, der API gehen. 17 00:00:52,710 --> 00:00:55,440 Die Idee hinter daß für Zahlen 2 und 3 auf dem Diagramm 18 00:00:55,440 --> 00:00:57,750 sind beide gehen sehr kompliziert und chaotisch. 19 00:00:57,750 --> 00:00:59,960 Mit anderen Worten, wenn die API wird das Abfragen der Datenbank, 20 00:00:59,960 --> 00:01:03,300 es ist wahrscheinlich zu sein mit SQL-Tabellen und all das Zeug, 21 00:01:03,300 --> 00:01:05,489 und wir haben ein bisschen darüber in CS50 gelernt, aber insgesamt 22 00:01:05,489 --> 00:01:07,590 haben Sie bemerkt, dass es ein bisschen wie ein Schmerz ist. 23 00:01:07,590 --> 00:01:10,590 Es wird sehr, sehr kompliziert und chaotisch, vor allem wenn man machst 24 00:01:10,590 --> 00:01:12,530 komplexe Abfragen und diese Art von Dingen. 25 00:01:12,530 --> 00:01:15,960 >> Was wir wirklich wollen, ist eine Art von nützlichen und einfach 26 00:01:15,960 --> 00:01:19,780 , dass die Daten zu bekommen, und das ist die Idee hinter Nummern 1 und 4 auf der Karte. 27 00:01:19,780 --> 00:01:23,600 In anderen Worten, wir wollen eine wirklich einfache Möglichkeit, die API zu sagen, was für uns zu bekommen 28 00:01:23,600 --> 00:01:27,760 und eine wirklich einfache Möglichkeit, diese Daten wieder zu bekommen. 29 00:01:27,760 --> 00:01:33,020 Es gibt ein Hauptrestaurant, dass die Daten in der Regel gesendet und empfangen werden, 30 00:01:33,020 --> 00:01:36,490 das ist JSON oder JavaScript Object Notation. 31 00:01:36,490 --> 00:01:40,370 Das kann ein wenig soweit wie dem Senden der Anfrage an die API variieren. 32 00:01:40,370 --> 00:01:43,210 In anderen Worten, wenn Sie einige bestimmte Menge an Daten, 33 00:01:43,210 --> 00:01:46,670 wie Sie sagen, die API zu bekommen, dass Daten können ein wenig variieren. 34 00:01:46,670 --> 00:01:49,210 Normalerweise ist es beinhaltet die Vornahme von irgendeine Art von Netzwerk-Anfrage. 35 00:01:49,210 --> 00:01:53,130 In anderen Worten, den Zugriff auf irgendeine Art von URL, geht die API zu sagen 36 00:01:53,130 --> 00:01:56,190 genau das, was Sie wollen, aber die Daten fast immer zurückgeschickt, 37 00:01:56,190 --> 00:01:59,530 mit anderen Worten, Nummer 4 in JSON. 38 00:01:59,530 --> 00:02:01,030 >> Was ist JSON genau? 39 00:02:01,030 --> 00:02:03,030 Wie ich schon sagte, JavaScript Object Notation. 40 00:02:03,030 --> 00:02:07,090 Es ist im Grunde die universellen Standard für die Übertragung und den Empfang von Daten. 41 00:02:07,090 --> 00:02:11,410 Die Idee ist, dass Sie diese 3 Kategorien von Dingen zu haben. 42 00:02:11,410 --> 00:02:13,540 Sie haben Arrays, HashMaps und Primitiven. 43 00:02:13,540 --> 00:02:16,580 Arrays und HashMaps man sich ein wenig in CS50 angeschaut habe, 44 00:02:16,580 --> 00:02:19,870 aber du hast Art einen sehr strengen Sinn, was sie sind gekommen. 45 00:02:19,870 --> 00:02:22,780 In anderen Worten, mit Arrays, die Sie wissen, dass sie Typ gebunden, 46 00:02:22,780 --> 00:02:26,560 so müssen Sie nur eine Art von Typ, der in der gesamten Array geht. 47 00:02:26,560 --> 00:02:29,310 JSON ist viel mehr Nachsicht mit dieser Art der Sache. 48 00:02:29,310 --> 00:02:33,590 Grundsätzlich ist die Idee konstruieren Sie dieses Objekt, 49 00:02:33,590 --> 00:02:36,270 Welche kann jeder dieser 3 Dinge zusammen 50 00:02:36,270 --> 00:02:39,470 und kann aus mehreren einzelnen von ihnen zusammengesetzt werden, und sie können verschachtelt werden. 51 00:02:39,470 --> 00:02:42,110 >> Hier ist eine Art Beispiel für JSON, 52 00:02:42,110 --> 00:02:47,910 was diese geschweiften Klammern hier vertreten Ihre hashmap, 53 00:02:47,910 --> 00:02:51,400 und ein hashmap ist im Grunde ein Mapping von einer Art Schlüssel 54 00:02:51,400 --> 00:02:53,340 irgendeine Art von Wert. 55 00:02:53,340 --> 00:02:56,440 Du wirst sehen, dass wir die Eigenschaften Schlüssel haben, 56 00:02:56,440 --> 00:02:59,600 und das ist auf ein Array Mapping, ist die ganze Sache. 57 00:02:59,600 --> 00:03:04,120 Wir sehen ein weiteres Element der hashmap, die diese Taste isAwesome ist, 58 00:03:04,120 --> 00:03:07,370 Welche Karten zu einem primitiven Wert true, in anderen Worten, ein boolean. 59 00:03:07,370 --> 00:03:09,420 Primitives kann Strings sein. Sie können ganze Zahlen sein. 60 00:03:09,420 --> 00:03:11,960 Sie können bools sein, so etwas. 61 00:03:11,960 --> 00:03:18,410 Und sehen Sie den Inhalt dieses Arrays, dass die Eigenschaften Punkte hat 2 Saiten in ihm, 62 00:03:18,410 --> 00:03:20,050 selbst ähnlich und wunderbar. 63 00:03:20,050 --> 00:03:27,410 Das sind 2 Eigenschaften von JSON, und wir sehen, dass JSON ist genial. 64 00:03:27,410 --> 00:03:30,060 An, dass sich ein wenig näher Ich werde zu konstruieren 65 00:03:30,060 --> 00:03:32,870 ein komplexeres Beispiel für JSON hier. 66 00:03:32,870 --> 00:03:37,000 >> Lassen Sie uns mit einer Reihe starten, zum Beispiel, nur ein leeres Array. 67 00:03:37,000 --> 00:03:39,180 Aber diese Art von langweilig ist, so werden wir es füllen sich ein wenig, 68 00:03:39,180 --> 00:03:43,420 und wie ich schon sagte, sind Arrays in JSON-Typ gebunden, 69 00:03:43,420 --> 00:03:46,400 so konnten wir auch einen String hier, was ist hallo, 70 00:03:46,400 --> 00:03:49,330 und das ist ein weiteres Element des Arrays. 71 00:03:49,330 --> 00:03:53,450 Und ebenso können wir eine hashmapping hier hinzufügen, was geht, um ein paar Mappings haben. 72 00:03:53,450 --> 00:04:00,470 Es wird eine Zuordnung von Namen auf den String Billy haben. 73 00:04:00,470 --> 00:04:04,590 Wir haben eine Zuordnung von Namen zu Billy, und wir haben eine Zuordnung von 74 00:04:04,590 --> 00:04:10,860 Lieblingsfarbe blau. 75 00:04:10,860 --> 00:04:12,700 Das ist im Grunde ein gutes Beispiel für JSON. 76 00:04:12,700 --> 00:04:18,160 Es Art von gets into-hoppla, muss ein Komma gibt-all der verschiedenen Teile davon. 77 00:04:18,160 --> 00:04:21,140 Auch ist es nicht geben gebunden überhaupt, so können Sie jede Art von Typen 78 00:04:21,140 --> 00:04:24,710 im Inneren, was Sie wollen, und die Idee ist, dass es sich selbst ähnlich. 79 00:04:24,710 --> 00:04:28,830 In anderen Worten, dies ist hier ein JSON-Objekt, wie diese ganze Sache, 80 00:04:28,830 --> 00:04:33,200 wie eben diese, so können Sie sich eine primitive ein Objekt sein, 81 00:04:33,200 --> 00:04:35,680 ein Array ein Objekt sein oder ein hashmap ein Objekt sein. 82 00:04:35,680 --> 00:04:40,270 >> Wie kann man irgendwie sehen, ist JSON wirklich, wirklich nützlich, da es so vielseitig ist. 83 00:04:40,270 --> 00:04:45,860 Sie können alle möglichen Daten, die Sie in JSON gespeichert vorstellen kann. 84 00:04:45,860 --> 00:04:47,900 Das macht es ein wirklich schöner Sprache mit APIs verwenden 85 00:04:47,900 --> 00:04:50,770 weil es ziemlich viel bedeutet, dass, egal welche Daten, die Sie 86 00:04:50,770 --> 00:04:54,270 es geht um einen Weg, um es wieder in JSON sein. 87 00:04:54,270 --> 00:04:58,600 Ein paar Eigenschaften, die JSON besonders gut für diese Art der Sache zu machen. 88 00:04:58,600 --> 00:05:02,270 Wie Sie sehen können, auf eine Menge von Dingen gegenüber, dass Sie mit gearbeitet in CS50 89 00:05:02,270 --> 00:05:06,040 es ist vergleichsweise sehr leicht zu lesen und auch sehr einfach zu schreiben. 90 00:05:06,040 --> 00:05:09,700 Sie können Gedankenstrich es aus, wenn Sie wollen, wie ich in diesem Beispiel tat, 91 00:05:09,700 --> 00:05:12,990 das gibt Ihnen eine schöne, hübsche Version, dass man wirklich gut zu sehen. 92 00:05:12,990 --> 00:05:17,150 Aber darüber hinaus ist es auch leicht zu lesen und für einen Computer zu schreiben. 93 00:05:17,150 --> 00:05:19,870 In anderen Worten, es ist einfach zu analysieren und einfach zu codieren, 94 00:05:19,870 --> 00:05:23,820 was bedeutet, dass es ziemlich schnell ist so weit wie das Lesen der Daten betroffen ist, 95 00:05:23,820 --> 00:05:26,460 und JSON kann sehr schnell erzeugt werden. 96 00:05:26,460 --> 00:05:30,300 >> Es ist auch sehr leicht zu verschiedenen Teilen des JSON und diese Art der Sache zugreifen. 97 00:05:30,300 --> 00:05:33,320 Das ist schön, und außerdem die Tatsache, dass es sich von selbst ähnliche ist, 98 00:05:33,320 --> 00:05:36,090 in anderen Worten, die Tatsache, dass man JSON in JSON in JSON haben 99 00:05:36,090 --> 00:05:40,040 ist wirklich nett zum Speichern von Daten. 100 00:05:40,040 --> 00:05:45,490 Ein weiterer Teil, die im Allgemeinen ist sehr nützlich bei der Arbeit mit APIs ist jQuery. 101 00:05:45,490 --> 00:05:49,290 Sie haben ein wenig JavaScript gelernt haben, ist das eine nette Art und Weise 102 00:05:49,290 --> 00:05:53,710 HTML und CSS innerhalb einer Website zu manipulieren. 103 00:05:53,710 --> 00:05:57,190 Aber es kann Art sein, ein Schmerz, um Code in plain JavaScript, 104 00:05:57,190 --> 00:05:59,810 vor allem, weil JavaScript ist ein wirklich verbose Sprache. 105 00:05:59,810 --> 00:06:03,020 Sie haben eine Menge von Syntax zu lernen, und nur um ganz einfache Dinge zu tun 106 00:06:03,020 --> 00:06:07,590 dauert es eine Menge Code, so jQuery ist eine Bibliothek für JavaScript. 107 00:06:07,590 --> 00:06:09,800 In anderen Worten, es ist eine JavaScript-Datei, die Sie laden können 108 00:06:09,800 --> 00:06:12,730 und verwenden Sie dann jQuery-Funktionen, um bestimmte Dinge zu tun. 109 00:06:12,730 --> 00:06:15,670 Und jQuery Grunde macht Ihnen das Leben ein ganzes Stück einfacher. 110 00:06:15,670 --> 00:06:20,390 Es vereinfacht, was Hunderte von Zeilen in JavaScript take down auf ein paar Zeilen in jQuery. 111 00:06:20,390 --> 00:06:24,430 >> Es ist besonders nützlich, wenn Sie APIs sind da in der Regel 112 00:06:24,430 --> 00:06:27,600 Wie werden Sie Zugriff auf APIs ist, indem AJAX-Anfragen, 113 00:06:27,600 --> 00:06:30,130 und ich glaube, David hat in der Vorlesung erwähnt, dass AJAX-Anfragen 114 00:06:30,130 --> 00:06:33,120 sind in der Regel, wenn du machst ein Netzwerk Anfrage zu einer Art von Server- 115 00:06:33,120 --> 00:06:37,760 und immer wieder eine Art von Daten und Aktualisierung einer Seite sofort. 116 00:06:37,760 --> 00:06:41,840 Während in plain JavaScript, das würde verrückt Anzahl der Zeilen 117 00:06:41,840 --> 00:06:44,620 um alle Header validieren und alles tun, dieser Art von Sachen, 118 00:06:44,620 --> 00:06:46,810 jQuery hat eine wirklich einfache Funktion namens AJAX, 119 00:06:46,810 --> 00:06:51,760 und alles, was Sie in AJAX tun ist, geben die Parameter, die Sie wollen, um die API geben, 120 00:06:51,760 --> 00:06:56,830 die Lage des API und jede zusätzliche Art von Optionen, die Sie konfigurieren möchten. 121 00:06:56,830 --> 00:07:02,480 Es ist wirklich, wirklich nett und sehr nützlich für diese Art der Sache. 122 00:07:02,480 --> 00:07:06,970 Das ist alles, was wir brauchen, um immer die Hände schmutzig in APIs. 123 00:07:06,970 --> 00:07:10,220 >> Ich werde, um ein paar Beispiele und erkunden ihre unterschiedlichen Eigenschaften 124 00:07:10,220 --> 00:07:13,150 und warum sie für verschiedene Arten von Dingen nützlich. 125 00:07:13,150 --> 00:07:15,570 Das erste, was ich eigentlich zeigen, werden Sie ist etwas, das ich arbeite 126 00:07:15,570 --> 00:07:18,310 an meinem Forschungslabor ist das ein Ngram Viewer, 127 00:07:18,310 --> 00:07:23,270 und im Grunde die Idee eines Ngram Viewer ist man für irgendeine Art von Wort suchen 128 00:07:23,270 --> 00:07:28,840 oder eine Phrase und sehen, wie oft es in einem bestimmten Satz von Text im Laufe der Zeit ist erschienen. 129 00:07:28,840 --> 00:07:33,160 Dieses Beispiel hier ist dieser Datensatz von Babys 130 00:07:33,160 --> 00:07:36,480 Das waren in New York zwischen 1920 und 2000 geboren. 131 00:07:36,480 --> 00:07:40,090 Wir suchen können, zum Beispiel für den Namen Jennifer, 132 00:07:40,090 --> 00:07:44,400 und wir sehen, dass vor 1960 war es wirklich nicht allzu viel verwendet, 133 00:07:44,400 --> 00:07:48,900 und dann als wir in späteren Jahren immer ist mehr und mehr verwendet. 134 00:07:48,900 --> 00:07:53,680 Wir können auch Vergleiche, so dass, wenn wir Jennifer vergleichen, um beispielsweise Thomas, 135 00:07:53,680 --> 00:07:56,520 können wir sehen, Thomas war ziemlich verbreitet im Laufe der Geschichte, 136 00:07:56,520 --> 00:07:58,780 während Jennifer ist eine neuere Namen. 137 00:07:58,780 --> 00:08:00,590 Wir können diese Art der Sache. 138 00:08:00,590 --> 00:08:02,460 >> Wie funktioniert diese Anwendung arbeiten? 139 00:08:02,460 --> 00:08:06,030 Grundsätzlich funktioniert das über eine API. 140 00:08:06,030 --> 00:08:08,660 In anderen Worten, wir haben bestimmte Parameter hier. 141 00:08:08,660 --> 00:08:11,360 Wir haben die Parameter dessen, was wir eigentlich suchen, 142 00:08:11,360 --> 00:08:13,720 was sind diese Namen, und dann haben wir noch ein paar andere Eigenschaften, 143 00:08:13,720 --> 00:08:16,570 wie die Y-Achse und der X-Achse. 144 00:08:16,570 --> 00:08:18,440 Sie können sehen, wir haben ein paar verschiedene Möglichkeiten, so weit das 145 00:08:18,440 --> 00:08:20,860 Zeitauflösung zu verwenden und diese Art von Dingen. 146 00:08:20,860 --> 00:08:26,700 Wir haben diese Möglichkeiten so weit wie, welche Daten wir eigentlich wollen aus der Datenbank, 147 00:08:26,700 --> 00:08:29,400 und wir wollen, dass die Daten wieder in einigen nützlichen Weg. 148 00:08:29,400 --> 00:08:34,020 Normalerweise, wenn wir Abfragen wurden direkt auf die Datenbank wäre es eine Art von Schmerzen zu tun 149 00:08:34,020 --> 00:08:38,970 weil vermutlich diese Daten über Babynamen lebt in irgendeiner Datenbank irgendwo, 150 00:08:38,970 --> 00:08:42,789 und es wäre wirklich kompliziert sein, muss es manuell abzufragen 151 00:08:42,789 --> 00:08:45,830 und genau entscheiden, welche Daten, um zurückzukehren. 152 00:08:45,830 --> 00:08:49,300 In anderen Worten, wir nur über Jennifer und Thomas kümmern in diesem Fall 153 00:08:49,300 --> 00:08:53,410 und wir nur auf eine bestimmte Achse und all das Zeug kümmern. 154 00:08:53,410 --> 00:08:55,720 >> Wie können wir dies zu umgehen? 155 00:08:55,720 --> 00:09:01,200 Um in diesen API ein wenig mehr grabe ich werde Ihnen zeigen, ein weiteres Beispiel für diese Plattform 156 00:09:01,200 --> 00:09:04,490 die verwendet eine etwas andere Datensatz. 157 00:09:04,490 --> 00:09:09,950 Dieser Datensatz, anstatt Babynamen, ist eigentlich nur das gesamte 158 00:09:09,950 --> 00:09:12,460 Drucken Publikationsdatenbank Open Library, 159 00:09:12,460 --> 00:09:18,410 das ist eine riesige Quelle für Texte im Laufe der letzten 100 Jahre oder so veröffentlicht. 160 00:09:18,410 --> 00:09:23,540 Die Idee ist, haben wir diesen kompositorischen von Millionen und Abermillionen von Text, 161 00:09:23,540 --> 00:09:27,420 was können wir nun für unterschiedliche Wörter und Phrasen in. suchen 162 00:09:27,420 --> 00:09:30,840 Hier ist ein Beispiel, das ein wenig anders aus dem vorherigen Beispiel variiert 163 00:09:30,840 --> 00:09:33,350 Ich habe Ihnen gezeigt, was wir haben diese 3 Suchanfragen, 164 00:09:33,350 --> 00:09:36,290 Krieg, Krieg, und die Französisch Wort für Krieg, der guerre ist. 165 00:09:36,290 --> 00:09:40,380 Und wir innerhalb von 3 verschiedenen Abschnitten der gesamten Datenbank suchen. 166 00:09:40,380 --> 00:09:45,080 Mit anderen Worten, in dieser ersten Abfrage wir nur die Suche in den USA, 167 00:09:45,080 --> 00:09:51,150 in der zweiten nur in Großbritannien, und der dritte nur aus den Werken in Frankreich veröffentlicht. 168 00:09:51,150 --> 00:09:53,120 Wir sehen einige interessante Muster entstehen. 169 00:09:53,120 --> 00:09:58,180 Zum Beispiel, sehen wir gleich um hier was- 170 00:09:58,180 --> 00:10:02,410 oops, durcheinander ich die Achse ein wenig, aber Sie können in diesem Bereich finden Sie hier 171 00:10:02,410 --> 00:10:05,730 um den Bürgerkrieg gibt es eine große Spitze in der amerikanischen Ausgabe 172 00:10:05,730 --> 00:10:08,340 aber nicht so eine große Spitze in den beiden anderen, und das ist natürlich, weil 173 00:10:08,340 --> 00:10:10,880 der amerikanische Bürgerkrieg war an diesem Punkt passiert. 174 00:10:10,880 --> 00:10:13,890 >> Wir können sehen, ein paar coole Sachen gibt, 175 00:10:13,890 --> 00:10:17,070 aber was uns wirklich wichtig ist, wie wir diese Daten einsehen. 176 00:10:17,070 --> 00:10:21,320 Ich werde Sie hinter die Kulissen in diesem app in ein wenig zu nehmen. 177 00:10:21,320 --> 00:10:24,540 Ein netter Trick ist, wenn man mit dem Ort und Art arbeiten wollen wissen, 178 00:10:24,540 --> 00:10:27,430 was passiert hinter den Kulissen, können Sie eröffnen die Entwickler-Tools. 179 00:10:27,430 --> 00:10:30,200 Ich werde zu sein mit Chrome Developer Tools, und zu denen sich 180 00:10:30,200 --> 00:10:35,160 Sie tun können, Steuerung, Verschiebung, J, und das bringt Sie die JavaScript-Konsole. 181 00:10:35,160 --> 00:10:37,420 Es gibt ein paar Lappen hier. 182 00:10:37,420 --> 00:10:39,680 Sie können alle ziemlich nützlich sein unter verschiedenen Umständen, aber ich sorge über das Netzwerk 183 00:10:39,680 --> 00:10:44,150 Registerkarte gerade jetzt, und ich habe eigentlich zu aktualisieren, dass Laufen zu bringen. 184 00:10:44,150 --> 00:10:50,180 Oh, sorry. 185 00:10:50,180 --> 00:10:52,320 Es mag eine zufällige Beispiel zu geben. 186 00:10:52,320 --> 00:10:54,700 Okay, wir dieses Beispiel anstatt dann verwenden. 187 00:10:54,700 --> 00:11:01,330 >> Die Idee ist, gibt es diese API hier 188 00:11:01,330 --> 00:11:05,330 und Sie können genau sehen, was die API zurück. 189 00:11:05,330 --> 00:11:10,220 Dies ist, was die Anwendung immer wieder aus dem API mit geschickt diesen Antrag ab. 190 00:11:10,220 --> 00:11:13,680 Lassen Sie mich in ein wenig zu vergrößern, 191 00:11:13,680 --> 00:11:18,340 und wir können im Grunde sehen, es ist nur eine Reihe von Schlüssel-Wert-Paare in JSON. 192 00:11:18,340 --> 00:11:23,220 In anderen Worten, wir haben dieses hashmap hier die Zuordnung von Werten ist. 193 00:11:23,220 --> 00:11:26,440 Mit anderen Worten, es ist Abbilden Jahren Werte. 194 00:11:26,440 --> 00:11:32,600 Im Jahre 1765, was Wort, das wir ursprünglich gesucht wird 90 mal verwendet 195 00:11:32,600 --> 00:11:35,810 von 1 Million, so bekommen wir wieder dieses Ergebnis. 196 00:11:35,810 --> 00:11:40,280 Es ist nicht genau JSON da wir dieses kleine Ergebnis header hier zu haben, 197 00:11:40,280 --> 00:11:45,630 Beachten Sie aber, dass diese ganze Objekt hier nur eine große große JSON Blob. 198 00:11:45,630 --> 00:11:51,070 Wir haben eine Reihe hier, die dieses ganze Element enthält, 199 00:11:51,070 --> 00:11:55,590 und Sie können sehen, dass ganze Element dort endet, und dann haben wir einen weiteren großen Element 200 00:11:55,590 --> 00:11:59,430 das geht den ganzen Weg bis zum Ende, und das endet hier. 201 00:11:59,430 --> 00:12:02,200 Wir haben einen wirklich großen Array mit 2 Objekte in ihm, 202 00:12:02,200 --> 00:12:04,630 und jedes dieser Objekte eine hashmap. 203 00:12:04,630 --> 00:12:07,340 Sie können in jedem dieser HashMaps sehen, wir haben eine Zuordnung 204 00:12:07,340 --> 00:12:12,700 dieses Index-Wert auf 0, und dieser Wert den Wert zu einem anderen hashmap, 205 00:12:12,700 --> 00:12:18,360 die wiederum ist die Abbildung X-Achse Werte Y-Achse Werte. 206 00:12:18,360 --> 00:12:20,970 >> Sie können sehen, JSON bekommt ein wenig kompliziert, aber insgesamt 207 00:12:20,970 --> 00:12:24,190 es ist eigentlich sehr nützlich, und es ist sehr einfach im Vergleich zu den Zugriff auf 208 00:12:24,190 --> 00:12:27,390 verschiedene andere Formen der Notation. 209 00:12:27,390 --> 00:12:30,550 Soweit, was wir tatsächlich das Senden von Daten an die API zu bekommen, 210 00:12:30,550 --> 00:12:34,690 Ich werde in das hintere Ende ein bisschen hier. 211 00:12:34,690 --> 00:12:39,850 Das ist die große JavaScript-Datei, die der Behandlung der Wechselwirkungen der Web-App ist, 212 00:12:39,850 --> 00:12:44,810 und so haben wir nicht über die meisten dafür interessieren, aber wir kümmern uns um etwas von ihm. 213 00:12:44,810 --> 00:12:47,410 Zum Beispiel kümmern wir uns um dieses BuildQuery Funktion 214 00:12:47,410 --> 00:12:50,670 und die Idee dieser Funktion ist im Grunde ist es auf der Seite suchen, 215 00:12:50,670 --> 00:12:53,750 herauszufinden, was der Benutzer abzufragen, mit anderen Worten will, 216 00:12:53,750 --> 00:12:57,090 Prüfung solcher Boxen, wo sie haben Eingabe ihrer Suchbegriffe, 217 00:12:57,090 --> 00:13:01,380 Prüfung der verschiedenen Y-und X-Achse Werte, die sie gewählt haben und alle diese Art von Dingen, 218 00:13:01,380 --> 00:13:06,650 und es wird zu spucken diese Abfrage Wert, die ich dann senden kann off der API. 219 00:13:06,650 --> 00:13:09,180 >> Das sieht kompliziert, und es ist ziemlich kompliziert 220 00:13:09,180 --> 00:13:18,090 aber was ich jetzt tun-in der Tat, ich bin schon dies zu tun, ist die Ur- 221 00:13:18,090 --> 00:13:21,640 ist, dass ich gehe, um die Konsole zu bekommen ausdrucken genau das Abfragewert 222 00:13:21,640 --> 00:13:28,110 dass es Platzverweise der API. 223 00:13:28,110 --> 00:13:30,870 Das ist eigentlich genau hier. Leider gibt es eine Menge Dinge. 224 00:13:30,870 --> 00:13:33,690 Aber das ist, was wir kümmern wird diese Aufgabe hier. 225 00:13:33,690 --> 00:13:35,300 Dies ist das Query-Objekt. 226 00:13:35,300 --> 00:13:40,670 In anderen Worten, dies ist genau das, was die Web-Anwendung ist mit dem API Senden 227 00:13:40,670 --> 00:13:45,730 und so wollen wir in einem etwas zu sehen, und wir sehen, wir haben ein paar Werte hier. 228 00:13:45,730 --> 00:13:48,710 Wir sehen, wir haben dieses Zähltyp, was Ereignisse pro Million Wörter, 229 00:13:48,710 --> 00:13:51,460 das ist genau das, was wir in der Y-Achse hier gewählt. 230 00:13:51,460 --> 00:13:53,740 Das ist, wo das herkommt ist. 231 00:13:53,740 --> 00:13:58,010 Wir haben eine Datenbank-Wert, was bedeutet, dass es gibt einige bestimmte Datenbank bedeutet, 232 00:13:58,010 --> 00:14:01,610 dass diese Daten in lebenden, und wir wollen, dass die Daten gezielt auf 233 00:14:01,610 --> 00:14:04,950 zu den Babynamen Daten, zum Beispiel gegenüber. 234 00:14:04,950 --> 00:14:08,320 Dann haben wir diese Gruppen Wert, 235 00:14:08,320 --> 00:14:12,090 die sagt, dass wir von Jahr zu suchen, im Gegensatz zu wollen 236 00:14:12,090 --> 00:14:16,030 andere X-Achse Wert. 237 00:14:16,030 --> 00:14:19,040 Dann haben wir eine Methode, die einige APIs werden mehrere Freizeitangeboten. 238 00:14:19,040 --> 00:14:22,360 Mit anderen Worten kann diese API auch wieder andere Arten von Daten, 239 00:14:22,360 --> 00:14:27,740 aber in diesem Fall soll diese Zuordnung der X-Achse die Y-Achse-Werte Werte. 240 00:14:27,740 --> 00:14:30,730 Das ist, was das sagt es zu tun gibt, 241 00:14:30,730 --> 00:14:35,020 und wir haben diese Suche Grenzen Array, das 2-Werte enthält. 242 00:14:35,020 --> 00:14:40,720 Die erste ist, was wir hier sehen, ist das alle Werte 243 00:14:40,720 --> 00:14:43,020 enthalten in diesem ersten kleinen Kasten an der Spitze. 244 00:14:43,020 --> 00:14:47,570 >> In anderen Worten, wir wollen nach dem Wort Kampf zu sehen, und wir wollen zu filtern 245 00:14:47,570 --> 00:14:51,920 von englischen Texten in der amerikanischen Literatur. 246 00:14:51,920 --> 00:14:54,590 Wir haben dieses Land, das den USA ist. 247 00:14:54,590 --> 00:14:59,130 Wir haben eine Sprache, die Englisch ist, so haben wir alle diese verschiedenen Teilen 248 00:14:59,130 --> 00:15:02,690 das sind alle erzählen die API genau das, was wir wollen. 249 00:15:02,690 --> 00:15:04,940 Wir wissen nicht, was die Daten, die wir bekommen noch zurück ist, 250 00:15:04,940 --> 00:15:10,970 aber wir wissen, dass die Daten wird eine bestimmte Form annehmen. 251 00:15:10,970 --> 00:15:13,650 Dieses Beispiel ist eine Art auf die komplizierte Seite 252 00:15:13,650 --> 00:15:16,180 und Sie würden nicht unbedingt werden über eine API diese komplexe, 253 00:15:16,180 --> 00:15:20,600 aber das ist Ihnen zu zeigen, die Reichweite und Kraft dessen, was APIs tun können. 254 00:15:20,600 --> 00:15:24,980 Mit anderen Worten, unter Verwendung einer relativ einfachen Abfragesystem wir haben grundsätzlich ein Eingabefeld 255 00:15:24,980 --> 00:15:29,490 mit ein paar anderen Selektoren an verschiedenen Orten. 256 00:15:29,490 --> 00:15:32,010 >> Lassen Sie mich wieder zu verkleinern hier. 257 00:15:32,010 --> 00:15:37,720 Wir haben ein Eingabefeld mit ein paar verschiedene Metadaten Selektionen, 258 00:15:37,720 --> 00:15:40,610 und wir haben Y-Achse und X-Achse Auswahl. 259 00:15:40,610 --> 00:15:42,830 Wir wissen nicht wirklich, dass viele Felder, 260 00:15:42,830 --> 00:15:46,210 und wir können sehr leicht erkennen, dass wir in der Lage, irgendeine Art von API abfragen 261 00:15:46,210 --> 00:15:48,510 und erhalten Daten zurück und steckte sie dann in diesem Diagramm 262 00:15:48,510 --> 00:15:52,080 welches dann dabei, es in einer sinnvollen Weise anzuzeigen. 263 00:15:52,080 --> 00:15:54,970 Um ein anderes Beispiel, das vielleicht ein bisschen besser kennen zu euch 264 00:15:54,970 --> 00:15:56,510 wir gehen auf Facebook drehen. 265 00:15:56,510 --> 00:15:59,440 Facebook-API wird als Facebook Graph, 266 00:15:59,440 --> 00:16:04,390 und im Grunde, was das bedeutet, ist Facebook versteht sich als dieser riesigen Datenbank 267 00:16:04,390 --> 00:16:08,000 aus vielen verschiedenen Teilen daß alle bestimmten Beziehungen zueinander haben. 268 00:16:08,000 --> 00:16:11,070 In anderen Worten, ich bin ein Benutzer auf Facebook, so habe ich ein Profil, 269 00:16:11,070 --> 00:16:14,310 und I auch bestimmte Freunde, und jeder von ihnen ein Profil hat, 270 00:16:14,310 --> 00:16:17,580 und jeder meiner Freunde hat eine Wand, die verschiedene Kommentare drauf hat, 271 00:16:17,580 --> 00:16:20,800 und jeder dieser Stellungnahmen hat Vorlieben und alle diese Art von Dingen. 272 00:16:20,800 --> 00:16:23,100 >> Es gibt viele verschiedene Teile zu Facebook. 273 00:16:23,100 --> 00:16:26,670 Es ist eine äusserst komplexe API, und es gibt Tonnen man damit machen kann, 274 00:16:26,670 --> 00:16:28,450 aber es ist eigentlich recht einfach zu bedienen. 275 00:16:28,450 --> 00:16:33,680 Ich werde beginnen, indem Sie auf graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 das ist meine einzigartige Account-Namen und Ihr Account-Name wird entweder 277 00:16:38,430 --> 00:16:43,710 irgendeine Art von Wort, wenn Sie haben es gewählt, oder es könnte nur eine Reihe von Zahlen. 278 00:16:43,710 --> 00:16:46,360 Was wir wieder ziemlich grundlegende Informationen. 279 00:16:46,360 --> 00:16:50,460 Wir sehen, dass ich einen Vornamen, der Billy, einen Nachnamen, die Janitsch ist zu haben. 280 00:16:50,460 --> 00:16:53,370 Es ist ein einzigartiges Facebook-ID, die ich habe. 281 00:16:53,370 --> 00:16:57,920 Sie können sehen, dass ich männlich bin und dass ich meine Sprache Einstellung 282 00:16:57,920 --> 00:17:01,290 British English. 283 00:17:01,290 --> 00:17:03,490 In anderen Worten, wir sehen sehr grundlegende Informationen hier. 284 00:17:03,490 --> 00:17:08,670 Es ist nicht zu viel, aber es gibt uns eine Vorstellung von dem, was da ist. 285 00:17:08,670 --> 00:17:10,849 >> Wir können die gleiche Sache zu David Malan tun, zum Beispiel. 286 00:17:10,849 --> 00:17:13,599 Ich glaube, sein Name ist dmalan. 287 00:17:13,599 --> 00:17:16,369 Wir sehen David Malan hat eine eindeutige ID. 288 00:17:16,369 --> 00:17:19,300 Er hat einen Namen, Vorname, zweiter Vorname, Nachname. 289 00:17:19,300 --> 00:17:24,210 Wir sehen auch, dass er männlich ist und hat seine Sprache auf US-Englisch. 290 00:17:24,210 --> 00:17:26,869 In anderen Worten, wir sehen ziemlich grundlegende Informationen hier. 291 00:17:26,869 --> 00:17:28,860 Nun, was passiert, wenn wir zum Auschecken etwas anderes versuchen? 292 00:17:28,860 --> 00:17:33,060 Sagen wir, ich bin interessiert, was David Malan hat auf Facebook beliebt. 293 00:17:33,060 --> 00:17:36,860 Was ich tun kann / mag. Jetzt haben wir ein Problem stoßen. 294 00:17:36,860 --> 00:17:39,280 Wir haben eine Art von Fehler, die ein Zugriffstoken, sagt 295 00:17:39,280 --> 00:17:41,660 ist erforderlich, um diese Ressource zu beantragen. 296 00:17:41,660 --> 00:17:44,730 Aber wenn man darüber nachdenkt, das tatsächlich Sinn macht, denn es wäre komisch 297 00:17:44,730 --> 00:17:47,830 wäre, wenn Sie auf jedes einzelne Teil des Facebook-Datenbank 298 00:17:47,830 --> 00:17:50,170 nur aus einer Art von einfachen API, nicht wahr? 299 00:17:50,170 --> 00:17:56,040 In anderen Worten, vermutlich Ihre Informationen können nicht von jedem, der es will zugegriffen werden. 300 00:17:56,040 --> 00:17:58,330 >> Dieser Fehler ist genau das, was das bedeutet. 301 00:17:58,330 --> 00:18:03,630 Einige APIs erfordern bestimmte Berechtigungen, um auf ihre Daten zugreifen. 302 00:18:03,630 --> 00:18:06,940 Und noch mehr erweiterte APIs, wie die Facebook ein, 303 00:18:06,940 --> 00:18:09,840 benötigen bestimmte Berechtigungen, um bestimmte Dinge zu tun. 304 00:18:09,840 --> 00:18:12,650 Ich sehe diese grundlegende Informationen über David Malan. 305 00:18:12,650 --> 00:18:15,950 Ich kann sehen, dass er männlich ist und dass er lebt in den USA, 306 00:18:15,950 --> 00:18:19,270 aber ich kann nicht wirklich etwas sehen Vergangenheit, dass. 307 00:18:19,270 --> 00:18:23,050 Um dies jetzt zu erhalten, muss Facebook dieses nette Tool 308 00:18:23,050 --> 00:18:27,690 was ist der Graph API Explorer, und der Gedanke, dass ist, können Sie sortieren von 309 00:18:27,690 --> 00:18:31,880 Make-up Berechtigungen für sich selbst basierend auf Ihr eigenes Konto 310 00:18:31,880 --> 00:18:35,680 und dann sehen Dinge, die speziell Ihrem Konto sehen können. 311 00:18:35,680 --> 00:18:45,120 Zum Beispiel, wenn ich graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 hoppla, ich denke, ich muss meine Token hier erneut zu überprüfen. 313 00:18:53,510 --> 00:18:55,950 Okay. 314 00:18:55,950 --> 00:19:01,740 Wenn ich das wieder tun, große, jetzt sehe ich, dass ich dieses Objekt zurück 315 00:19:01,740 --> 00:19:06,300 die besagt, dass I-Pool-Nudeln, die in der Kategorie Spiele und Spielzeuge haben möchten. 316 00:19:06,300 --> 00:19:08,620 Ich mag Walrosse, die in der Kategorie Tiere sind. 317 00:19:08,620 --> 00:19:10,180 Das sind meine eigentliche Facebook mag. 318 00:19:10,180 --> 00:19:13,280 Sie sind irgendwie peinlich. 319 00:19:13,280 --> 00:19:16,090 >> Aber wir sehen können, diese Daten alle in JSON zurückgegeben. 320 00:19:16,090 --> 00:19:18,160 Es ist ziemlich lesbar. 321 00:19:18,160 --> 00:19:20,970 Mit anderen Worten haben wir diese Zuordnung der Daten zu einer Art eines Arrays, 322 00:19:20,970 --> 00:19:25,220 und jedes Element dieses Arrays ist ein hashmap Welche Karten 323 00:19:25,220 --> 00:19:28,530 der Name einer dergleichen und die Kategorie einer dergleichen. 324 00:19:28,530 --> 00:19:31,240 Jedes dergleichen weist eine eindeutige ID. 325 00:19:31,240 --> 00:19:34,510 Es gibt alle Arten von verschiedenen Dingen von Daten, die wir bekommen können, 326 00:19:34,510 --> 00:19:37,980 und wenn man sich mit dem Facebook-API für einen CS50 endgültige Projekt interessiert 327 00:19:37,980 --> 00:19:40,720 oder für etwas, dass es eigentlich ganz machbar. 328 00:19:40,720 --> 00:19:44,260 Grundsätzlich, wie Sie rund um die Authentifizierung, was zu bekommen ist Facebook 329 00:19:44,260 --> 00:19:48,030 verwendet ein System namens OAuth oder Open Authentication, 330 00:19:48,030 --> 00:19:52,870 und ich möchte nicht in sie jetzt bekommen, weil OAuth oder die andere Art 331 00:19:52,870 --> 00:19:56,060 der Authentifizierung neigt dazu, eine Menge zwischen verschiedenen APIs variieren, 332 00:19:56,060 --> 00:19:58,320 so konnte ich eine lange Zeit gehen über jedes verbringen, 333 00:19:58,320 --> 00:20:01,170 aber sie sind eigentlich ziemlich selbsterklärend. 334 00:20:01,170 --> 00:20:04,050 >> Wenn Sie Google Facebook API ist es sehr gut lesbar. 335 00:20:04,050 --> 00:20:06,670 Es gibt eine ganze spec. 336 00:20:06,670 --> 00:20:10,210 Zum Beispiel ist dies die Dokumentation für die Facebook-API 337 00:20:10,210 --> 00:20:14,170 und Sie können sehen, ich bin auf der Seite Benutzer, so kann ich alles über die verschiedenen Arten von Dinge zu lernen 338 00:20:14,170 --> 00:20:17,170 , die zur Verfügung stehen, soweit Daten zu erhalten sind 339 00:20:17,170 --> 00:20:21,550 und auch die verschiedenen Berechtigungen, die ich brauche, um auf sie zuzugreifen. 340 00:20:21,550 --> 00:20:25,470 Wie wir gesehen haben, brauchen wir nicht Berechtigungen auf den Namen oder das Geschlecht zuzugreifen, 341 00:20:25,470 --> 00:20:29,380 aber darüber hinaus brauchen wir Berechtigungen für die meisten Dinge. 342 00:20:29,380 --> 00:20:33,040 Diese Seite, oder besser gesagt, diese Website wird Ihnen auch sagen, wie man 343 00:20:33,040 --> 00:20:35,640 ein Token in der Lage sein, um sich zu authentifizieren. 344 00:20:35,640 --> 00:20:39,290 Die meisten Authentifizierungssysteme verwenden irgendeine Art von Token 345 00:20:39,290 --> 00:20:42,880 wo Sie diese einzigartige Wert, das ist eine wirklich lange und zufällige Zeichenfolge, 346 00:20:42,880 --> 00:20:46,240 und auf diese Weise können sie assoziieren die Anfrage, dass du mit dir machen. 347 00:20:46,240 --> 00:20:50,560 In anderen Worten, sie wissen, dass Sie nicht tun etwas Verdächtiges mit ihren Daten. 348 00:20:50,560 --> 00:20:53,340 Sie wissen genau, was Sie bekommen. 349 00:20:53,340 --> 00:20:56,180 Sie wissen auch, dass Sie die Erlaubnis, diese Informationen anzeigen zu können. 350 00:20:56,180 --> 00:20:59,110 >> Wenn Sie gemacht haben eine Facebook-App und Ihre Anwendung hat bestimmte Benutzer, 351 00:20:59,110 --> 00:21:03,380 und diese Benutzer haben erlaubt, dass App auf bestimmte Teile ihres Profils zugreifen, 352 00:21:03,380 --> 00:21:07,790 dann unabhängig von API-Schlüssel oder Token, dass App ist mit 353 00:21:07,790 --> 00:21:11,090 in der Lage, die Daten für die Benutzer zugreifen können. 354 00:21:11,090 --> 00:21:13,780 Das klingt vielleicht kompliziert, aber es ist nicht so schlimm, 355 00:21:13,780 --> 00:21:16,810 und wenn Sie Facebook nutzen wollen Ich würde empfehlen, dass Sie 356 00:21:16,810 --> 00:21:18,990 halten Herumspielen mit ihren API. 357 00:21:18,990 --> 00:21:21,610 Es ist sehr cool, und Sie können eine Menge verschiedener Dinge zu tun. 358 00:21:21,610 --> 00:21:24,880 Wenn der Benutzer gewährt Ihnen diese Berechtigungen können Sie sogar zurück in die API 359 00:21:24,880 --> 00:21:28,820 und sagen, ich will eigentlich dieses Benutzers Wand zu veröffentlichen, oder will ich haben ihnen erlaubt, ein Foto, 360 00:21:28,820 --> 00:21:32,390 und deshalb auf Ihrer News-Feed Sie manchmal bekommen diese nervigen Dinge 361 00:21:32,390 --> 00:21:37,840 sagt Ihr Freund hat dieses Video auf irgendeine Art von seltsamen Ort oder so ähnlich sah. 362 00:21:37,840 --> 00:21:43,120 Das liegt daran, dass App wurde Zugang zu dieser Person die Mauer verfassen gewährt wurde. 363 00:21:43,120 --> 00:21:48,350 Die Idee Insgesamt ist die Facebook-API ziemlich kompliziert, sondern auch sehr nützlich. 364 00:21:48,350 --> 00:21:53,220 Definitiv lohnt sich, wenn Sie noch auf der Suche für eine endgültige Projekt. 365 00:21:53,220 --> 00:21:57,930 >> Ein weiterer Suite von APIs, dass ich werde gehen vorbei ist CS50 APIs. 366 00:21:57,930 --> 00:22:00,070 Lassen Sie mich hier zu vergrößern. 367 00:22:00,070 --> 00:22:03,390 CS50 tatsächlich zusammen eine ganze Reihe von APIs 368 00:22:03,390 --> 00:22:07,080 dass man für eine endgültige Projekt oder nur für alles, was du machst verwenden. 369 00:22:07,080 --> 00:22:12,830 Und sie sind meist Harvard verwandten, und sie unterscheiden sich von den HUDS Menü 370 00:22:12,830 --> 00:22:17,780 zum Beispiel zu dieser Harvard Events API, das wird Ihnen Zugriff auf eine Liste der 371 00:22:17,780 --> 00:22:21,290 verschiedene Ereignisse, die passiert sind in Harvard und diese Art von Dingen. 372 00:22:21,290 --> 00:22:24,510 Und so können wir auf einem von ihnen klicken und eine Spezifikation für sie, 373 00:22:24,510 --> 00:22:28,090 die Sie in der Lage, für jede API zu finden, und die Idee ist 374 00:22:28,090 --> 00:22:33,920 es lässt Sie wissen, A, speziell, was aus der API anfordern und wie es zu beantragen. 375 00:22:33,920 --> 00:22:37,370 In anderen Worten, wenn ich alle Ereignisse, die passiert morgen 376 00:22:37,370 --> 00:22:42,550 dann habe ich, offensichtlich gibt es dieses Datum, dass ich will in einem bestimmten Format, 377 00:22:42,550 --> 00:22:46,030 und B, wird es mir genau sagen, was es gehen, um wieder zu mir. 378 00:22:46,030 --> 00:22:48,590 Er wird sagen: Ich werde kehren Sie dieses JSON-Objekt, 379 00:22:48,590 --> 00:22:50,960 oder wie Sie sehen können, gibt es verschiedene Formate. 380 00:22:50,960 --> 00:22:54,050 >> Sie können auch wieder die Daten als CSV, zum Beispiel. 381 00:22:54,050 --> 00:22:57,620 Aber wissen Sie genau, wie diese Daten aussehen wird, wenn Sie es wieder 382 00:22:57,620 --> 00:23:00,610 so können Sie erwarten, um bestimmte Dinge zu tun. 383 00:23:00,610 --> 00:23:07,240 Wir können nach unten scrollen und zu sehen, zum Beispiel, wenn wir die API abgefragt werden soll 384 00:23:07,240 --> 00:23:11,500 um einen Kalender zu bekommen, dann können wir diese spezielle URL 385 00:23:11,500 --> 00:23:16,480 und geben Sie es bestimmte Parameter, die gehen, um die Daten, die wir wollen genau das sein werden. 386 00:23:16,480 --> 00:23:19,540 Und ebenso, wenn wir wollen, dass die Daten wieder in einem bestimmten Format, 387 00:23:19,540 --> 00:23:23,790 dann können wir sie auffordern, die Daten in eine CSV-Ausgabe, 388 00:23:23,790 --> 00:23:27,700 und das ist nur ein weiterer Parameter, dass wir auf die API vorbei. 389 00:23:27,700 --> 00:23:29,210 Viele coole Dinge zu tun gibt. 390 00:23:29,210 --> 00:23:32,550 Ich würde definitiv empfehlen Auschecken der CS50 APIs. 391 00:23:32,550 --> 00:23:36,000 >> Ich werde an dieser Harvard Lebensmittel API insbesondere sucht ein wenig. 392 00:23:36,000 --> 00:23:39,870 Eine Sache, die ich eigentlich entworfen haben ist dies Harvard Noms Website 393 00:23:39,870 --> 00:23:44,930 was nutzt das CS50 Lebensmittel API, um die HUDS Menü für den Tag abzurufen. 394 00:23:44,930 --> 00:23:50,400 Und für die Erweiterung der Schule Menschen ist HUDS der Speisesaal-Service in Harvard. 395 00:23:50,400 --> 00:23:55,130 Was Sie bekommen, ist diese Seite, die alle Mahlzeiten enthält für den Tag, so sehen wir das Mittagessen. 396 00:23:55,130 --> 00:23:58,130 Wir haben ein paar verschiedene Kategorien. Wir haben die Bohnen und Vollkornprodukte Station. 397 00:23:58,130 --> 00:24:00,340 Wir haben die braunen Reis Station. 398 00:24:00,340 --> 00:24:03,360 Wir können zum Brunch sehen, wir haben diese wenigen Lebensmitteln. 399 00:24:03,360 --> 00:24:07,030 Wenn wir auf sie, dann bekommen wir die Nährwertangaben. 400 00:24:07,030 --> 00:24:12,240 Sie sehen, das ist die Nährwertangaben für Grapefruit, falls Sie sich wundern. 401 00:24:12,240 --> 00:24:14,870 Und so wieder, wir gehen in die Back-End hier etwas Peer 402 00:24:14,870 --> 00:24:18,530 und sehen, was genau dies tut, um diese Daten zu bekommen. 403 00:24:18,530 --> 00:24:21,710 Und es stellt sich heraus, eigentlich nicht sehr komplex sein überhaupt. 404 00:24:21,710 --> 00:24:28,720 Diese Datei sieht ein wenig chaotisch, aber bedenken Sie, dass dies die Handhabung des gesamten Website 405 00:24:28,720 --> 00:24:34,130 und wenn ich nach unten scrollen sehen wir diese Daten ändern Funktion. 406 00:24:34,130 --> 00:24:36,630 >> Nun nur klar zu sein, ist dies in CoffeeScript geschrieben 407 00:24:36,630 --> 00:24:39,570 das ist eine Sprache, die Sie wahrscheinlich noch nicht gesehen. 408 00:24:39,570 --> 00:24:44,810 Aber es ist ziemlich lesbar ist, also werde ich durch sie hindurchgehen, als wäre es Pseudocode waren. 409 00:24:44,810 --> 00:24:49,080 Änderungs-Datum ist eine Funktion, die gehen in diesem Datum Wert annehmen ist, 410 00:24:49,080 --> 00:24:51,740 und es ist auch werde in einem ersten zu nehmen, was wir nicht so viel Pflege. 411 00:24:51,740 --> 00:24:54,110 Aber das Wichtigste ist, dass es dieses Datum hat, 412 00:24:54,110 --> 00:25:00,080 und dass ist der Tag, dass wir alle Lebensmittel für anfordern möchten. 413 00:25:00,080 --> 00:25:04,030 Und dann sehen, wir haben ein wenig Syntax hier, 414 00:25:04,030 --> 00:25:09,000 das ist im Grunde das Parsen dieses Datum in ein lesbares Format. 415 00:25:09,000 --> 00:25:11,920 Mit anderen Worten erfordert die API die Daten in einem bestimmten Format. 416 00:25:11,920 --> 00:25:17,390 Man kann nicht einfach sagen, 16. November 2012 AD. 417 00:25:17,390 --> 00:25:20,320 Es wird nicht wissen, was damit zu tun. Er will das Datum in einem bestimmten Format. 418 00:25:20,320 --> 00:25:23,230 Alles, was wir eigentlich hier sind ist was es genau das Format, 419 00:25:23,230 --> 00:25:26,520 das ist ein Wert für das Jahr und dann ein Bindestrich, einen Wert für den Monat, 420 00:25:26,520 --> 00:25:29,420 ein weiterer Bindestrich und das Datum Wert. 421 00:25:29,420 --> 00:25:34,910 Und wir sagen auch, wir wollen die auszugebenden Daten in JSON sein. 422 00:25:34,910 --> 00:25:37,560 >> Nun wir machen diese AJAX-Anfrage, und wie ich bereits erwähnt, 423 00:25:37,560 --> 00:25:41,680 jQuery hat diese super nützlich AJAX-Funktion, die alles, was Sie tun müssen, ist anzugeben 424 00:25:41,680 --> 00:25:45,780 wenige Parameter hier unten, und es wird Sie wieder genau das, was Sie wollen zu geben. 425 00:25:45,780 --> 00:25:50,490 Wir sagen, dass die URL, die wir wollen, dass es zu gehen in diesem CS50 Lebensmittel API ist, 426 00:25:50,490 --> 00:25:52,270 die wir aus dem spec. 427 00:25:52,270 --> 00:25:56,730 Wir sagen, dass wir die Daten in JSON und das wollen 428 00:25:56,730 --> 00:25:59,490 wir gehen, um ihm diese Daten, die wir hier oben definiert haben. 429 00:25:59,490 --> 00:26:02,670 Dies ist der Tag wollen wir die Lebensmittel für. 430 00:26:02,670 --> 00:26:07,790 Und dann alles, was wir tun müssen, ist zu definieren irgendeine Art von Erfolg Funktion 431 00:26:07,790 --> 00:26:11,980 das ist im Grunde, was passiert, wenn die API gibt, dass die Daten. 432 00:26:11,980 --> 00:26:15,490 In anderen Worten, wir haben bis alle Parameter, die wir wollen verpackt, 433 00:26:15,490 --> 00:26:20,530 die in diesem Fall ist der Tag, dass wir es wollen und die Tatsache, dass wir es wollen in JSON, 434 00:26:20,530 --> 00:26:23,840 und wir schickten ihn an den API, so dass nun die API sagt, okay, 435 00:26:23,840 --> 00:26:26,350 Hier werden Ihre Daten, bekam ich es wieder für Sie. 436 00:26:26,350 --> 00:26:29,930 Wir haben den Erfolg Funktion, was bedeutet, da die API 437 00:26:29,930 --> 00:26:32,230 erfolgreich zurückgegeben einige Daten, was haben wir damit zu tun? 438 00:26:32,230 --> 00:26:35,980 >> Und es stellt sich heraus, dass alles, was wir tun, rufen Sie dieses Update Menüfunktion 439 00:26:35,980 --> 00:26:42,680 mit dem, was die API zurückgegeben hat, so können wir für diese Suche 440 00:26:42,680 --> 00:26:47,970 und sehen, dass alles, was wir tun, ist mit einer Reihe von neuen Syntax hier 441 00:26:47,970 --> 00:26:52,220 die HTML aktualisieren und fügen diese neuen Daten. 442 00:26:52,220 --> 00:26:56,580 Was dies ermöglicht ist, wir haben diese Pfeile auf beiden Seiten, und wir können klicken, 443 00:26:56,580 --> 00:27:01,060 und jetzt sind wir auf die Daten für den nächsten Tag suchen und wieder für den nächsten Tag, 444 00:27:01,060 --> 00:27:04,820 und jedes Mal ist es die Aktualisierung dieses Datum Wert und Abfragen der API, 445 00:27:04,820 --> 00:27:07,510 immer wieder einige Daten und legt es in die Website. 446 00:27:07,510 --> 00:27:10,590 Auch hier können Sie sehen, super, super nützlich. 447 00:27:10,590 --> 00:27:14,410 Diese App hat mich ein paar Stunden zusammen zu hacken, 448 00:27:14,410 --> 00:27:20,140 und ich habe ein bisschen mehr Erfahrung, natürlich, aber Ihre CS50 endgültige Projekt 449 00:27:20,140 --> 00:27:22,870 kann etwas sehr ähnlich aussehen. 450 00:27:22,870 --> 00:27:29,540 >> APIs sind super stark für die Höhe der Anstrengung, die sie nehmen. 451 00:27:29,540 --> 00:27:32,800 Das letzte was ich gehen über mich ist ein paar mehr APIs breit. 452 00:27:32,800 --> 00:27:35,480 Ich werde nicht so weit kommen in ihnen so weit wie das, was sie tun, insbesondere 453 00:27:35,480 --> 00:27:38,740 aber ich werde Ihnen eine Vorstellung von dem, was da draußen ist. 454 00:27:38,740 --> 00:27:42,700 2 wirklich sinnvolle Dinge, wenn Sie in der Datenanalyse oder Visualisierung interessiert 455 00:27:42,700 --> 00:27:45,960 oder so etwas sind Freebase und Wikipedia. 456 00:27:45,960 --> 00:27:49,800 Wikipedia-Sie vermutlich alle wissen-ist eine freie Online-Enzyklopädie, 457 00:27:49,800 --> 00:27:53,230 und es hat tatsächlich eine API, so dass, wenn Sie wollen, zum Beispiel, 458 00:27:53,230 --> 00:27:56,250 Sie alle Texte und die Artikel für Tintenfisch 459 00:27:56,250 --> 00:27:58,030 Sie können sehr leicht tun. 460 00:27:58,030 --> 00:28:02,300 Just say hey, Wikipedia API, würde Ich mag die Daten als diese zurückkehrten, 461 00:28:02,300 --> 00:28:07,010 und ich würde es in diesem Format mag, und die Artikel möchte ich es Tintenfisch, 462 00:28:07,010 --> 00:28:09,820 und sehr schnell wird es Ihnen zurück, dass die Informationen. 463 00:28:09,820 --> 00:28:12,230 Das kann wirklich nützlich sein, wenn Sie irgendeine Art von Website machen wollen 464 00:28:12,230 --> 00:28:16,200 , dass es eine bessere Viewer für Wikipedia oder so ähnlich. 465 00:28:16,200 --> 00:28:21,350 >> Freebase ist eine Art ähnlich, obwohl es ein wenig härter ist so weit wie API. 466 00:28:21,350 --> 00:28:24,390 Freebase ist wie Wikipedia, dass es ist eine Online-Enzyklopädie 467 00:28:24,390 --> 00:28:29,050 die enthält sehr viele unterschiedliche Daten über alle Arten von verschiedenen Themen, 468 00:28:29,050 --> 00:28:33,150 aber es ist in einer relationalen Datenbank, die leicht von Wikipedia ist gespeichert. 469 00:28:33,150 --> 00:28:36,410 Wikipedia hat seine Artikel und Gegenstände im Zusammenhang mit anderen Artikeln, 470 00:28:36,410 --> 00:28:38,860 aber zum größten Teil, wenn Sie wollen, dass die Daten für Oktopus, 471 00:28:38,860 --> 00:28:41,990 Sie gehen, um die Krake Artikel erhalten, dass die Daten, und Sie haben eine Reihe von Text 472 00:28:41,990 --> 00:28:43,830 über Tintenfische, so, das ist großartig. 473 00:28:43,830 --> 00:28:46,870 Freebase arbeitet in einer etwas komplizierteren Weise, dass 474 00:28:46,870 --> 00:28:48,930 alles miteinander verwandt. 475 00:28:48,930 --> 00:28:52,620 In anderen Worten, wenn wir für Tintenfische suchen 476 00:28:52,620 --> 00:28:54,940 dann hat es eine Reihe von Kategorien zugeordnet. 477 00:28:54,940 --> 00:28:57,920 >> Zum Beispiel ist es ein Tier ist, lebt sie unter Wasser, 478 00:28:57,920 --> 00:28:59,710 es hat einen bestimmten Körpertemperatur. 479 00:28:59,710 --> 00:29:01,210 Ich weiß nicht. 480 00:29:01,210 --> 00:29:04,230 Und all diese Kategorien sind Links zu anderen Orten, wo man gehen kann 481 00:29:04,230 --> 00:29:06,640 die Dinge mit der gleichen Kategorie zu sehen. 482 00:29:06,640 --> 00:29:13,450 In anderen Worten, die Krake Datensatz enthält einen Link auf die Daten für alle Tiere 483 00:29:13,450 --> 00:29:16,790 und dass würde mich bewegen, in der Datenbank wirklich schnell. 484 00:29:16,790 --> 00:29:21,740 Dies kann sehr nützlich sein, wenn Sie etwas wie Vergleiche sind. 485 00:29:21,740 --> 00:29:24,490 Mit anderen Worten, da eine bestimmte Sache, Sie wollen, um zu sehen 486 00:29:24,490 --> 00:29:27,890 was es ist verwandt und sehen, was es nicht verwandt. 487 00:29:27,890 --> 00:29:30,700 Diese Art der Sache. Es kann in einer Anzahl von Arten nützlich. 488 00:29:30,700 --> 00:29:34,250 Wenn Sie sich für eine größere Herausforderung suchen und in der Lage sein, einige komplexere Dinge zu tun 489 00:29:34,250 --> 00:29:38,740 Ich würde in Betracht ziehen, einen Blick auf die Freebase API. 490 00:29:38,740 --> 00:29:44,670 Aber vor allem ist Wikipedia eine sehr einfache Ort, um so weit wie immer Informationen gehen. 491 00:29:44,670 --> 00:29:48,340 Ein weiterer Ort, dass ich schauen müssen, ist Last.fm, und ich bin eigentlich los, um auf die Website gehen 492 00:29:48,340 --> 00:29:53,800 Bei einigen Menschen sind nicht vertraut, aber Last.fm ist im Grunde ein Musik 493 00:29:53,800 --> 00:29:57,220 Geschmack und Empfehlungen Website. 494 00:29:57,220 --> 00:29:59,000 Sie können ein Konto. 495 00:29:59,000 --> 00:30:04,250 Sie können das Hochladen von Musik von Ihrem Musik-Player starten 496 00:30:04,250 --> 00:30:08,020 auf der Website, und im Grunde wird es anfangen, Ihnen Musik-Empfehlungen 497 00:30:08,020 --> 00:30:10,030 auf, was Sie zu hören. 498 00:30:10,030 --> 00:30:14,270 >> Zum Beispiel, wenn Sie zu Ihrem Profil gehen Seite, das ist mine- 499 00:30:14,270 --> 00:30:18,180 können Sie sehen, haben Sie eine Liste der zuletzt hörte Tracks. 500 00:30:18,180 --> 00:30:22,550 Sie können sehen, insgesamt Lieblingskünstler, alle von dieser Art der Sache, 501 00:30:22,550 --> 00:30:25,280 und wieder gibt es eine große API hinter Last.fm, 502 00:30:25,280 --> 00:30:29,360  und Sie können es verwenden, um viele, viele wirklich coole Dinge zu tun. 503 00:30:29,360 --> 00:30:38,870 Zum Beispiel, werde ich zu einem Freund Seite, die dieses Last.fm Tools Website hat zu gehen. 504 00:30:38,870 --> 00:30:42,380 Dies ist tatsächlich eine weitere Plattform, die auf der Last.fm API integriert ist, 505 00:30:42,380 --> 00:30:45,420 und es tut eine Reihe von ziemlich interessante Dinge. 506 00:30:45,420 --> 00:30:50,260 Wenn ich mich einlogge mit meinem Benutzernamen, z. B. 507 00:30:50,260 --> 00:30:53,110 Ich kann sie auffordern, eine Tag-Cloud zu erzeugen, zum Beispiel, 508 00:30:53,110 --> 00:30:56,480 und was das tun hat ist mir wieder ein Bild von 509 00:30:56,480 --> 00:30:59,850 all die verschiedenen Genres und diese Art von Dingen, die Ich mag zu hören. 510 00:30:59,850 --> 00:31:01,410 Wie ist es, dies zu tun? 511 00:31:01,410 --> 00:31:05,670 Sehr im Grunde ist es der Last.fm API sagen hier ist das Benutzer. 512 00:31:05,670 --> 00:31:10,710 Ich möchte das Genre der jedem Song wissen, dass sie jemals hörte, 513 00:31:10,710 --> 00:31:15,130 und das kann man, indem eine ziemlich einfache AJAX-Aufruf an die Last.fm API zu tun. 514 00:31:15,130 --> 00:31:18,990 Du wirst wieder eine große Liste, und dann natürlich einige andere Sachen getan wird 515 00:31:18,990 --> 00:31:22,280 um es in einem Wort Wolke drehen, aber man kann sehen insgesamt 516 00:31:22,280 --> 00:31:25,850 es ist sehr einfach zu erreichen und sehr einfach zu bedienen. 517 00:31:25,850 --> 00:31:30,750 Wirklich schön für eine Reihe von Dingen. 518 00:31:30,750 --> 00:31:35,940 >> Ich denke, das ist alles, was ich insgesamt sagen werde. 519 00:31:35,940 --> 00:31:39,040 Eine letzte Sache, die ich über APIs in der Regel werde erwähnen ist, dass 520 00:31:39,040 --> 00:31:41,840 Sie manchmal in etwas namens Rate Limiting laufen, 521 00:31:41,840 --> 00:31:44,940 und die Idee der geschwindigkeitsbestimmende ist, dass Sie nicht wollen, APIs zu missbrauchen. 522 00:31:44,940 --> 00:31:48,130 In anderen Worten, es ist wirklich schön, dass eine Menge von diesen Webseiten APIs 523 00:31:48,130 --> 00:31:51,070 dass Sie zu gehen und kostenlos zu nutzen. 524 00:31:51,070 --> 00:31:54,460 Allerdings, wenn Sie machen Millionen oder Milliarden von Anfragen pro Tag, 525 00:31:54,460 --> 00:31:57,610 zum Beispiel, wenn Sie in einer Endlosschleife, die unendlich Abfrage steckt fest 526 00:31:57,610 --> 00:32:00,680 irgendeine Art von API und immer wieder eine riesige Menge von Daten, 527 00:32:00,680 --> 00:32:04,570 offensichtlich, dass ist nicht gut, so was viele APIs tun Rate Limiting haben Merkmal ist 528 00:32:04,570 --> 00:32:09,970 das sagt, dass man nur 1.000 Anfragen pro Tag und pro IP-Adresse oder so ähnlich. 529 00:32:09,970 --> 00:32:12,540 Und wenn Sie tun eine Menge Tests und diese Art der Sache, 530 00:32:12,540 --> 00:32:14,890 Sie manchmal in die laufen, und plötzlich werden Sie abgeschaltet 531 00:32:14,890 --> 00:32:18,280 und nein sagen, ich bin nicht geben Ihnen keine weiteren Daten. 532 00:32:18,280 --> 00:32:20,000 >> Was möchten Sie tun müssen, ist an die Regeln halten. 533 00:32:20,000 --> 00:32:22,950 Sie wollen sicherstellen, dass Sie die API-Spezifikation sorgfältig zu lesen. 534 00:32:22,950 --> 00:32:26,330 Wenn es bestimmte Regeln attached to it, wie Sie hat, kann nur X-Abfragen pro Tag 535 00:32:26,330 --> 00:32:30,000 oder man kann nur auf einen Teil der Datenbank eine bestimmte Anzahl von Malen 536 00:32:30,000 --> 00:32:32,900 oder so ähnlich, dass Sie wollen sicherstellen, dass man sich an, dass. 537 00:32:32,900 --> 00:32:38,360 Solange Sie in diesen Regeln spielen Sie wahrscheinlich eine wirklich schöne Zeit mit APIs. 538 00:32:38,360 --> 00:32:42,030 Ihre allgemeine Takeaway ist APIs sind wirklich, wirklich nützlich. 539 00:32:42,030 --> 00:32:45,610 >> Es gibt eine API für fast jede große Web-Service gibt. 540 00:32:45,610 --> 00:32:50,700 So ziemlich jedes Teil des Google Tools Suite, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 GMail, Google Calendar, all diese Dinge APIs. 542 00:32:54,390 --> 00:32:58,280 Sie können sie auf beiden get Daten aus dem Server verwenden und Senden von Daten an den Server. 543 00:32:58,280 --> 00:33:00,870 In anderen Worten, wenn Sie einen Kalender App machen wollte, die aktualisieren können 544 00:33:00,870 --> 00:33:04,190 jemand Google Calendar, gibt es eine API dafür. 545 00:33:04,190 --> 00:33:07,810 Wenn Sie etwas, das Ihnen sagen, wo ist machen 546 00:33:07,810 --> 00:33:12,530 die Lage einer bestimmten Adresse ist, können Sie das Google Maps API für diese Verwendung. 547 00:33:12,530 --> 00:33:15,860 APIs sind fantastisch nützlich, und sie sind überall. 548 00:33:15,860 --> 00:33:18,700 Wenn Sie in irgendeiner Art von Idee interessiert, 549 00:33:18,700 --> 00:33:22,170 gibt es wahrscheinlich eine verwandte API, die Sie verwenden, um eine große Menge von Daten erhalten können 550 00:33:22,170 --> 00:33:25,060 sehr schnell und sehr einfach. 551 00:33:25,060 --> 00:33:28,140 >> Wenn Sie noch auf der Suche für ein Projekt oder wenn Sie nur wollen, um zu spielen 552 00:33:28,140 --> 00:33:31,820 mit etwas in der Regel sind APIs definitiv lohnt. 553 00:33:31,820 --> 00:33:37,200 Vielen Dank, und ich bin glücklich, alle Fragen, die euch zu beantworten. 554 00:33:37,200 --> 00:33:44,900 Okay, vielen Dank. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]