1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Seminar] [A Programmer's Inleiding tot API's] 2 00:00:02,480 --> 00:00:04,059 [Billy Janitsch] [Harvard University] [Tommy MacWilliam] 3 00:00:04,059 --> 00:00:08,220 [Dit is CS50.] [CS50.TV] 4 00:00:08,220 --> 00:00:12,100 >> Hallo, iedereen, ik ben Billy, en vandaag ga ik het hebben over API's, 5 00:00:12,100 --> 00:00:15,220 of application programming interfaces, 6 00:00:15,220 --> 00:00:20,040 name in het kader van de CS50 afstudeeropdrachten en dat soort dingen. 7 00:00:20,040 --> 00:00:22,490 In het algemeen wat is een API? 8 00:00:22,490 --> 00:00:25,530 In zeer algemene termen, het is een soort van een man midden dat 2 stuks mogelijk maakt 9 00:00:25,530 --> 00:00:28,610 van software voor communicatie met elkaar. 10 00:00:28,610 --> 00:00:32,530 Dat is een soort van zeer ruime definitie en is dat niet relevant is voor wat we zoeken naar. 11 00:00:32,530 --> 00:00:35,450 Wat we echt willen is een soort van nuttige middenweg 12 00:00:35,450 --> 00:00:40,570 om ergens te communiceren met een soort van database. 13 00:00:40,570 --> 00:00:43,310 >> Hier is een grafiek, en in principe is het idee dat 14 00:00:43,310 --> 00:00:46,790 wij zijn een aanvraag, en we willen gegevens op te halen uit een database, 15 00:00:46,790 --> 00:00:49,570 maar we willen niet de database direct kan ondervragen. 16 00:00:49,570 --> 00:00:52,710 In plaats daarvan willen we gaan door dit soort middelste man, de API. 17 00:00:52,710 --> 00:00:55,440 Het idee achter die nummers 2 en 3 op de kaart 18 00:00:55,440 --> 00:00:57,750 beide zullen zeer gecompliceerd en rommelig. 19 00:00:57,750 --> 00:00:59,960 Met andere woorden, als de API query de database, 20 00:00:59,960 --> 00:01:03,300 het waarschijnlijk gaat worden met behulp van SQL tabellen en al dat soort dingen, 21 00:01:03,300 --> 00:01:05,489 en we hebben geleerd een beetje over in CS50, maar over het algemeen, 22 00:01:05,489 --> 00:01:07,590 je hebt gemerkt dat het een beetje van een pijn. 23 00:01:07,590 --> 00:01:10,590 Het wordt heel, heel ingewikkeld en rommelig, vooral als je het maken van 24 00:01:10,590 --> 00:01:12,530 complexe queries en dat soort dingen. 25 00:01:12,530 --> 00:01:15,960 >> Wat we echt willen is een soort van nuttige en eenvoudige manier 26 00:01:15,960 --> 00:01:19,780 om die gegevens op te halen, en dat is het idee achter de nummers 1 en 4 op de kaart. 27 00:01:19,780 --> 00:01:23,600 Met andere woorden, we willen een heel eenvoudige manier om de API te vertellen wat te krijgen voor ons 28 00:01:23,600 --> 00:01:27,760 en een heel eenvoudige manier om terug te krijgen die gegevens. 29 00:01:27,760 --> 00:01:33,020 Er is een grote manier dat deze gegevens meestal wordt verzonden en ontvangen, 30 00:01:33,020 --> 00:01:36,490 die JSON, of JavaScript Object Notation. 31 00:01:36,490 --> 00:01:40,370 Dat kan variëren van een beetje zo ver als hoe je stuurt het verzoek naar de API. 32 00:01:40,370 --> 00:01:43,210 Met andere woorden, als je wilt wat bepaalde hoeveelheid gegevens, 33 00:01:43,210 --> 00:01:46,670 hoe vertel je de API te krijgen die gegevens kan een beetje variëren. 34 00:01:46,670 --> 00:01:49,210 Meestal gaat het om het maken van een soort van netwerk aanvraag. 35 00:01:49,210 --> 00:01:53,130 Met andere woorden, de toegang tot een soort van URL die gaat naar de API te vertellen 36 00:01:53,130 --> 00:01:56,190 precies wat je wilt, maar de gegevens worden bijna altijd teruggestuurd, 37 00:01:56,190 --> 00:01:59,530 Met andere woorden, nummer 4 in JSON. 38 00:01:59,530 --> 00:02:01,030 >> Wat is JSON precies? 39 00:02:01,030 --> 00:02:03,030 Zoals ik al zei, JavaScript Object Notation. 40 00:02:03,030 --> 00:02:07,090 Het is eigenlijk de universele standaard voor het verzenden en ontvangen van gegevens. 41 00:02:07,090 --> 00:02:11,410 Het idee is dat je deze 3 categorieën van dingen. 42 00:02:11,410 --> 00:02:13,540 Je hebt arrays, hashmaps, en primitieven. 43 00:02:13,540 --> 00:02:16,580 Arrays en hashmaps je hebt bij een beetje leek in CS50, 44 00:02:16,580 --> 00:02:19,870 maar je hebt soort van gekregen een zeer strikte zin van wat ze zijn. 45 00:02:19,870 --> 00:02:22,780 Met andere woorden, met arrays je weet dat ze gebonden te typen, 46 00:02:22,780 --> 00:02:26,560 zodat u slechts een soort van het type dat gaat de hele array. 47 00:02:26,560 --> 00:02:29,310 JSON is een stuk soepeler met dat soort dingen. 48 00:02:29,310 --> 00:02:33,590 In principe is het idee is dat je de bouw dit object, 49 00:02:33,590 --> 00:02:36,270 die bestaan ​​uit een van deze 3 dingen 50 00:02:36,270 --> 00:02:39,470 en kunnen bestaan ​​uit meerdere exemplaren van, en ze kunnen worden genest. 51 00:02:39,470 --> 00:02:42,110 >> Hier is een soort van een voorbeeld van JSON, 52 00:02:42,110 --> 00:02:47,910 dat is deze accolades hier vertegenwoordig je HashMap, 53 00:02:47,910 --> 00:02:51,400 en een HashMap is eigenlijk een afbeelding van een soort van de belangrijkste 54 00:02:51,400 --> 00:02:53,340 een soort van waarde. 55 00:02:53,340 --> 00:02:56,440 Je zult hier zien dat we de eigenschappen sleutel hebben, 56 00:02:56,440 --> 00:02:59,600 en dat is het in kaart brengen op een array, dat is dit hele gebeuren. 57 00:02:59,600 --> 00:03:04,120 We zien een ander element van de HashMap, dat deze toets isAwesome, 58 00:03:04,120 --> 00:03:07,370 die kaarten aan een primitieve waarde true, met andere woorden, een boolean. 59 00:03:07,370 --> 00:03:09,420 Primitieven kunnen strings. Ze kunnen integers. 60 00:03:09,420 --> 00:03:11,960 Ze kunnen bools, iets dergelijks. 61 00:03:11,960 --> 00:03:18,410 En zie je de inhoud van deze array die eigenschappen wijst op 2 strings in zich heeft, 62 00:03:18,410 --> 00:03:20,050 zelf-gelijkende en prachtig. 63 00:03:20,050 --> 00:03:27,410 Dat zijn twee eigenschappen van JSON, en we zien dat JSON is awesome. 64 00:03:27,410 --> 00:03:30,060 Om te kijken naar dat wat nader ik ga bouwen 65 00:03:30,060 --> 00:03:32,870 een meer complex voorbeeld van JSON hier. 66 00:03:32,870 --> 00:03:37,000 >> Laten we beginnen met een array, bijvoorbeeld, alleen een lege array. 67 00:03:37,000 --> 00:03:39,180 Maar dat is een soort van saai, dus we gaan om het te vullen een beetje, 68 00:03:39,180 --> 00:03:43,420 en zoals ik al zei, zijn arrays in JSON typen gebonden, 69 00:03:43,420 --> 00:03:46,400 dus we konden ook hier een string, die hi is, 70 00:03:46,400 --> 00:03:49,330 en dat is een ander element van die array. 71 00:03:49,330 --> 00:03:53,450 En ook kunnen we deze hier toevoegen een hashmapping, die gaat een paar mappings hebben. 72 00:03:53,450 --> 00:04:00,470 Het gaat om een ​​afbeelding van naam aan de string Billy hebben. 73 00:04:00,470 --> 00:04:04,590 We hebben een afbeelding van naam Billy, en we hebben een afbeelding van 74 00:04:04,590 --> 00:04:10,860 favoriete kleur naar blauw. 75 00:04:10,860 --> 00:04:12,700 Dat is in principe een goed voorbeeld van JSON. 76 00:04:12,700 --> 00:04:18,160 Het soort komt in-whoops, moet een komma er-alle van de verschillende delen ervan. 77 00:04:18,160 --> 00:04:21,140 Nogmaals, het is niet het type helemaal gebonden, dus je kunt elke vorm van soorten 78 00:04:21,140 --> 00:04:24,710 in alles wat je wilt, en het idee is dat het zelf-gelijkende. 79 00:04:24,710 --> 00:04:28,830 Met andere woorden, dit hier is een JSON object, net als dit hele ding, 80 00:04:28,830 --> 00:04:33,200 zoals alleen dit, dus je kunt een primitieve een object, 81 00:04:33,200 --> 00:04:35,680 een array zijn een object of een HashMap een object. 82 00:04:35,680 --> 00:04:40,270 >> Zoals je kan soort van zien, JSON is echt, echt handig in dat het zo veelzijdig. 83 00:04:40,270 --> 00:04:45,860 U kunt eventuele gegevens die u kunt bedenken opgeslagen in JSON. 84 00:04:45,860 --> 00:04:47,900 Dat maakt het een heel mooi taal te gebruiken met API's 85 00:04:47,900 --> 00:04:50,770 omdat het vrij veel betekent dat het niet uitmaakt wat gegevens die u wilt 86 00:04:50,770 --> 00:04:54,270 er zal een manier om het terug te krijgen in JSON zijn. 87 00:04:54,270 --> 00:04:58,600 Een paar eigenschappen die JSON bijzonder goed voor dit soort dingen. 88 00:04:58,600 --> 00:05:02,270 Zoals u kunt zien, in vergelijking met een heleboel dingen die je hebt gewerkt met in CS50 89 00:05:02,270 --> 00:05:06,040 Het is relatief eenvoudig om ook te lezen en zeer eenvoudig te schrijven. 90 00:05:06,040 --> 00:05:09,700 Je kunt inspringen het uit als je wilt, zoals ik deed in dat voorbeeld, 91 00:05:09,700 --> 00:05:12,990 die geeft je een mooi, mooi versie die je kunt heel goed zien. 92 00:05:12,990 --> 00:05:17,150 Maar bovendien, het is ook gemakkelijk te lezen en te schrijven voor een computer. 93 00:05:17,150 --> 00:05:19,870 Met andere woorden, het is eenvoudig te parsen en gemakkelijk coderen, 94 00:05:19,870 --> 00:05:23,820 hetgeen betekent dat het vrij snel wat lezen gegevens betreft, 95 00:05:23,820 --> 00:05:26,460 en JSON kan heel snel worden gegenereerd. 96 00:05:26,460 --> 00:05:30,300 >> Het is ook heel gemakkelijk te bereiken verschillende delen van JSON en dat soort dingen. 97 00:05:30,300 --> 00:05:33,320 Dat is mooi, en bovendien dat het zelfgelijkend, 98 00:05:33,320 --> 00:05:36,090 met andere woorden, het feit dat je kunt JSON binnen JSON JSON binnen hebben 99 00:05:36,090 --> 00:05:40,040 is echt leuk voor het opslaan van gegevens. 100 00:05:40,040 --> 00:05:45,490 Een ander deel dat in het algemeen is erg handig in het werken met API's is jQuery. 101 00:05:45,490 --> 00:05:49,290 Je hebt een beetje JavaScript geleerd, dat is een leuke manier 102 00:05:49,290 --> 00:05:53,710 naar HTML en CSS te manipuleren binnen een website. 103 00:05:53,710 --> 00:05:57,190 Maar het kan soort van een pijn om code in gewone JavaScript, 104 00:05:57,190 --> 00:05:59,810 vooral omdat JavaScript is een echt verbose taal. 105 00:05:59,810 --> 00:06:03,020 Je moet een heleboel syntax te leren, en gewoon om heel eenvoudige dingen te doen 106 00:06:03,020 --> 00:06:07,590 het kost veel van de code, dus jQuery is een bibliotheek voor JavaScript. 107 00:06:07,590 --> 00:06:09,800 Met andere woorden, het is een JavaScript-bestand dat u kunt laden 108 00:06:09,800 --> 00:06:12,730 en gebruik vervolgens jQuery functies om bepaalde dingen te doen. 109 00:06:12,730 --> 00:06:15,670 En jQuery maakt in principe uw leven een stuk makkelijker. 110 00:06:15,670 --> 00:06:20,390 Het vereenvoudigt wat zou honderden lijnen in JavaScript te nemen tot een paar regels in jQuery. 111 00:06:20,390 --> 00:06:24,430 >> Het is vooral handig als u gebruik maakt van API's, omdat het algemeen 112 00:06:24,430 --> 00:06:27,600 hoe je gebruikmaakt van API's is door het maken van AJAX verzoeken, 113 00:06:27,600 --> 00:06:30,130 en ik geloof dat David heeft gezegd in lezing die AJAX verzoeken 114 00:06:30,130 --> 00:06:33,120 zijn over het algemeen als je een verzoek van het netwerk het maken van een soort van server 115 00:06:33,120 --> 00:06:37,760 en om terug een soort van gegevens en bijwerken van een pagina direct. 116 00:06:37,760 --> 00:06:41,840 Overwegende dat de in plain JavaScript dat zou gek aantallen lijnen 117 00:06:41,840 --> 00:06:44,620 om alle headers te valideren en alles doen wat van dat soort dingen, 118 00:06:44,620 --> 00:06:46,810 jQuery heeft een echt eenvoudige functie genaamd AJAX, 119 00:06:46,810 --> 00:06:51,760 en alles wat je hoeft te doen in AJAX is geven de parameters die u wilt de API te geven, 120 00:06:51,760 --> 00:06:56,830 de locatie van de API en eventuele aanvullende vorm van opties die u wilt configureren. 121 00:06:56,830 --> 00:07:02,480 Het is echt, echt mooi en erg handig voor dit soort dingen. 122 00:07:02,480 --> 00:07:06,970 Dat is alles wat we nodig hebben om te beginnen met onze handen vuil in API's. 123 00:07:06,970 --> 00:07:10,220 >> Ik ga om een ​​paar voorbeelden en hun verschillende eigenschappen explore 124 00:07:10,220 --> 00:07:13,150 en waarom ze nuttig zijn voor verschillende soorten dingen. 125 00:07:13,150 --> 00:07:15,570 Het eerste wat ik eigenlijk laten zien is iets dat ik mee bezig ben 126 00:07:15,570 --> 00:07:18,310 bij mijn onderzoek lab, dat is een Ngram Viewer, 127 00:07:18,310 --> 00:07:23,270 en eigenlijk het idee van een Ngram Viewer is kunt u zoeken naar een soort van woord 128 00:07:23,270 --> 00:07:28,840 of zin en zie hoe vaak het is verschenen in een bepaalde set van tekst in de tijd. 129 00:07:28,840 --> 00:07:33,160 Dit voorbeeld hier is deze dataset van baby's 130 00:07:33,160 --> 00:07:36,480 die werden geboren in New York tussen 1920 en 2000. 131 00:07:36,480 --> 00:07:40,090 We kunnen bijvoorbeeld ook zoeken, de naam Jennifer, 132 00:07:40,090 --> 00:07:44,400 en we zien dat de pre-1960 is echt niet zo veel gebruikt, 133 00:07:44,400 --> 00:07:48,900 en dan als we in latere jaren Het wordt meer en meer gebruikt. 134 00:07:48,900 --> 00:07:53,680 We kunnen ook vergelijkingen, dus als we Jennifer vergelijken bijvoorbeeld, Thomas, 135 00:07:53,680 --> 00:07:56,520 we kunnen zien Thomas is behoorlijk wijd verspreid in de geschiedenis, 136 00:07:56,520 --> 00:07:58,780 terwijl Jennifer is een meer recente naam. 137 00:07:58,780 --> 00:08:00,590 Dat kunnen we doen, dat soort dingen. 138 00:08:00,590 --> 00:08:02,460 >> Hoe werkt deze applicatie zijn werk? 139 00:08:02,460 --> 00:08:06,030 Het werkt in principe via een API. 140 00:08:06,030 --> 00:08:08,660 Met andere woorden, wij hebben hier bepaalde parameters. 141 00:08:08,660 --> 00:08:11,360 We hebben de parameters van wat we eigenlijk op zoek naar, 142 00:08:11,360 --> 00:08:13,720 die deze namen, en dan hebben we een paar andere eigenschappen, 143 00:08:13,720 --> 00:08:16,570 als de Y-as en de X-as. 144 00:08:16,570 --> 00:08:18,440 U kunt hebben we een paar verschillende opties te zien voor zover de 145 00:08:18,440 --> 00:08:20,860 tijdsresolutie te gebruiken en dat soort dingen. 146 00:08:20,860 --> 00:08:26,700 We hebben deze opties zo veel welke gegevens wij eigenlijk willen uit de database, 147 00:08:26,700 --> 00:08:29,400 en we willen dat de gegevens terug te krijgen in een aantal bruikbare manier. 148 00:08:29,400 --> 00:08:34,020 Normaal gesproken, als we queries op de database direct zou sorteren van een pijn te doen 149 00:08:34,020 --> 00:08:38,970 want vermoedelijk deze gegevens over babynamen woont in een database ergens, 150 00:08:38,970 --> 00:08:42,789 en het zou echt ingewikkeld om handmatig moeten opvragen is 151 00:08:42,789 --> 00:08:45,830 en precies bepalen welke gegevens terug te keren. 152 00:08:45,830 --> 00:08:49,300 Met andere woorden, we hebben alleen de zorg over Jennifer en Thomas in dit geval, 153 00:08:49,300 --> 00:08:53,410 en we alleen de zorg over op een bepaalde as en al dat soort dingen. 154 00:08:53,410 --> 00:08:55,720 >> Hoe komen we rond dit? 155 00:08:55,720 --> 00:09:01,200 Om te graven in deze API een beetje meer Ik zal je laten zien een voorbeeld van dit platform 156 00:09:01,200 --> 00:09:04,490 die een iets andere dataset. 157 00:09:04,490 --> 00:09:09,950 Deze dataset, in plaats van babynamen, is eigenlijk alleen maar de hele 158 00:09:09,950 --> 00:09:12,460 afdrukken publicatie database van Open Library, 159 00:09:12,460 --> 00:09:18,410 dat is een gigantische bron van teksten die in de laatste 100 jaar of zo. 160 00:09:18,410 --> 00:09:23,540 Het idee is dat we hebben deze compositorische van miljoenen en miljoenen van tekst, 161 00:09:23,540 --> 00:09:27,420 en nu kunnen we zoeken naar verschillende woorden en zinnen binnen 162 00:09:27,420 --> 00:09:30,840 Hier is een voorbeeld dat varieert een beetje anders uit het vorige voorbeeld 163 00:09:30,840 --> 00:09:33,350 Ik liet je, dat is hebben we deze 3 zoekopdrachten, 164 00:09:33,350 --> 00:09:36,290 oorlog, oorlog, en het Franse woord voor oorlog, die is guerre. 165 00:09:36,290 --> 00:09:40,380 En we zoeken binnen 3 verschillende delen van de totale database. 166 00:09:40,380 --> 00:09:45,080 Met andere woorden, in deze eerste vraag we alleen gezocht in de USA, 167 00:09:45,080 --> 00:09:51,150 in de tweede alleen in het Verenigd Koninkrijk, en de derde alleen van werken in Frankrijk uitgegeven. 168 00:09:51,150 --> 00:09:53,120 We zien een aantal interessante patronen ontstaan. 169 00:09:53,120 --> 00:09:58,180 Zo zien we rechts rond hier die- 170 00:09:58,180 --> 00:10:02,410 oeps, ik messed up de as een beetje, maar je kunt hier zie rechts in deze reeks 171 00:10:02,410 --> 00:10:05,730 rond de Burgeroorlog is er een grote piek in de Amerikaanse editie 172 00:10:05,730 --> 00:10:08,340 maar niet zo'n grote piek in de andere twee, en dat is natuurlijk omdat 173 00:10:08,340 --> 00:10:10,880 de Amerikaanse Burgeroorlog werd er op dat punt. 174 00:10:10,880 --> 00:10:13,890 >> We zien een aantal leuke dingen daar, 175 00:10:13,890 --> 00:10:17,070 maar wat we echt over de zorg is hoe we deze gegevens hebben. 176 00:10:17,070 --> 00:10:21,320 Ik neem je mee achter de schermen in deze app in een klein beetje. 177 00:10:21,320 --> 00:10:24,540 Een handige truc is als je werkt met de site en de aard van willen weten 178 00:10:24,540 --> 00:10:27,430 wat er achter de schermen, kunt u het openstellen van de developer tools. 179 00:10:27,430 --> 00:10:30,200 Ik ga gebruiken Chrome ontwikkeltools, en om bij die 180 00:10:30,200 --> 00:10:35,160 je kunt doen control, shift, J, en dat brengt u naar de JavaScript-console. 181 00:10:35,160 --> 00:10:37,420 Er zijn een paar tabs hier. 182 00:10:37,420 --> 00:10:39,680 Ze kunnen allemaal behoorlijk nuttig zijn onder verschillende omstandigheden, maar ik zorg over het netwerk 183 00:10:39,680 --> 00:10:44,150 tab op dit moment, en ik eigenlijk moet vernieuwen om dat werkend te krijgen. 184 00:10:44,150 --> 00:10:50,180 Oh, sorry. 185 00:10:50,180 --> 00:10:52,320 Het houdt van het geven van een willekeurig voorbeeld. 186 00:10:52,320 --> 00:10:54,700 Oke, we gebruiken dit voorbeeld in plaats daarvan dan. 187 00:10:54,700 --> 00:11:01,330 >> Het idee is dat er hier deze API, 188 00:11:01,330 --> 00:11:05,330 en je kunt precies zien wat de API komt terug. 189 00:11:05,330 --> 00:11:10,220 Dit is wat de applicatie krijgt terug van de API te hebben gestuurd dat verzoek. 190 00:11:10,220 --> 00:11:13,680 Laat me in te zoomen een beetje, 191 00:11:13,680 --> 00:11:18,340 en we kunnen eigenlijk zien het is gewoon een reeks belangrijke waarde-paren in JSON. 192 00:11:18,340 --> 00:11:23,220 Met andere woorden, we hebben dit HashMap hier die in kaart brengen van waarden. 193 00:11:23,220 --> 00:11:26,440 Met andere woorden, het in kaart brengen jaren waarden. 194 00:11:26,440 --> 00:11:32,600 In 1765 welk woord we in eerste instantie gezocht naar wordt 90 keer 195 00:11:32,600 --> 00:11:35,810 van 1 miljoen, dus we krijgen terug dit resultaat. 196 00:11:35,810 --> 00:11:40,280 Het is niet echt JSON omdat we dit kleine resultaat header hier, 197 00:11:40,280 --> 00:11:45,630 maar merk op dat dit hele object hier is gewoon een hele grote JSON blob. 198 00:11:45,630 --> 00:11:51,070 We hebben een scala hier die dit hele element bevat, 199 00:11:51,070 --> 00:11:55,590 en je kunt zien dat hele element daar eindigt, en dan hebben we nog een grote element 200 00:11:55,590 --> 00:11:59,430 dat gaat helemaal naar beneden naar het einde, en dat eindigt hier. 201 00:11:59,430 --> 00:12:02,200 We hebben een hele grote array met 2 objecten in het, 202 00:12:02,200 --> 00:12:04,630 en elk van deze objecten is een HashMap. 203 00:12:04,630 --> 00:12:07,340 U kunt zien dat binnen elk van deze hashmaps hebben we een mapping 204 00:12:07,340 --> 00:12:12,700 van deze index waarde op 0 en deze waarde om de waarde van een andere HashMap, 205 00:12:12,700 --> 00:12:18,360 die weer is het in kaart brengen X-as waarden Y-as waarden. 206 00:12:18,360 --> 00:12:20,970 >> U kunt zien dat JSON krijgt een beetje gecompliceerd, Algemeen, maar, 207 00:12:20,970 --> 00:12:24,190 het is eigenlijk heel handig, en het is zeer gemakkelijk te bereiken in vergelijking met 208 00:12:24,190 --> 00:12:27,390 andere verschillende vormen van notatie. 209 00:12:27,390 --> 00:12:30,550 Zo ver als wat we eigenlijk het verzenden van gegevens naar de API te krijgen, 210 00:12:30,550 --> 00:12:34,690 Ik ga om te gaan in de back-end een beetje hier. 211 00:12:34,690 --> 00:12:39,850 Dit is de grote JavaScript-bestand dat is voor elk van de interacties van de web app, 212 00:12:39,850 --> 00:12:44,810 en dus hebben we niet de zorg over de meeste van deze, maar we geven om er wat van. 213 00:12:44,810 --> 00:12:47,410 Zo hebben we de zorg over deze buildQuery functie, 214 00:12:47,410 --> 00:12:50,670 en het idee van deze functie is in principe het is rond te kijken de pagina, 215 00:12:50,670 --> 00:12:53,750 uitzoeken wat de gebruiker wil, bevragen met andere woorden, 216 00:12:53,750 --> 00:12:57,090 het controleren van die dozen waar ze hebben inbreng van hun zoektermen, 217 00:12:57,090 --> 00:13:01,380 het controleren van de verschillende Y-en X-as waarden die ze hebben gekozen en al dat soort dingen, 218 00:13:01,380 --> 00:13:06,650 en het gaat uit te spugen deze query waarde, die kan ik dan af naar de API. 219 00:13:06,650 --> 00:13:09,180 >> Dit ziet er ingewikkeld, en het is vrij ingewikkeld 220 00:13:09,180 --> 00:13:18,090 maar wat ik ga doen, in feite, ik ben al om dit te doen, wat goed is- 221 00:13:18,090 --> 00:13:21,640 is dat ik ga naar de console te krijgen om precies af te drukken dat zoekwaarde 222 00:13:21,640 --> 00:13:28,110 dat het stuurt af voor de API. 223 00:13:28,110 --> 00:13:30,870 Dat is eigenlijk hier. Sorry, het geeft een heleboel dingen. 224 00:13:30,870 --> 00:13:33,690 Maar dit is wat we over de zorg, dit object hier. 225 00:13:33,690 --> 00:13:35,300 Dit is de query object. 226 00:13:35,300 --> 00:13:40,670 Met andere woorden, dit is precies wat de webapplicatie stuurt aan de API, 227 00:13:40,670 --> 00:13:45,730 en dus laten we eens kijken in een klein beetje, en we zien hebben we hier een paar waarden. 228 00:13:45,730 --> 00:13:48,710 We zien hebben we dit aantal Type, die voorvallen per miljoen woorden, 229 00:13:48,710 --> 00:13:51,460 en dat is precies wat we hebben gekozen in de Y-as hier. 230 00:13:51,460 --> 00:13:53,740 Dat is waar dat vandaan komt. 231 00:13:53,740 --> 00:13:58,010 We hebben een database waarde, wat betekent dat er een aantal bepaalde databank 232 00:13:58,010 --> 00:14:01,610 dat deze gegevens leeft in, en we willen specifiek toegang tot die gegevens 233 00:14:01,610 --> 00:14:04,950 in tegenstelling tot de babynamen data, bijvoorbeeld. 234 00:14:04,950 --> 00:14:08,320 Dan hebben we deze groepen waarde, 235 00:14:08,320 --> 00:14:12,090 die zegt dat we willen zoeken op jaar, in tegenstelling tot 236 00:14:12,090 --> 00:14:16,030 andere X aswaarde. 237 00:14:16,030 --> 00:14:19,040 Dan hebben we een methode, die een aantal API's zal doen meerdere dingen. 238 00:14:19,040 --> 00:14:22,360 In andere woorden, deze API ook terugkeren andere soorten data, 239 00:14:22,360 --> 00:14:27,740 maar in dit geval willen we dat in kaart brengen van X-as waarden Y-as waarden. 240 00:14:27,740 --> 00:14:30,730 Dat is wat dat is het veelzeggend om daar te doen, 241 00:14:30,730 --> 00:14:35,020 en we hebben deze zoekopdracht grenzen array, waarvan 2 waarden bevat. 242 00:14:35,020 --> 00:14:40,720 De eerste is wat we hier zien, dat is allemaal van de waarden 243 00:14:40,720 --> 00:14:43,020 vervat in dat eerste kleine vak bovenaan. 244 00:14:43,020 --> 00:14:47,570 >> Met andere woorden, we willen kijken naar het woord strijd, en we willen het filteren 245 00:14:47,570 --> 00:14:51,920 door Engels teksten binnen de Amerikaanse literatuur. 246 00:14:51,920 --> 00:14:54,590 Wij hebben dit land, dat is de VS. 247 00:14:54,590 --> 00:14:59,130 We hebben een taal, dat is Engels, dus we hebben al deze verschillende onderdelen 248 00:14:59,130 --> 00:15:02,690 die allemaal zijn het vertellen van de API precies wat we willen. 249 00:15:02,690 --> 00:15:04,940 We weten niet wat de gegevens die we terug nog is, 250 00:15:04,940 --> 00:15:10,970 maar we weten dat de gegevens naar een bepaalde vorm aannemen. 251 00:15:10,970 --> 00:15:13,650 Dit voorbeeld is een soort van de ingewikkelde kant, 252 00:15:13,650 --> 00:15:16,180 en je zou niet per se te worden met behulp van een API dit complex, 253 00:15:16,180 --> 00:15:20,600 maar dit is aan te tonen u het bereik en de kracht van wat API's kan doen. 254 00:15:20,600 --> 00:15:24,980 Met andere woorden, een relatief eenvoudige zoeksysteem we in principe een invoervak 255 00:15:24,980 --> 00:15:29,490 met een paar andere selectors in verschillende plaatsen. 256 00:15:29,490 --> 00:15:32,010 >> Laat me weer uit te zoomen hier buiten. 257 00:15:32,010 --> 00:15:37,720 We hebben een input box met een paar verschillende metadata selecties, 258 00:15:37,720 --> 00:15:40,610 Wij hebben Y-as en X-as selecties. 259 00:15:40,610 --> 00:15:42,830 Wij hebben niet echt dat veel velden, 260 00:15:42,830 --> 00:15:46,210 en we kunnen heel gemakkelijk zien we in staat om een ​​soort van API opgevraagd 261 00:15:46,210 --> 00:15:48,510 en terug te krijgen gegevens en vervolgens zet het in deze grafiek, 262 00:15:48,510 --> 00:15:52,080 die vervolgens zal deze weer te geven op een nuttige manier. 263 00:15:52,080 --> 00:15:54,970 Om te kijken naar een ander voorbeeld, dat misschien een beetje meer vertrouwd met jullie 264 00:15:54,970 --> 00:15:56,510 we gaan nu naar Facebook. 265 00:15:56,510 --> 00:15:59,440 Facebook's API heet de Facebook Graph, 266 00:15:59,440 --> 00:16:04,390 en eigenlijk wat dat betekent is Facebook ziet zichzelf als deze enorme database 267 00:16:04,390 --> 00:16:08,000 van veel verschillende onderdelen dat bepaalde relatie tot elkaar hebben. 268 00:16:08,000 --> 00:16:11,070 Met andere woorden, ik ben een gebruiker op Facebook, dus ik heb een profiel, 269 00:16:11,070 --> 00:16:14,310 en ik heb ook een aantal vrienden, en elk van hen heeft een profiel, 270 00:16:14,310 --> 00:16:17,580 en elk van mijn vrienden een wand, die verschillende reacties op het heeft, 271 00:16:17,580 --> 00:16:20,800 en elk van deze opmerkingen heeft sympathieën en al dat soort dingen. 272 00:16:20,800 --> 00:16:23,100 >> Er zijn veel verschillende delen op Facebook. 273 00:16:23,100 --> 00:16:26,670 Het is een enorm complexe API, en er is tonnen die je kunt doen met het, 274 00:16:26,670 --> 00:16:28,450 maar het is eigenlijk vrij eenvoudig te gebruiken. 275 00:16:28,450 --> 00:16:33,680 Ik ga om te beginnen door te gaan naar graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 dat is mijn unieke accountnaam en uw accountnaam zal ofwel 277 00:16:38,430 --> 00:16:43,710 een soort woord als je hebt gekozen, of het misschien gewoon een reeks cijfers. 278 00:16:43,710 --> 00:16:46,360 Wat we terug is vrij eenvoudig informatie. 279 00:16:46,360 --> 00:16:50,460 We zien dat ik een voornaam, die Billy, een achternaam, dat is Janitsch hebben. 280 00:16:50,460 --> 00:16:53,370 Er is een unieke Facebook ID die ik heb. 281 00:16:53,370 --> 00:16:57,920 Je kunt zien dat ik mannelijk ben en dat ik mijn taalinstelling 282 00:16:57,920 --> 00:17:01,290 naar Brits Engels. 283 00:17:01,290 --> 00:17:03,490 Met andere woorden, we zien heel basisinformatie hier. 284 00:17:03,490 --> 00:17:08,670 Het is niet te veel, maar het geeft ons een idee van wat er staat. 285 00:17:08,670 --> 00:17:10,849 >> We kunnen hetzelfde doen om David Malan, bijvoorbeeld. 286 00:17:10,849 --> 00:17:13,599 Ik denk dat zijn naam is dmalan. 287 00:17:13,599 --> 00:17:16,369 We zien David Malan heeft een unieke ID. 288 00:17:16,369 --> 00:17:19,300 Hij heeft een naam, voornaam, middelste naam, achternaam. 289 00:17:19,300 --> 00:17:24,210 We zien ook dat hij mannelijk is en heeft zijn taal is ingesteld op Engels. 290 00:17:24,210 --> 00:17:26,869 Met andere woorden, we zien vrij basic informatie hier. 291 00:17:26,869 --> 00:17:28,860 Nu, wat gebeurt er als we proberen om te controleren of iets anders? 292 00:17:28,860 --> 00:17:33,060 Laten we zeggen dat ik ben geïnteresseerd in wat David Malan heeft vond op Facebook. 293 00:17:33,060 --> 00:17:36,860 Ik kan / wil. Nu hebben we een probleem tegenkomt. 294 00:17:36,860 --> 00:17:39,280 We hebben een soort van fout die een toegangstoken zegt 295 00:17:39,280 --> 00:17:41,660 is nodig om dit onderdeel te vragen. 296 00:17:41,660 --> 00:17:44,730 Maar als je erover nadenkt, dat maakt eigenlijk logisch, want het zou raar zijn 297 00:17:44,730 --> 00:17:47,830 als je zou kunnen toegang krijgen tot elk onderdeel van de database van Facebook 298 00:17:47,830 --> 00:17:50,170 alleen vanuit een soort van eenvoudige API, toch? 299 00:17:50,170 --> 00:17:56,040 Met andere woorden, vermoedelijk uw informatie kan niet worden geopend door iedereen die het wil. 300 00:17:56,040 --> 00:17:58,330 >> Deze fout is precies wat dat betekent. 301 00:17:58,330 --> 00:18:03,630 Sommige API's vereisen bepaalde rechten om hun toegang tot de gegevens. 302 00:18:03,630 --> 00:18:06,940 En nog meer geavanceerde API's, zoals de Facebook-een, 303 00:18:06,940 --> 00:18:09,840 zal vereisen bepaalde rechten om bepaalde dingen te doen. 304 00:18:09,840 --> 00:18:12,650 Ik zie deze basisinformatie over David Malan. 305 00:18:12,650 --> 00:18:15,950 Ik kan zien dat hij mannelijk is en dat hij leeft in de VS, 306 00:18:15,950 --> 00:18:19,270 maar ik kan niet echt iets zien voorbij. 307 00:18:19,270 --> 00:18:23,050 Om rond dit te krijgen voor nu, Facebook heeft deze handige tool 308 00:18:23,050 --> 00:18:27,690 dat is de grafiek API ontdekkingsreiziger, en het idee van die u kunt sorteren van 309 00:18:27,690 --> 00:18:31,880 make-up machtigingen voor jezelf op basis van uw eigen rekening 310 00:18:31,880 --> 00:18:35,680 en bekijk dingen die specifiek uw account kunt bekijken. 311 00:18:35,680 --> 00:18:45,120 Bijvoorbeeld, als ik dat doe graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 whoops, ik denk dat ik mijn token hier opnieuw te valideren. 313 00:18:53,510 --> 00:18:55,950 Oke. 314 00:18:55,950 --> 00:19:01,740 Als ik dat doe dat nog eens, geweldig, nu zie ik dat ik dit object terug te krijgen 315 00:19:01,740 --> 00:19:06,300 die zegt dat ik zwembad noedels, die in de categorie Games en Toys wilt. 316 00:19:06,300 --> 00:19:08,620 Ik hou van walrussen, die in de categorie Animal. 317 00:19:08,620 --> 00:19:10,180 Dit zijn mijn werkelijke Facebook likes. 318 00:19:10,180 --> 00:19:13,280 Ze zijn soort van gênant. 319 00:19:13,280 --> 00:19:16,090 >> Maar we kunnen zien deze gegevens is allemaal terug in JSON. 320 00:19:16,090 --> 00:19:18,160 Het is vrij leesbaar. 321 00:19:18,160 --> 00:19:20,970 Met andere woorden, wij hebben deze afbeelding van data een soort van een array, 322 00:19:20,970 --> 00:19:25,220 en elk element van deze array een HashMap welke kaarten 323 00:19:25,220 --> 00:19:28,530 De naam van een soortgelijk en de categorie van een soortgelijk. 324 00:19:28,530 --> 00:19:31,240 Elke zoals is voorzien van een unieke ID. 325 00:19:31,240 --> 00:19:34,510 Er zijn allerlei verschillende dingen van de gegevens die we kunnen krijgen, 326 00:19:34,510 --> 00:19:37,980 en als je geïnteresseerd bent in het gebruik van de Facebook API voor een CS50 afstudeerproject 327 00:19:37,980 --> 00:19:40,720 of voor iets dergelijks het is eigenlijk heel goed te doen. 328 00:19:40,720 --> 00:19:44,260 In principe hoe je rond de authenticatie ding is Facebook 329 00:19:44,260 --> 00:19:48,030 maakt gebruik van een systeem genaamd OAuth, of Open Authentication, 330 00:19:48,030 --> 00:19:52,870 en ik wil niet nu krijgen in omdat OAuth of de verschillende soorten 331 00:19:52,870 --> 00:19:56,060 van authenticatie heeft de neiging om sterk variëren tussen de verschillende API's, 332 00:19:56,060 --> 00:19:58,320 dus ik kon besteden een lange tijd gaan over elk een, 333 00:19:58,320 --> 00:20:01,170 maar ze zijn eigenlijk vrij vanzelfsprekend. 334 00:20:01,170 --> 00:20:04,050 >> Als u Google Facebook API is zeer leesbaar. 335 00:20:04,050 --> 00:20:06,670 Er is een hele spec. 336 00:20:06,670 --> 00:20:10,210 Zo, dit is de documentatie voor de Facebook-API, 337 00:20:10,210 --> 00:20:14,170 en je kunt zien dat ik op de pagina Gebruiker, dus ik kan alles leren over de verschillende soorten van de dingen 338 00:20:14,170 --> 00:20:17,170 die beschikbaar zijn zoveel data krijgen 339 00:20:17,170 --> 00:20:21,550 en ook de verschillende machtigingen die ik nodig heb om ze te openen. 340 00:20:21,550 --> 00:20:25,470 Zoals we zagen, hoeven we niet rechten om de naam of het geslacht te openen, 341 00:20:25,470 --> 00:20:29,380 maar verder dan dat we moeten machtigingen voor de meeste dingen. 342 00:20:29,380 --> 00:20:33,040 Deze pagina, of beter gezegd, deze website zal u ook vertellen hoe je 343 00:20:33,040 --> 00:20:35,640 een teken om te kunnen om jezelf te authenticeren. 344 00:20:35,640 --> 00:20:39,290 De meeste authenticatie systemen maken gebruik van een soort van token 345 00:20:39,290 --> 00:20:42,880 waar je dit unieke waarde, dat is een heel lange en willekeurige string, 346 00:20:42,880 --> 00:20:46,240 en op die manier kunnen ze associëren het verzoek dat je maakt met je mee. 347 00:20:46,240 --> 00:20:50,560 Met andere woorden, ze weten dat je niet iets verdachts met hun gegevens doen. 348 00:20:50,560 --> 00:20:53,340 Ze weten precies wat je krijgt. 349 00:20:53,340 --> 00:20:56,180 Ze weten ook dat je toestemming om die informatie bekijken. 350 00:20:56,180 --> 00:20:59,110 >> Als u hebt gemaakt een Facebook-app en je app heeft bepaalde gebruikers, 351 00:20:59,110 --> 00:21:03,380 en die gebruikers hebben toegestaan ​​dat app om bepaalde delen van hun profiel, 352 00:21:03,380 --> 00:21:07,790 dan wat API-sleutel of token dat die app gebruikt 353 00:21:07,790 --> 00:21:11,090 kunnen de gegevens voor die gebruikers toegang. 354 00:21:11,090 --> 00:21:13,780 Dit klinkt misschien ingewikkeld, maar het is niet al te slecht, 355 00:21:13,780 --> 00:21:16,810 en als je wilt dat u Facebook gebruikt Ik zou het ten zeerste dat u 356 00:21:16,810 --> 00:21:18,990 overwegen spelen met hun API. 357 00:21:18,990 --> 00:21:21,610 Het is erg cool, en je kunt een heleboel verschillende dingen mee doen. 358 00:21:21,610 --> 00:21:24,880 Als de gebruiker verleent u deze machtigingen kunt u zelfs terug te gaan naar de API 359 00:21:24,880 --> 00:21:28,820 en zeggen ik wil eigenlijk plaatsen aan de muur van deze gebruiker, of ik wil laten plaatsen van een foto, 360 00:21:28,820 --> 00:21:32,390 en dat is waarom op uw news feed je soms die vervelende dingen 361 00:21:32,390 --> 00:21:37,840 zeggende: je vriend heeft bekeken deze video op een soort van rare site of iets dergelijks. 362 00:21:37,840 --> 00:21:43,120 Dat komt omdat die app is verleend de toegang tot plaatsen op de muur van die persoon. 363 00:21:43,120 --> 00:21:48,350 Het idee over het algemeen, is de Facebook API vrij ingewikkeld, maar ook erg handig. 364 00:21:48,350 --> 00:21:53,220 Zeker de moeite waard als je nog steeds op zoek naar een afstudeerproject. 365 00:21:53,220 --> 00:21:57,930 >> Een andere reeks API's die ik ga te gaan over is CS50 API's. 366 00:21:57,930 --> 00:22:00,070 Laat me in te zoomen hier. 367 00:22:00,070 --> 00:22:03,390 CS50 daadwerkelijk samen een hele reeks API's 368 00:22:03,390 --> 00:22:07,080 die u kunt gebruiken voor een afstudeerproject of gewoon voor iets dat je maakt. 369 00:22:07,080 --> 00:22:12,830 En ze zijn meestal Harvard verbonden, en zij afwijken van de HUDS menu, 370 00:22:12,830 --> 00:22:17,780 bijvoorbeeld om deze Harvard Evenementen API, die zal u laten toegang tot een lijst met 371 00:22:17,780 --> 00:22:21,290 verschillende gebeurtenissen die aan de gang aan Harvard en dat soort dingen. 372 00:22:21,290 --> 00:22:24,510 En dus kunnen we klikken op een van deze en krijg een spec voor het, 373 00:22:24,510 --> 00:22:28,090 die je zult kunnen vinden voor elke API, en het idee is 374 00:22:28,090 --> 00:22:33,920 Het laat je weten, A, in het bijzonder wat verzoeken om van de API en hoe het te vragen. 375 00:22:33,920 --> 00:22:37,370 Met andere woorden, als ik wil alle gebeurtenissen die gebeuren morgen 376 00:22:37,370 --> 00:22:42,550 dan moet ik om natuurlijk geven die datum dat ik wil in een bepaald formaat, 377 00:22:42,550 --> 00:22:46,030 en B, het zal me precies vertellen wat het gaat om terug te geven aan mij. 378 00:22:46,030 --> 00:22:48,590 Het zal zeggen ik ga terug je dit JSON object, 379 00:22:48,590 --> 00:22:50,960 of zoals je kunt zien, zijn er verschillende formaten. 380 00:22:50,960 --> 00:22:54,050 >> U kunt ook de terugkeer van de gegevens als een CSV, bijvoorbeeld. 381 00:22:54,050 --> 00:22:57,620 Maar weet u precies hoe die gegevens eruit komt te zien als je het terug 382 00:22:57,620 --> 00:23:00,610 dus je kunt verwachten dat bepaalde dingen mee te doen. 383 00:23:00,610 --> 00:23:07,240 We kunnen naar beneden scrollen en zie, bijvoorbeeld, als we willen dat de API opgevraagd 384 00:23:07,240 --> 00:23:11,500 een kalender te krijgen, dan kunnen we gebruik maken van deze bepaalde URL 385 00:23:11,500 --> 00:23:16,480 en geef het aantal parameters die zullen worden de gegevens die we willen precies. 386 00:23:16,480 --> 00:23:19,540 En ook, als we willen dat de gegevens weer in een bepaald formaat, 387 00:23:19,540 --> 00:23:23,790 dan kunnen we verzoeken de gegevens in een CSV uit te voeren, 388 00:23:23,790 --> 00:23:27,700 en dat is gewoon een andere parameter die we doorgeven aan de API. 389 00:23:27,700 --> 00:23:29,210 Veel leuke dingen om daar te doen. 390 00:23:29,210 --> 00:23:32,550 Ik zou zeker aanraden om de CS50-API's. 391 00:23:32,550 --> 00:23:36,000 >> Ik ga op dit Harvard Eten API kijken in het bijzonder voor een klein beetje. 392 00:23:36,000 --> 00:23:39,870 Een ding dat ik eigenlijk heb ontworpen is deze Harvard Noms website, 393 00:23:39,870 --> 00:23:44,930 die gebruik maakt van de CS50 Eten API op te halen het HUDS menu voor de dag. 394 00:23:44,930 --> 00:23:50,400 En voor uitbreiding school mensen, HUDS is het servies in Harvard. 395 00:23:50,400 --> 00:23:55,130 Wat je krijgt is deze pagina die alle van de maaltijden bevat voor de dag, zo zien we de lunch. 396 00:23:55,130 --> 00:23:58,130 We hebben een paar verschillende categorieën. We hebben de bonen en volkoren station. 397 00:23:58,130 --> 00:24:00,340 Wij hebben de bruine rijst station. 398 00:24:00,340 --> 00:24:03,360 We zien voor de brunch hebben we deze paar voedingsmiddelen. 399 00:24:03,360 --> 00:24:07,030 Als we er op klikt, dan krijgen we de voedingswaarde-informatie. 400 00:24:07,030 --> 00:24:12,240 Je ziet dit is de voedingswaarde-informatie voor grapefruit, voor het geval je het je afvragen. 401 00:24:12,240 --> 00:24:14,870 En dus nogmaals, we gaan naar peer in de back-end hier een klein beetje 402 00:24:14,870 --> 00:24:18,530 en zien wat dit precies doet om deze gegevens op te halen. 403 00:24:18,530 --> 00:24:21,710 Het blijkt niet daadwerkelijk erg complex at all. 404 00:24:21,710 --> 00:24:28,720 Dit bestand ziet er een beetje rommelig, maar houd in gedachten dat dit de gehele website hanteren, 405 00:24:28,720 --> 00:24:34,130 en als ik naar beneden scrollen zien we deze verandering data functie. 406 00:24:34,130 --> 00:24:36,630 >> Nu, om duidelijk te zijn, dit is geschreven in CoffeeScript, 407 00:24:36,630 --> 00:24:39,570 dat is een taal die u waarschijnlijk nog niet eerder gezien. 408 00:24:39,570 --> 00:24:44,810 Maar het is vrij leesbaar, dus ik zal er doorheen lopen alsof het pseudocode. 409 00:24:44,810 --> 00:24:49,080 Datum wijzigen is een functie die gaat nemen aan deze datum waarde, 410 00:24:49,080 --> 00:24:51,740 en het is ook gaat nemen in een eerste, die we niet schelen zo veel. 411 00:24:51,740 --> 00:24:54,110 Maar het belangrijkste is dat het deze datum heeft, 412 00:24:54,110 --> 00:25:00,080 en die datum is de dag dat we willen al het voedsel items te vragen voor. 413 00:25:00,080 --> 00:25:04,030 En dan zie je dat we hier een klein beetje van de syntaxis, 414 00:25:04,030 --> 00:25:09,000 dat is in principe het ontleden die datum in een leesbaar formaat. 415 00:25:09,000 --> 00:25:11,920 Met andere woorden, de API vereisen dat de datum in een bepaald formaat. 416 00:25:11,920 --> 00:25:17,390 Je kunt niet zomaar zeggen: 16 november 2012 AD. 417 00:25:17,390 --> 00:25:20,320 Het zal niet weten wat te doen met dat. Het wil de datum in een bepaald formaat. 418 00:25:20,320 --> 00:25:23,230 Het enige wat we hier doen is het geven van precies dat formaat, 419 00:25:23,230 --> 00:25:26,520 dat is een jaar waarde en vervolgens een koppelteken, een maand waarde, 420 00:25:26,520 --> 00:25:29,420 een andere koppelteken en de datum waarde. 421 00:25:29,420 --> 00:25:34,910 En we hebben ook zeggen dat we willen dat de uit te voeren gegevens in JSON zijn. 422 00:25:34,910 --> 00:25:37,560 >> Nu zijn we het maken van deze AJAX verzoek, en zoals ik al eerder zei, 423 00:25:37,560 --> 00:25:41,680 jQuery heeft deze super handige AJAX functie die alles wat je hoeft te doen is aangeven 424 00:25:41,680 --> 00:25:45,780 een paar parameters hier beneden, en het geeft je weer precies wat je wilt. 425 00:25:45,780 --> 00:25:50,490 We vertellen dat de URL wij het willen gaan is dit CS50 Eten API, 426 00:25:50,490 --> 00:25:52,270 die we kregen van de spec. 427 00:25:52,270 --> 00:25:56,730 We zeggen dat we de gegevens in JSON en dat willen 428 00:25:56,730 --> 00:25:59,490 we gaan geven deze gegevens die we hebben gedefinieerd hier boven. 429 00:25:59,490 --> 00:26:02,670 Dit is de dag dat we het voedsel items wilt voor. 430 00:26:02,670 --> 00:26:07,790 En dan alles wat we hoeven te doen is te definiëren een soort van succes-functie, 431 00:26:07,790 --> 00:26:11,980 dat is eigenlijk wat er gebeurt als de interface retourneert deze gegevens. 432 00:26:11,980 --> 00:26:15,490 Met andere woorden, hebben we verpakt alle parameters die we willen, 433 00:26:15,490 --> 00:26:20,530 die in dit geval is de dag dat we het willen en het feit dat we het willen in JSON, 434 00:26:20,530 --> 00:26:23,840 en stuurden we het uit aan de API, dus nu de API zegt, oke, 435 00:26:23,840 --> 00:26:26,350 Hier worden uw gegevens, ik heb het terug voor je. 436 00:26:26,350 --> 00:26:29,930 We hebben het succes functie, waardoor aangezien de API 437 00:26:29,930 --> 00:26:32,230 met succes terug wat gegevens, wat doen we ermee? 438 00:26:32,230 --> 00:26:35,980 >> En het blijkt dat alles wat we doen is bellen deze update menufunctie 439 00:26:35,980 --> 00:26:42,680 met wat de API is teruggekeerd, dus we kunnen zoeken naar die 440 00:26:42,680 --> 00:26:47,970 en zien dat alles wat we doen is een aantal nieuwe syntax hier in met gebruik 441 00:26:47,970 --> 00:26:52,220 om de HTML te werken en steek deze nieuwe gegevens. 442 00:26:52,220 --> 00:26:56,580 Wat dit laat is hebben we deze pijlen aan beide zijden, en klikken we kunnen, 443 00:26:56,580 --> 00:27:01,060 en nu zijn we op zoek naar de gegevens voor de volgende dag weer voor de volgende dag, 444 00:27:01,060 --> 00:27:04,820 en elke keer is het bijwerken van die datum waarde en het opvragen van de API, 445 00:27:04,820 --> 00:27:07,510 om terug een aantal gegevens en zetten het op de site. 446 00:27:07,510 --> 00:27:10,590 Ook hier kunt u zien, super, super handig. 447 00:27:10,590 --> 00:27:14,410 Deze app kostte me een paar uur om samen te hacken, 448 00:27:14,410 --> 00:27:20,140 en ik heb wat meer ervaring, natuurlijk, maar je CS50 afstudeerproject 449 00:27:20,140 --> 00:27:22,870 kunt kijken iets heel erg als dit. 450 00:27:22,870 --> 00:27:29,540 >> API's zijn super krachtig voor de hoeveelheid werk die zij nemen. 451 00:27:29,540 --> 00:27:32,800 Het laatste wat ik ga te gaan over een paar API's in grote lijnen. 452 00:27:32,800 --> 00:27:35,480 Ik zal niet zo ver te krijgen in deze voor zover wat ze doen het bijzonder, 453 00:27:35,480 --> 00:27:38,740 maar ik zal je een idee geven van wat er die er zijn. 454 00:27:38,740 --> 00:27:42,700 2 echt handig degenen, als je geïnteresseerd bent in de data-analyse of visualisatie 455 00:27:42,700 --> 00:27:45,960 of iets dergelijks, zijn Freebase en Wikipedia. 456 00:27:45,960 --> 00:27:49,800 Wikipedia-vermoedelijk jullie allemaal weten-is een gratis online encyclopedie, 457 00:27:49,800 --> 00:27:53,230 en het heeft eigenlijk een API, dus als je wilt, bijvoorbeeld, 458 00:27:53,230 --> 00:27:56,250 krijgen alle van de teksten en de artikelen voor octopus 459 00:27:56,250 --> 00:27:58,030 u kunt heel gemakkelijk doen. 460 00:27:58,030 --> 00:28:02,300 Zeg gewoon hey, Wikipedia API, zou ik graag de gegevens terug als deze, 461 00:28:02,300 --> 00:28:07,010 en ik zou het leuk vinden in dit formaat, en het artikel dat ik wil is octopus, 462 00:28:07,010 --> 00:28:09,820 en zeer snel het zal u terug die informatie. 463 00:28:09,820 --> 00:28:12,230 Dat kan erg handig als je wilt een soort van site te maken 464 00:28:12,230 --> 00:28:16,200 Dat is een betere viewer voor Wikipedia of iets dergelijks. 465 00:28:16,200 --> 00:28:21,350 >> Freebase is een soort van soortgelijke, hoewel het een beetje harder voor zover API. 466 00:28:21,350 --> 00:28:24,390 Freebase is net als Wikipedia in dat het een online encyclopedie 467 00:28:24,390 --> 00:28:29,050 die bevat veel en veel verschillende gegevens over allerlei verschillende onderwerpen, 468 00:28:29,050 --> 00:28:33,150 maar het is opgeslagen in een relationele database, die is iets anders dan Wikipedia. 469 00:28:33,150 --> 00:28:36,410 Wikipedia heeft haar statuten en artikelen gekoppeld aan andere artikelen, 470 00:28:36,410 --> 00:28:38,860 maar voor het grootste deel, als u wilt dat de gegevens voor octopus, 471 00:28:38,860 --> 00:28:41,990 ga je naar de octopus artikel, krijgen die gegevens, en je hebt een heleboel tekst 472 00:28:41,990 --> 00:28:43,830 over octopussen, dus dat is geweldig. 473 00:28:43,830 --> 00:28:46,870 Freebase werkt in een iets ingewikkelder wijze dat 474 00:28:46,870 --> 00:28:48,930 alles tot elkaar. 475 00:28:48,930 --> 00:28:52,620 Met andere woorden, als we op zoek bent naar voor octopus 476 00:28:52,620 --> 00:28:54,940 dan heeft het een heleboel categorieën die ermee verbonden zijn. 477 00:28:54,940 --> 00:28:57,920 >> Zo is een dier, leeft water, 478 00:28:57,920 --> 00:28:59,710 het een bepaalde lichaamstemperatuur. 479 00:28:59,710 --> 00:29:01,210 Ik weet het niet. 480 00:29:01,210 --> 00:29:04,230 En al deze categorieën zijn links naar andere plaatsen waar je kunt gaan 481 00:29:04,230 --> 00:29:06,640 om dingen te zien met diezelfde categorie. 482 00:29:06,640 --> 00:29:13,450 Met andere woorden, de data set octopus een link naar de data voor alle dieren, 483 00:29:13,450 --> 00:29:16,790 en dat zou laat me bewegen in de database heel snel. 484 00:29:16,790 --> 00:29:21,740 Dit kan erg handig zijn als je doet iets als vergelijkingen. 485 00:29:21,740 --> 00:29:24,490 Met andere woorden, gegeven een bepaald ding, je wilt zien 486 00:29:24,490 --> 00:29:27,890 wat anders het is gerelateerd aan en zie wat het niet is gerelateerd aan. 487 00:29:27,890 --> 00:29:30,700 Dat soort dingen. Het kan nuttig zijn in een aantal manieren. 488 00:29:30,700 --> 00:29:34,250 Als u op zoek bent naar meer van een uitdaging en om te kunnen wat meer complexe dingen te doen 489 00:29:34,250 --> 00:29:38,740 Ik zou overwegen het nemen van een blik op de Freebase API. 490 00:29:38,740 --> 00:29:44,670 Maar grotendeels, Wikipedia is een zeer eenvoudige plek om zo ver als het krijgen van informatie te gaan. 491 00:29:44,670 --> 00:29:48,340 Een andere plek waar ik naar gaat kijken is Last.fm, en ik ben eigenlijk ga naar de site 492 00:29:48,340 --> 00:29:53,800 in het geval sommige mensen niet bekend zijn, maar Last.fm is eigenlijk een muziek 493 00:29:53,800 --> 00:29:57,220 smaken en aanbevelingen website. 494 00:29:57,220 --> 00:29:59,000 Je kunt een account aanmaken. 495 00:29:59,000 --> 00:30:04,250 U kunt beginnen met het uploaden van muziek van uw muziekspeler 496 00:30:04,250 --> 00:30:08,020 op de website, en in principe zal het beginnen met het geven u muziek aanbevelingen 497 00:30:08,020 --> 00:30:10,030 gebaseerd op wat je luistert. 498 00:30:10,030 --> 00:30:14,270 >> Bijvoorbeeld, als je naar je profiel pagina-dit is van mij- 499 00:30:14,270 --> 00:30:18,180 je kunt zien heb je een lijst met recent beluisterde tracks. 500 00:30:18,180 --> 00:30:22,550 U kunt zien dat de totale favoriete artiesten, al dat soort dingen, 501 00:30:22,550 --> 00:30:25,280 en nogmaals, er is een grote API achter Last.fm, 502 00:30:25,280 --> 00:30:29,360  en u kunt het gebruiken om heel veel echt leuke dingen te doen. 503 00:30:29,360 --> 00:30:38,870 Bijvoorbeeld, ik ga naar pagina van een vriend die heeft dit Last.fm Hulpmiddelen website. 504 00:30:38,870 --> 00:30:42,380 Dit is eigenlijk een ander platform dat is gebouwd op de Last.fm API, 505 00:30:42,380 --> 00:30:45,420 en het doet een aantal mooie interessante dingen. 506 00:30:45,420 --> 00:30:50,260 Als ik inloggen met mijn gebruikersnaam, bijvoorbeeld, 507 00:30:50,260 --> 00:30:53,110 Ik kan vragen naar een wolk genereren, bijvoorbeeld 508 00:30:53,110 --> 00:30:56,480 en wat dat gaat doen is mij een beeld van 509 00:30:56,480 --> 00:30:59,850 alle verschillende genres en dat soort dingen die ik luister graag naar. 510 00:30:59,850 --> 00:31:01,410 Hoe is het om dit te doen? 511 00:31:01,410 --> 00:31:05,670 Zeer kort gezegd: het zegt aan de Last.fm API is hier deze gebruiker. 512 00:31:05,670 --> 00:31:10,710 Ik wil graag het genre van elk nummer weten dat ze ooit hebben geluisterd, 513 00:31:10,710 --> 00:31:15,130 en kun je dat doen door het maken van een vrij eenvoudige AJAX aanroep naar de Last.fm API. 514 00:31:15,130 --> 00:31:18,990 Je krijgt terug een grote lijst, en dan natuurlijk een aantal andere dingen wordt gedaan 515 00:31:18,990 --> 00:31:22,280 om te zetten in een word cloud, maar je kunt zien algehele 516 00:31:22,280 --> 00:31:25,850 het is heel gemakkelijk te bereiken en zeer makkelijk te gebruiken. 517 00:31:25,850 --> 00:31:30,750 Echt leuk voor een aantal dingen. 518 00:31:30,750 --> 00:31:35,940 >> Ik denk dat is ongeveer alles wat ik algemeen zeggen. 519 00:31:35,940 --> 00:31:39,040 Een laatste ding zal ik over API's te vermelden in het algemeen is dat 520 00:31:39,040 --> 00:31:41,840 je zult wel eens tegenkomen iets genaamd snelheidsbeperking, 521 00:31:41,840 --> 00:31:44,940 en het idee van snelheidsbepalende is dat je niet wilt API's misbruiken. 522 00:31:44,940 --> 00:31:48,130 Met andere woorden, het is echt leuk dat veel van deze websites API's 523 00:31:48,130 --> 00:31:51,070 dat u kunt gaan tot en het gebruik gratis. 524 00:31:51,070 --> 00:31:54,460 Maar als je het maken van miljoenen of miljarden aanvragen per dag, 525 00:31:54,460 --> 00:31:57,610 bijvoorbeeld, als je vast zit in een oneindige lus, die eindeloos is het bevragen 526 00:31:57,610 --> 00:32:00,680 een soort van API en om terug een enorme hoeveelheid gegevens, 527 00:32:00,680 --> 00:32:04,570 uiteraard dat niet goed is, dus wat veel doen van API's is hebben deze snelheidsbeperking functie 528 00:32:04,570 --> 00:32:09,970 die zegt dat je kunt alleen 1.000 aanvragen per dag per IP-adres of iets dergelijks. 529 00:32:09,970 --> 00:32:12,540 En als je doet een hoop testen en dat soort dingen, 530 00:32:12,540 --> 00:32:14,890 je zult wel eens tegenkomen dat, en opeens dan schakelt hij zich u af 531 00:32:14,890 --> 00:32:18,280 en zeggen nee, ik ben niet geven je niet meer gegevens. 532 00:32:18,280 --> 00:32:20,000 >> Wat u wilt doen is spelen volgens de regels. 533 00:32:20,000 --> 00:32:22,950 U wilt ervoor zorgen dat u de API spec zorgvuldig te lezen. 534 00:32:22,950 --> 00:32:26,330 Als het heeft bepaalde regels die eraan verbonden zijn, zoals je kunt alleen X queries per dag 535 00:32:26,330 --> 00:32:30,000 of u kunt alleen toegang krijgen tot een deel van de database een bepaald aantal keren 536 00:32:30,000 --> 00:32:32,900 of iets dergelijks die u wilt ervoor zorgen dat u zich aan dat. 537 00:32:32,900 --> 00:32:38,360 Zolang je speelt binnen die regels zul je waarschijnlijk hebben een erg leuke tijd met behulp van API's. 538 00:32:38,360 --> 00:32:42,030 Uw algehele afhaalmaaltijden is API's zijn echt, echt handig. 539 00:32:42,030 --> 00:32:45,610 >> Er is een API voor bijna elke grote webdienst die er zijn. 540 00:32:45,610 --> 00:32:50,700 Vrijwel elk deel van de Google Tools Suite, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 GMail, Google Calendar, al die dingen hebben API's. 542 00:32:54,390 --> 00:32:58,280 U kunt ze gebruiken om zowel get gegevens van de server en stuurt gegevens naar de server. 543 00:32:58,280 --> 00:33:00,870 Met andere woorden, als je wilde een kalender app te maken die kunnen worden bijgewerkt 544 00:33:00,870 --> 00:33:04,190 iemands Google Agenda, is er een API voor. 545 00:33:04,190 --> 00:33:07,810 Als je iets wilt dat gaat je vertellen waar te maken 546 00:33:07,810 --> 00:33:12,530 de locatie van een bepaald adres is kunt u de Google Maps API gebruiken voor. 547 00:33:12,530 --> 00:33:15,860 API's zijn fantastisch nuttig, en ze zijn overal. 548 00:33:15,860 --> 00:33:18,700 Als u geïnteresseerd bent in een soort van idee, 549 00:33:18,700 --> 00:33:22,170 er is waarschijnlijk een gerelateerde API die u kunt gebruiken om veel gegevens te krijgen 550 00:33:22,170 --> 00:33:25,060 heel snel en heel eenvoudig. 551 00:33:25,060 --> 00:33:28,140 >> Als je nog steeds op zoek naar een project of als je gewoon wilt om te spelen rond 552 00:33:28,140 --> 00:33:31,820 met iets in het algemeen, API's zijn zeker de moeite waard. 553 00:33:31,820 --> 00:33:37,200 Bedankt, en ik ben blij zijn om eventuele vragen die jullie kunnen beantwoorden. 554 00:33:37,200 --> 00:33:44,900 Oke, heel erg bedankt. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]