1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Seminarium] [en programmerare Introduktion till API] 2 00:00:02,480 --> 00:00:04,059 [Billy Janitsch] [Harvard University] [Tommy MacWilliam] 3 00:00:04,059 --> 00:00:08,220 [Detta är CS50.] [CS50.TV] 4 00:00:08,220 --> 00:00:12,100 >> Hej, alla, jag är Billy, och idag ska jag tala om API, 5 00:00:12,100 --> 00:00:15,220 eller programmeringsgränssnitt, 6 00:00:15,220 --> 00:00:20,040 särskilt i samband med CS50 slutliga projekt och sånt. 7 00:00:20,040 --> 00:00:22,490 I allmänhet vad är ett API? 8 00:00:22,490 --> 00:00:25,530 I mycket grova drag är det en slags mellanhand som gör 2 st 9 00:00:25,530 --> 00:00:28,610 av programvara för att kommunicera med varandra. 10 00:00:28,610 --> 00:00:32,530 Det är en sorts mycket bred definition och är det inte relevant för vad vi tittar på. 11 00:00:32,530 --> 00:00:35,450 Vad vi verkligen vill är något slags nyttig medelväg 12 00:00:35,450 --> 00:00:40,570 att kommunicera med någon sorts databas någonstans. 13 00:00:40,570 --> 00:00:43,310 >> Här är ett diagram, och i princip tanken är att 14 00:00:43,310 --> 00:00:46,790 Vi är ett program och vi vill få data från en databas, 15 00:00:46,790 --> 00:00:49,570 men vi vill inte att söka i databasen direkt. 16 00:00:49,570 --> 00:00:52,710 Istället vill vi att gå igenom denna typ av mellanhand, API. 17 00:00:52,710 --> 00:00:55,440 Tanken bakom detta är nummer 2 och 3 i diagrammet 18 00:00:55,440 --> 00:00:57,750 båda kommer att vara mycket komplicerat och rörigt. 19 00:00:57,750 --> 00:00:59,960 Med andra ord, när API avfråga databasen, 20 00:00:59,960 --> 00:01:03,300 Det är förmodligen kommer att använda SQL-tabeller och alla den sortens saker, 21 00:01:03,300 --> 00:01:05,489 och vi har lärt oss lite om det i CS50, men totalt sett, 22 00:01:05,489 --> 00:01:07,590 du har märkt att det är lite av en smärta. 23 00:01:07,590 --> 00:01:10,590 Det blir mycket, mycket komplicerad och rörig, speciellt när du gör 24 00:01:10,590 --> 00:01:12,530 komplexa frågor och sånt. 25 00:01:12,530 --> 00:01:15,960 >> Vad vi verkligen vill är något slags användbara och enkelt sätt 26 00:01:15,960 --> 00:01:19,780 att få dessa uppgifter, och det är tanken bakom siffrorna 1 och 4 på sjökortet. 27 00:01:19,780 --> 00:01:23,600 Med andra ord vill vi ett riktigt enkelt sätt att berätta API vad som ska få för oss 28 00:01:23,600 --> 00:01:27,760 och ett riktigt enkelt sätt att få dessa uppgifter tillbaka. 29 00:01:27,760 --> 00:01:33,020 Det är ett av huvudskälen sätt att data oftast skickas och tas emot, 30 00:01:33,020 --> 00:01:36,490 vilket är JSON eller JavaScript Object Notation. 31 00:01:36,490 --> 00:01:40,370 Som kan variera lite så långt som hur du skickar begäran till API. 32 00:01:40,370 --> 00:01:43,210 Med andra ord, om du vill ha viss mängd data, 33 00:01:43,210 --> 00:01:46,670 hur du säger API för att få dessa data kan variera lite. 34 00:01:46,670 --> 00:01:49,210 Vanligtvis handlar om att göra någon form av nätverk begäran. 35 00:01:49,210 --> 00:01:53,130 Med andra ord, komma någon form av URL som kommer att berätta API 36 00:01:53,130 --> 00:01:56,190 exakt vad du vill, men data är nästan alltid skickas tillbaka, 37 00:01:56,190 --> 00:01:59,530 med andra ord, nummer 4 i JSON. 38 00:01:59,530 --> 00:02:01,030 >> Vad är JSON exakt? 39 00:02:01,030 --> 00:02:03,030 Som jag sa, JavaScript Object Notation. 40 00:02:03,030 --> 00:02:07,090 Det är i grunden en universell standard för att sända och ta emot data. 41 00:02:07,090 --> 00:02:11,410 Tanken är att du har dessa 3 kategorier av saker. 42 00:02:11,410 --> 00:02:13,540 Du har arrayer, hashmaps och primitiva. 43 00:02:13,540 --> 00:02:16,580 Matriser och hashmaps du har tittat på lite i CS50, 44 00:02:16,580 --> 00:02:19,870 men du har typ av fått en mycket strikt mening av vad de är. 45 00:02:19,870 --> 00:02:22,780 Med andra ord, med arrayer vet du att de är typ bunden, 46 00:02:22,780 --> 00:02:26,560 så du har bara en sorts typ som går hela uppsättningen. 47 00:02:26,560 --> 00:02:29,310 JSON är mycket mer överseende med sånt. 48 00:02:29,310 --> 00:02:33,590 I grund och botten är tanken du skapa detta objekt, 49 00:02:33,590 --> 00:02:36,270 som kan bestå av någon av dessa 3 saker 50 00:02:36,270 --> 00:02:39,470 och kan bestå av flera sådana av dem, och de kan kapslas. 51 00:02:39,470 --> 00:02:42,110 >> Här är typ av ett exempel på JSON, 52 00:02:42,110 --> 00:02:47,910 vilket är dessa klammerparenteser här representerar din HashMap, 53 00:02:47,910 --> 00:02:51,400 och en HashMap är i grunden en kartläggning av någon form av nyckel 54 00:02:51,400 --> 00:02:53,340 till någon form av värde. 55 00:02:53,340 --> 00:02:56,440 Du ser här att vi har egenskaper nyckeln 56 00:02:56,440 --> 00:02:59,600 och det är mappning på en array, vilket är hela den här saken. 57 00:02:59,600 --> 00:03:04,120 Vi ser en annan del av HashMap, som är denna nyckel isAwesome, 58 00:03:04,120 --> 00:03:07,370 vilka kartor till ett primitivt värdet true, med andra ord, ett booleskt. 59 00:03:07,370 --> 00:03:09,420 Primitiver kan strängar. De kan vara heltal. 60 00:03:09,420 --> 00:03:11,960 De kan vara bools, något sådant. 61 00:03:11,960 --> 00:03:18,410 Och du ser innehållet i denna array som fastigheter pekar på har 2 strängar i det, 62 00:03:18,410 --> 00:03:20,050 själv liknande och underbara. 63 00:03:20,050 --> 00:03:27,410 Det är 2 egenskaper JSON, och vi ser att JSON är awesome. 64 00:03:27,410 --> 00:03:30,060 För att titta på det lite närmare jag kommer att bygga 65 00:03:30,060 --> 00:03:32,870 en mer komplex exempel JSON här. 66 00:03:32,870 --> 00:03:37,000 >> Låt oss börja med en array, exempelvis, bara en tom array. 67 00:03:37,000 --> 00:03:39,180 Men det är typ av tråkigt, så vi kommer att fylla upp en bit, 68 00:03:39,180 --> 00:03:43,420 och som jag sa, är arrayer i JSON typ bunden, 69 00:03:43,420 --> 00:03:46,400 så vi kunde också ha en sträng här, vilket är hej, 70 00:03:46,400 --> 00:03:49,330 och det är en annan del av denna grupp. 71 00:03:49,330 --> 00:03:53,450 Och likaså kan vi lägga till en hashmapping här, som kommer att ha några avbildningar. 72 00:03:53,450 --> 00:04:00,470 Det kommer att ha en kartläggning från namn till strängen Billy. 73 00:04:00,470 --> 00:04:04,590 Vi har en kartläggning från namn till Billy, och vi har en kartläggning av 74 00:04:04,590 --> 00:04:10,860 favoritfärg till blå. 75 00:04:10,860 --> 00:04:12,700 Det är i grunden ett bra exempel på JSON. 76 00:04:12,700 --> 00:04:18,160 Det slags hamnar i-hoppsan, behöver ett kommatecken där-alla olika delar av den. 77 00:04:18,160 --> 00:04:21,140 Återigen, det är inte typ bunden alls, så du kan ha någon form av olika typer 78 00:04:21,140 --> 00:04:24,710 inuti vad du vill, och tanken är att det är själv-liknande. 79 00:04:24,710 --> 00:04:28,830 Med andra ord är detta just här en JSON-objekt, som är allt det här, 80 00:04:28,830 --> 00:04:33,200 som är just detta, så du kan ha en primitiv vara ett objekt, 81 00:04:33,200 --> 00:04:35,680 en matris vara ett objekt eller en HashMap vara ett objekt. 82 00:04:35,680 --> 00:04:40,270 >> Som du kan typ av se, är JSON riktigt, riktigt bra att det är så mångsidig. 83 00:04:40,270 --> 00:04:45,860 Du kan ha eventuella data som du kan tänka lagras i JSON. 84 00:04:45,860 --> 00:04:47,900 Det gör det till en riktigt trevlig språk att använda med API: er 85 00:04:47,900 --> 00:04:50,770 eftersom det ganska mycket innebär att oavsett vilka data som du vill 86 00:04:50,770 --> 00:04:54,270 det kommer att finnas något sätt att få det tillbaka i JSON. 87 00:04:54,270 --> 00:04:58,600 Några egenskaper som gör JSON särskilt bra för den här sortens saker. 88 00:04:58,600 --> 00:05:02,270 Som ni kan se, jämfört med en massa saker som du har arbetat med under CS50 89 00:05:02,270 --> 00:05:06,040 Det är jämförelsevis lätt att läsa och också mycket lätt att skriva. 90 00:05:06,040 --> 00:05:09,700 Du kan dra ut om du vill, som jag gjorde i detta exempel, 91 00:05:09,700 --> 00:05:12,990 som ger dig en trevlig, vacker version som du kan se riktigt bra. 92 00:05:12,990 --> 00:05:17,150 Men dessutom är det också lätt att läsa och skriva för en dator. 93 00:05:17,150 --> 00:05:19,870 Med andra ord, är det lätt att tolka och lätt att koda, 94 00:05:19,870 --> 00:05:23,820 vilket innebär att det är ganska snabbt när det gäller att läsa data är berörda, 95 00:05:23,820 --> 00:05:26,460 och JSON kan genereras riktigt snabbt. 96 00:05:26,460 --> 00:05:30,300 >> Det är också väldigt lätt att få tillgång till olika delar av JSON och sånt. 97 00:05:30,300 --> 00:05:33,320 Det är trevligt, och dessutom det faktum att det är själv-liknande, 98 00:05:33,320 --> 00:05:36,090 med andra ord, det faktum att du kan ha JSON inom JSON inom JSON 99 00:05:36,090 --> 00:05:40,040 är verkligen trevligt för att lagra data. 100 00:05:40,040 --> 00:05:45,490 En annan del som är generellt riktigt bra att arbeta med API: er är jQuery. 101 00:05:45,490 --> 00:05:49,290 Du har lärt lite JavaScript, vilket är ett trevligt sätt 102 00:05:49,290 --> 00:05:53,710 att manipulera HTML och CSS på en webbplats. 103 00:05:53,710 --> 00:05:57,190 Men det kan typ av vara jobbigt att kod i vanlig JavaScript, 104 00:05:57,190 --> 00:05:59,810 till stor del beroende JavaScript är ett riktigt utförlig språk. 105 00:05:59,810 --> 00:06:03,020 Du måste lära dig en massa syntax och bara göra enkla saker 106 00:06:03,020 --> 00:06:07,590 Det tar en hel del kod, så jQuery är ett bibliotek för Javascript. 107 00:06:07,590 --> 00:06:09,800 Med andra ord, det är en JavaScript-fil som du kan ladda 108 00:06:09,800 --> 00:06:12,730 och sedan använda jQuery funktioner för att göra vissa saker. 109 00:06:12,730 --> 00:06:15,670 Och jQuery gör i princip ditt liv mycket enklare. 110 00:06:15,670 --> 00:06:20,390 Det förenklar vad som skulle ta hundratals linjer i JavaScript ner till några rader i jQuery. 111 00:06:20,390 --> 00:06:24,430 >> Det är särskilt användbart om du använder API: er eftersom generellt 112 00:06:24,430 --> 00:06:27,600 hur du ska använda API: er är genom att göra AJAX förfrågningar, 113 00:06:27,600 --> 00:06:30,130 och jag tror David har nämnt i föreläsning som AJAX förfrågningar 114 00:06:30,130 --> 00:06:33,120 är i allmänhet när du gör ett nätverk begäran till någon form av server 115 00:06:33,120 --> 00:06:37,760 och få tillbaka någon form av data och uppdatera en sida omedelbart. 116 00:06:37,760 --> 00:06:41,840 Medan det i vanlig JavaScript som skulle ta galna antal linjer 117 00:06:41,840 --> 00:06:44,620 att validera alla rubriker och göra allt den sortens saker, 118 00:06:44,620 --> 00:06:46,810 jQuery har en riktigt enkel funktion som kallas AJAX, 119 00:06:46,810 --> 00:06:51,760 och allt du behöver göra i AJAX är att ge de parametrar som du vill ge API, 120 00:06:51,760 --> 00:06:56,830 platsen för API och ytterligare sorts alternativ som du vill konfigurera. 121 00:06:56,830 --> 00:07:02,480 Det är riktigt, riktigt nice och mycket användbar för denna typ av sak. 122 00:07:02,480 --> 00:07:06,970 Det är allt vi behöver för att börja få våra händer smutsiga i API: er. 123 00:07:06,970 --> 00:07:10,220 >> Jag ska ta upp några exempel och utforska deras olika egenskaper 124 00:07:10,220 --> 00:07:13,150 och varför de är användbara för olika typer av saker. 125 00:07:13,150 --> 00:07:15,570 Det första jag ska faktiskt visa dig är något som jag jobbar på 126 00:07:15,570 --> 00:07:18,310 på min forskningslabb, vilket är en ngram Viewer, 127 00:07:18,310 --> 00:07:23,270 och i princip tanken på en ngram Viewer är att du kan söka efter någon form av ord 128 00:07:23,270 --> 00:07:28,840 eller en fras och se hur ofta det dök upp i en viss uppsättning av text över tiden. 129 00:07:28,840 --> 00:07:33,160 Detta exempel här är dessa uppgifter uppsättning av spädbarn 130 00:07:33,160 --> 00:07:36,480 som föddes i New York mellan 1920 och 2000. 131 00:07:36,480 --> 00:07:40,090 Vi kan söka, till exempel för namnet Jennifer, 132 00:07:40,090 --> 00:07:44,400 och vi ser att pre-1960 det verkligen inte användes så mycket, 133 00:07:44,400 --> 00:07:48,900 och sedan när vi kommer in senare år det blir används mer och mer. 134 00:07:48,900 --> 00:07:53,680 Vi kan också göra jämförelser, så om vi jämför Jennifer till exempel, Thomas, 135 00:07:53,680 --> 00:07:56,520 kan vi se Thomas har varit ganska vanligt genom historien, 136 00:07:56,520 --> 00:07:58,780 medan Jennifer är en nyare namn. 137 00:07:58,780 --> 00:08:00,590 Vi kan göra en sådan sak. 138 00:08:00,590 --> 00:08:02,460 >> Hur fungerar det här programmet till? 139 00:08:02,460 --> 00:08:06,030 I grund och botten, det fungerar genom ett API. 140 00:08:06,030 --> 00:08:08,660 Med andra ord har vi vissa parametrar här. 141 00:08:08,660 --> 00:08:11,360 Vi har parametrarna för vad vi egentligen söker efter, 142 00:08:11,360 --> 00:08:13,720 som är dessa namn, och sedan har vi några andra egenskaper, 143 00:08:13,720 --> 00:08:16,570 som Y-axeln och X-axeln. 144 00:08:16,570 --> 00:08:18,440 Du kan se att vi har ett par olika alternativ när det gäller 145 00:08:18,440 --> 00:08:20,860 tidsupplösningen att använda och sånt. 146 00:08:20,860 --> 00:08:26,700 Vi har dessa alternativ så långt som vilka uppgifter vi faktiskt vill ha från databasen, 147 00:08:26,700 --> 00:08:29,400 och vi vill få att data tillbaka på något bra sätt. 148 00:08:29,400 --> 00:08:34,020 Vanligtvis om vi frågande databasen direkt skulle sortera om vara jobbigt att göra 149 00:08:34,020 --> 00:08:38,970 eftersom Förmodligen data om baby namn lever i någon databas någonstans, 150 00:08:38,970 --> 00:08:42,789 och det skulle vara mycket komplicerat att behöva fråga den manuellt 151 00:08:42,789 --> 00:08:45,830 och bestämma exakt vilka data att återvända. 152 00:08:45,830 --> 00:08:49,300 Med andra ord, vi bryr oss bara om Jennifer och Thomas i detta fall, 153 00:08:49,300 --> 00:08:53,410 och vi bryr sig bara om en viss axel och alla den typen av saker. 154 00:08:53,410 --> 00:08:55,720 >> Hur får vi runt detta? 155 00:08:55,720 --> 00:09:01,200 Att gräva i detta API lite mer jag ska visa dig ett annat exempel på denna plattform 156 00:09:01,200 --> 00:09:04,490 som använder en något annorlunda uppsättning data. 157 00:09:04,490 --> 00:09:09,950 Dessa data set, istället för att vara baby namnen, är egentligen bara hela 158 00:09:09,950 --> 00:09:12,460 skriva ut publikationsdatabas av Open Library, 159 00:09:12,460 --> 00:09:18,410 som är en jätte källa av texter publicerats under de senaste 100-tal år. 160 00:09:18,410 --> 00:09:23,540 Tanken är att vi har denna compository av miljontals text, 161 00:09:23,540 --> 00:09:27,420 som vi nu kan söka efter olika ord och fraser i. 162 00:09:27,420 --> 00:09:30,840 Här är ett exempel som varierar lite annorlunda från det tidigare exemplet 163 00:09:30,840 --> 00:09:33,350 Jag visade dig, vilket är att vi har dessa 3 sökfrågor, 164 00:09:33,350 --> 00:09:36,290 krig, krig och det franska ordet för krig, som är Guerre. 165 00:09:36,290 --> 00:09:40,380 Och vi söker inom 3 olika sektioner av den totala databasen. 166 00:09:40,380 --> 00:09:45,080 Med andra ord, i denna första fråga vi bara söker i USA, 167 00:09:45,080 --> 00:09:51,150 i den andra en bara i Storbritannien, och den tredje bara från verk som produceras i Frankrike. 168 00:09:51,150 --> 00:09:53,120 Vi ser några intressanta mönster fram. 169 00:09:53,120 --> 00:09:58,180 Till exempel ser vi precis runt här som- 170 00:09:58,180 --> 00:10:02,410 oops, trasslat jag upp axeln lite, men du kan se rätt i detta område här 171 00:10:02,410 --> 00:10:05,730 runt inbördeskriget det finns en stor spik i den amerikanska upplagan 172 00:10:05,730 --> 00:10:08,340 men inte så stor stegring i de andra två, och det är självklart att 173 00:10:08,340 --> 00:10:10,880 det amerikanska inbördeskriget hände vid den punkten. 174 00:10:10,880 --> 00:10:13,890 >> Vi kan se några coola saker där, 175 00:10:13,890 --> 00:10:17,070 men vad vi verkligen bryr oss om är hur vi fick dessa data. 176 00:10:17,070 --> 00:10:21,320 Jag tar dig bakom kulisserna i denna app på lite. 177 00:10:21,320 --> 00:10:24,540 En snygg knep är om du arbetar med webbplatsen och typ av vill veta 178 00:10:24,540 --> 00:10:27,430 vad som händer bakom kulisserna, kan du öppna upp utvecklarverktyg. 179 00:10:27,430 --> 00:10:30,200 Jag kommer att använda Chrome utvecklarverktyg, och för att få dem 180 00:10:30,200 --> 00:10:35,160 du kan göra kontroll, skift, J och som tar dig till JavaScript-konsolen. 181 00:10:35,160 --> 00:10:37,420 Det finns några flikar här. 182 00:10:37,420 --> 00:10:39,680 De kan alla vara ganska användbart under olika omständigheter, men jag bryr mig om nätverket 183 00:10:39,680 --> 00:10:44,150 fliken just nu, och jag har faktiskt uppdatera för att få det att fungera. 184 00:10:44,150 --> 00:10:50,180 Åh, förlåt. 185 00:10:50,180 --> 00:10:52,320 Det gillar att ge en slumpmässig exempel. 186 00:10:52,320 --> 00:10:54,700 Okej, vi här använder du exemplet istället då. 187 00:10:54,700 --> 00:11:01,330 >> Tanken är att det är det här API här, 188 00:11:01,330 --> 00:11:05,330 och du kan se exakt vad API återvänder. 189 00:11:05,330 --> 00:11:10,220 Detta är vad programmet är att få tillbaka från API har sänt begäran. 190 00:11:10,220 --> 00:11:13,680 Låt mig zooma in lite, 191 00:11:13,680 --> 00:11:18,340 och vi kan i princip se det är bara en rad viktiga värdepar i JSON. 192 00:11:18,340 --> 00:11:23,220 Med andra ord har vi här HashMap här som är kartläggning värden. 193 00:11:23,220 --> 00:11:26,440 Med andra ord, det kartläggning år till värden. 194 00:11:26,440 --> 00:11:32,600 År 1765 vad ord vi inledningsvis sökte används 90 gånger 195 00:11:32,600 --> 00:11:35,810 av 1 miljoner, så vi få tillbaka detta resultat. 196 00:11:35,810 --> 00:11:40,280 Det är inte precis JSON eftersom vi har den här lilla resultat huvud här, 197 00:11:40,280 --> 00:11:45,630 men märker att det hela objektet här är bara en stor stor JSON klump. 198 00:11:45,630 --> 00:11:51,070 Vi har en rad här som innehåller hela den här delen, 199 00:11:51,070 --> 00:11:55,590 och du kan se att hela elementet slutar där, och sedan har vi en annan stor faktor 200 00:11:55,590 --> 00:11:59,430 som går ända ner till slutet, och det slutar här. 201 00:11:59,430 --> 00:12:02,200 Vi har en riktigt stor array med 2 föremål i den, 202 00:12:02,200 --> 00:12:04,630 och vart och ett av dessa objekt är en HashMap. 203 00:12:04,630 --> 00:12:07,340 Du kan se i var och en av hashmaps vi en kartläggning 204 00:12:07,340 --> 00:12:12,700 detta index värde 0 och detta värde värde till ett annat HashMap, 205 00:12:12,700 --> 00:12:18,360 som återigen är avbildningsvärden X-axeln till Y axelvärden. 206 00:12:18,360 --> 00:12:20,970 >> Du kan se JSON blir lite komplicerat, men totalt sett, 207 00:12:20,970 --> 00:12:24,190 det är faktiskt mycket användbar, och det är mycket lätt att komma i jämförelse med 208 00:12:24,190 --> 00:12:27,390 andra olika former av notation. 209 00:12:27,390 --> 00:12:30,550 Såvitt vad vi egentligen skicka data till API för att få, 210 00:12:30,550 --> 00:12:34,690 Jag ska gå in i bakändan lite här. 211 00:12:34,690 --> 00:12:39,850 Detta är den stora JavaScript-fil som är handläggningen av alla de interaktion mellan webbprogrammet, 212 00:12:39,850 --> 00:12:44,810 så vi bryr oss inte om det mesta av detta, men vi bryr oss om en del av det. 213 00:12:44,810 --> 00:12:47,410 Till exempel bryr vi om detta buildQuery funktion, 214 00:12:47,410 --> 00:12:50,670 och tanken med denna funktion är i grunden det ser runt på sidan, 215 00:12:50,670 --> 00:12:53,750 räkna ut vad användaren vill söka, med andra ord, 216 00:12:53,750 --> 00:12:57,090 kontrollera de boxar där de har in sina söktermer, 217 00:12:57,090 --> 00:13:01,380 kontrollera de olika Y-och X-värden axel som de har valt och alla sånt, 218 00:13:01,380 --> 00:13:06,650 och det kommer att spotta ut denna fråga värde, som jag kan sedan skicka iväg till API. 219 00:13:06,650 --> 00:13:09,180 >> Det ser komplicerat, och det är ganska komplicerat 220 00:13:09,180 --> 00:13:18,090 men vad jag ska göra, i själva verket, jag redan gör detta, vilket är bra, 221 00:13:18,090 --> 00:13:21,640 är att jag ska få konsolen att skriva ut exakt den frågan värde 222 00:13:21,640 --> 00:13:28,110 att det är att skicka iväg till API. 223 00:13:28,110 --> 00:13:30,870 Det är faktiskt här. Tyvärr matar det en hel del saker. 224 00:13:30,870 --> 00:13:33,690 Men detta är vad vi bryr oss om, detta objekt här. 225 00:13:33,690 --> 00:13:35,300 Detta är frågan objektet. 226 00:13:35,300 --> 00:13:40,670 Med andra ord är detta precis vad webbapplikationen skickar till API, 227 00:13:40,670 --> 00:13:45,730 och så låt oss titta i lite, och vi ser att vi har några värden här. 228 00:13:45,730 --> 00:13:48,710 Vi ser att vi har denna räkna typ, som är händelser per miljon ord, 229 00:13:48,710 --> 00:13:51,460 vilket är precis vad vi har valt i Y-axeln hit. 230 00:13:51,460 --> 00:13:53,740 Det är där det kommer ifrån. 231 00:13:53,740 --> 00:13:58,010 Vi har en databas värde, vilket innebär att det finns någon viss databas 232 00:13:58,010 --> 00:14:01,610 att dessa uppgifter lever i, och vi vill komma åt dessa data specifikt 233 00:14:01,610 --> 00:14:04,950 i motsats till de baby namnen uppgifterna, till exempel. 234 00:14:04,950 --> 00:14:08,320 Sedan har vi det här grupper värde, 235 00:14:08,320 --> 00:14:12,090 som säger att vi vill söka efter år i motsats till 236 00:14:12,090 --> 00:14:16,030 någon annan X-axel värde. 237 00:14:16,030 --> 00:14:19,040 Sedan har vi en metod, som vissa API: er kommer att göra flera saker. 238 00:14:19,040 --> 00:14:22,360 Med andra ord kan denna API returnera även andra typer av data, 239 00:14:22,360 --> 00:14:27,740 men i detta fall vill vi att kartläggning av X-axelvärden till Y axelvärden. 240 00:14:27,740 --> 00:14:30,730 Det är vad som säga till den att göra det, 241 00:14:30,730 --> 00:14:35,020 och vi har den här sökningen begränsar array, som innehåller 2-värden. 242 00:14:35,020 --> 00:14:40,720 Den första är vad vi ser här, är som alla värden 243 00:14:40,720 --> 00:14:43,020 som finns i den första lilla rutan högst upp. 244 00:14:43,020 --> 00:14:47,570 >> Med andra ord, vill vi söka efter ordet striden, och vi vill filtrera 245 00:14:47,570 --> 00:14:51,920 av engelska texter inom amerikansk litteratur. 246 00:14:51,920 --> 00:14:54,590 Vi har detta land, som är USA. 247 00:14:54,590 --> 00:14:59,130 Vi har ett språk, som är engelska, så vi har alla dessa olika delar 248 00:14:59,130 --> 00:15:02,690 som alla talar API precis vad vi vill. 249 00:15:02,690 --> 00:15:04,940 Vi vet inte vad de data som vi får tillbaka är ännu, 250 00:15:04,940 --> 00:15:10,970 men vi vet att data kommer att ta en viss form. 251 00:15:10,970 --> 00:15:13,650 Detta exempel är typ av på den komplicerade sidan, 252 00:15:13,650 --> 00:15:16,180 och du skulle inte nödvändigtvis använda en API denna komplexa, 253 00:15:16,180 --> 00:15:20,600 men detta är att visa dig olika och kraften i vad API kan göra. 254 00:15:20,600 --> 00:15:24,980 Med andra ord, med hjälp av en relativt enkel fråga system vi har i princip en inmatningsruta 255 00:15:24,980 --> 00:15:29,490 med några andra väljare på olika platser. 256 00:15:29,490 --> 00:15:32,010 >> Låt mig zooma ut hit. 257 00:15:32,010 --> 00:15:37,720 Vi har en inmatningsruta med några olika metadata val, 258 00:15:37,720 --> 00:15:40,610 och vi har Y-axeln och X markeringar axeln. 259 00:15:40,610 --> 00:15:42,830 Vi behöver faktiskt inte så många områden, 260 00:15:42,830 --> 00:15:46,210 och vi kan se mycket lätt vi kan fråga någon form av API 261 00:15:46,210 --> 00:15:48,510 och få data tillbaka och sedan lägga det i detta diagram, 262 00:15:48,510 --> 00:15:52,080 som sedan kommer att visa den i ett användbart sätt. 263 00:15:52,080 --> 00:15:54,970 För att titta på ett annat exempel som kan vara lite mer bekant för er 264 00:15:54,970 --> 00:15:56,510 vi kommer att vända sig till Facebook. 265 00:15:56,510 --> 00:15:59,440 Facebooks API kallas Facebook-Diagram, 266 00:15:59,440 --> 00:16:04,390 och i princip vad det betyder är Facebook ser sig själv som denna massiva databas 267 00:16:04,390 --> 00:16:08,000 av massor av olika delar som alla har vissa relationer till varandra. 268 00:16:08,000 --> 00:16:11,070 Med andra ord, jag är en användare på Facebook, så jag har en profil, 269 00:16:11,070 --> 00:16:14,310 och jag har också vissa vänner och var och en av dem har en profil, 270 00:16:14,310 --> 00:16:17,580 och var och en av mina vänner har en vägg som har olika synpunkter på det, 271 00:16:17,580 --> 00:16:20,800 och var och en av dessa kommentarer har gillar och allt sånt. 272 00:16:20,800 --> 00:16:23,100 >> Det finns massor av olika delar till Facebook. 273 00:16:23,100 --> 00:16:26,670 Det är en enormt komplex API, och det finns massor du kan göra med den, 274 00:16:26,670 --> 00:16:28,450 men det är faktiskt ganska enkelt att använda. 275 00:16:28,450 --> 00:16:33,680 Jag ska börja med att gå till graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 som är min unika kontonamn och ditt kontonamn kommer antingen att vara 277 00:16:38,430 --> 00:16:43,710 någon form av ord om du har valt det, eller det kan bara vara en sträng av siffror. 278 00:16:43,710 --> 00:16:46,360 Vad vi får tillbaka är ganska grundläggande information. 279 00:16:46,360 --> 00:16:50,460 Vi ser att jag har ett förnamn, vilket är Billy, ett efternamn, vilket är Janitsch. 280 00:16:50,460 --> 00:16:53,370 Det finns ett unikt Facebook-ID som jag har. 281 00:16:53,370 --> 00:16:57,920 Du kan se att jag är man och jag har min språkinställning 282 00:16:57,920 --> 00:17:01,290 till brittisk engelska. 283 00:17:01,290 --> 00:17:03,490 Med andra ord, vi ser mycket grundläggande information här. 284 00:17:03,490 --> 00:17:08,670 Det är inte för mycket, men det ger oss en uppfattning om vad som finns där. 285 00:17:08,670 --> 00:17:10,849 >> Vi kan göra samma sak till David Malan, till exempel. 286 00:17:10,849 --> 00:17:13,599 Jag tror att hans namn är dmalan. 287 00:17:13,599 --> 00:17:16,369 Vi ser David Malan har ett unikt ID. 288 00:17:16,369 --> 00:17:19,300 Han har ett namn, förnamn, mellannamn, efternamn. 289 00:17:19,300 --> 00:17:24,210 Vi ser också att han är man och har sin språk inställd på amerikansk engelska. 290 00:17:24,210 --> 00:17:26,869 Med andra ord, vi ser ganska grundläggande information här. 291 00:17:26,869 --> 00:17:28,860 Nu, vad händer om vi försöker kolla något annat? 292 00:17:28,860 --> 00:17:33,060 Låt oss säga att jag är intresserad av vad David Malan har gillat på Facebook. 293 00:17:33,060 --> 00:17:36,860 Jag kan göra / gillar. Nu har vi stött på ett problem. 294 00:17:36,860 --> 00:17:39,280 Vi har någon sorts fel som säger en åtkomsttoken 295 00:17:39,280 --> 00:17:41,660 krävs för att begära denna resurs. 296 00:17:41,660 --> 00:17:44,730 Men om du tänker på det, gör som faktiskt rimligt eftersom det skulle vara konstigt 297 00:17:44,730 --> 00:17:47,830 om du kunde komma åt varje enskild del av Facebooks databas 298 00:17:47,830 --> 00:17:50,170 bara från någon form av enkel API, eller hur? 299 00:17:50,170 --> 00:17:56,040 Med andra ord, förmodligen din information inte kan nås av alla som vill det. 300 00:17:56,040 --> 00:17:58,330 >> Detta fel är just vad det betyder. 301 00:17:58,330 --> 00:18:03,630 Vissa API kräver vissa behörigheter för att komma åt sina data. 302 00:18:03,630 --> 00:18:06,940 Och ännu mer avancerad API, som Facebook en, 303 00:18:06,940 --> 00:18:09,840 kräver vissa behörigheter för att göra vissa saker. 304 00:18:09,840 --> 00:18:12,650 Jag kan se denna grundläggande information om David Malan. 305 00:18:12,650 --> 00:18:15,950 Jag kan se att han är man och att han bor i USA, 306 00:18:15,950 --> 00:18:19,270 men jag kan inte riktigt se något förbi det. 307 00:18:19,270 --> 00:18:23,050 För att komma runt detta för nu har Facebook här trevligt verktyg 308 00:18:23,050 --> 00:18:27,690 vilket är grafen API Explorer och tanken på det är att du kan sortera på 309 00:18:27,690 --> 00:18:31,880 göra upp behörigheter för dig baserat på ditt eget konto 310 00:18:31,880 --> 00:18:35,680 och sedan visa saker som specifikt kontot kan visa. 311 00:18:35,680 --> 00:18:45,120 Till exempel, om jag gör graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 hoppsan, jag antar att jag måste förlänga min token här. 313 00:18:53,510 --> 00:18:55,950 Okej. 314 00:18:55,950 --> 00:19:01,740 Om jag gör det igen, bra, nu ser jag att jag får detta objekt tillbaka 315 00:19:01,740 --> 00:19:06,300 som säger att jag gillar poolen nudlar, som är i kategorin spel och leksaker. 316 00:19:06,300 --> 00:19:08,620 Jag gillar valrossar, som är i kategorin djur. 317 00:19:08,620 --> 00:19:10,180 Detta är min faktiska Facebook gillar. 318 00:19:10,180 --> 00:19:13,280 De är typ av pinsamt. 319 00:19:13,280 --> 00:19:16,090 >> Men vi kan se dessa uppgifter är allt tillbaka i JSON. 320 00:19:16,090 --> 00:19:18,160 Det är ganska lättläst. 321 00:19:18,160 --> 00:19:20,970 Med andra ord har vi denna mappning av data till någon sorts en matris, 322 00:19:20,970 --> 00:19:25,220 och varje del av denna array är en HashMap som kartlägger 323 00:19:25,220 --> 00:19:28,530 namnet på en liknande och den kategori av en liknande. 324 00:19:28,530 --> 00:19:31,240 Varje liknande har ett unikt ID. 325 00:19:31,240 --> 00:19:34,510 Det finns alla möjliga olika saker av data som vi kan få, 326 00:19:34,510 --> 00:19:37,980 och om du är intresserad av att använda Facebook API för en CS50 lärdomsprov 327 00:19:37,980 --> 00:19:40,720 eller för något sådant är det faktiskt ganska genomförbart. 328 00:19:40,720 --> 00:19:44,260 I grund och botten hur du får runt autentisering sak är Facebook 329 00:19:44,260 --> 00:19:48,030 använder ett system som kallas OAuth, eller Open Authentication, 330 00:19:48,030 --> 00:19:52,870 och jag vill inte komma in i det nu eftersom OAuth eller annan typ 331 00:19:52,870 --> 00:19:56,060 av autentisering tenderar att variera mycket mellan olika API: er, 332 00:19:56,060 --> 00:19:58,320 så jag kunde tillbringa en lång tid att gå igenom var och en, 333 00:19:58,320 --> 00:20:01,170 men de är faktiskt ganska självförklarande. 334 00:20:01,170 --> 00:20:04,050 >> Om du Google Facebook API är det mycket läsvärd. 335 00:20:04,050 --> 00:20:06,670 Det finns en hel spec. 336 00:20:06,670 --> 00:20:10,210 Till exempel är det i dokumentationen för Facebook API, 337 00:20:10,210 --> 00:20:14,170 och du kan se jag är på användarens sida, så jag kan lära dig allt om olika typer av saker 338 00:20:14,170 --> 00:20:17,170 som finns att komma så långt som data 339 00:20:17,170 --> 00:20:21,550 och även de olika behörigheter som jag behöver för att komma åt dem. 340 00:20:21,550 --> 00:20:25,470 Som vi såg, vi behöver inte behörighet att komma åt namn eller kön, 341 00:20:25,470 --> 00:20:29,380 men utöver det vi behöver behörighet för det mesta. 342 00:20:29,380 --> 00:20:33,040 Den här sidan, eller snarare, denna webbplats kommer också att berätta hur man får 343 00:20:33,040 --> 00:20:35,640 ett tecken för att kunna autentisera dig själv. 344 00:20:35,640 --> 00:20:39,290 De flesta autentisering system använder någon form av token 345 00:20:39,290 --> 00:20:42,880 där du får denna unika värde, vilket är en riktigt lång och slumpmässig sträng, 346 00:20:42,880 --> 00:20:46,240 och på så sätt kan de associera begäran att du gör med dig. 347 00:20:46,240 --> 00:20:50,560 Med andra ord, de vet att du inte gör något misstänkt med sina uppgifter. 348 00:20:50,560 --> 00:20:53,340 De vet exakt vad du får. 349 00:20:53,340 --> 00:20:56,180 De vet också att du har behörighet att visa denna information. 350 00:20:56,180 --> 00:20:59,110 >> Om du har gjort en Facebook-app och din app har vissa användare, 351 00:20:59,110 --> 00:21:03,380 och vilka användare har låtit att appen få tillgång till vissa delar av sin profil, 352 00:21:03,380 --> 00:21:07,790 sedan vad API-nyckel eller token som att APP använder 353 00:21:07,790 --> 00:21:11,090 kommer att kunna komma åt data för dessa användare. 354 00:21:11,090 --> 00:21:13,780 Detta kanske låter komplicerat, men det är inte så illa, 355 00:21:13,780 --> 00:21:16,810 och om du vill använda Facebook skulle jag starkt rekommendera att du 356 00:21:16,810 --> 00:21:18,990 överväga att spela runt med sin API. 357 00:21:18,990 --> 00:21:21,610 Det är väldigt cool, och du kan göra en massa olika saker med det. 358 00:21:21,610 --> 00:21:24,880 Om användaren ger dig dessa behörigheter kan du även gå tillbaka till API 359 00:21:24,880 --> 00:21:28,820 och säga att jag vill verkligen skriva den här användarens vägg eller jag vill ha dem skicka ett foto, 360 00:21:28,820 --> 00:21:32,390 och det är därför på nyhetsflöde du ibland få dessa irriterande saker 361 00:21:32,390 --> 00:21:37,840 ordstävet din vän har sett denna video på något slags konstig plats eller något liknande. 362 00:21:37,840 --> 00:21:43,120 Det beror att APP har beviljats ​​tillträde till på den personens vägg. 363 00:21:43,120 --> 00:21:48,350 Tanken övergripande är Facebook API ganska komplicerat men också riktigt bra. 364 00:21:48,350 --> 00:21:53,220 Definitivt värt att checka ut om du fortfarande letar efter en sista projekt. 365 00:21:53,220 --> 00:21:57,930 >> En annan svit av API: er som jag ska gå över är CS50 API: er. 366 00:21:57,930 --> 00:22:00,070 Låt mig zooma in här. 367 00:22:00,070 --> 00:22:03,390 CS50 har satt faktiskt ihop en hel serie av API 368 00:22:03,390 --> 00:22:07,080 som du kan använda för en sista projekt eller bara för något som du gör. 369 00:22:07,080 --> 00:22:12,830 Och de är oftast Harvard relaterade, och de varierar från HUDS menyn, 370 00:22:12,830 --> 00:22:17,780 till exempel denna Harvard Events API, vilket låter dig visa en lista över 371 00:22:17,780 --> 00:22:21,290 olika händelser som pågår vid Harvard och sånt. 372 00:22:21,290 --> 00:22:24,510 Och så att vi kan klicka på någon av dessa och få en spec för det, 373 00:22:24,510 --> 00:22:28,090 som du kommer att kunna hitta för alla API, och tanken är 374 00:22:28,090 --> 00:22:33,920 Det låter dig veta, A, särskilt vad begära från API och hur du begär det. 375 00:22:33,920 --> 00:22:37,370 Med andra ord, om jag vill att alla händelser som sker i morgon 376 00:22:37,370 --> 00:22:42,550 då måste jag naturligtvis ge det den dagen som jag vill ha i ett visst format, 377 00:22:42,550 --> 00:22:46,030 och B, kommer det att berätta exakt vad det kommer att ge tillbaka till mig. 378 00:22:46,030 --> 00:22:48,590 Det kommer att säga att jag kommer att återvända dig denna JSON objekt, 379 00:22:48,590 --> 00:22:50,960 eller som ni ser finns det olika format. 380 00:22:50,960 --> 00:22:54,050 >> Du kan också returnera data som en CSV, till exempel. 381 00:22:54,050 --> 00:22:57,620 Men du vet exakt hur dessa data kommer att se när du får den tillbaka 382 00:22:57,620 --> 00:23:00,610 så du kan förvänta dig att göra vissa saker med det. 383 00:23:00,610 --> 00:23:07,240 Vi kan rulla ner och se, till exempel om vi vill söka API 384 00:23:07,240 --> 00:23:11,500 att få en kalender, då kan vi använda denna webbadress 385 00:23:11,500 --> 00:23:16,480 och ge den vissa parametrar som kommer att vara de data som vi vill exakt. 386 00:23:16,480 --> 00:23:19,540 Och på samma sätt, om vi vill tillbaka data i ett visst format, 387 00:23:19,540 --> 00:23:23,790 då kan vi be den att mata ut data i en CSV, 388 00:23:23,790 --> 00:23:27,700 och det är bara en annan parameter som vi passerar till API. 389 00:23:27,700 --> 00:23:29,210 Massor av coola saker att göra där. 390 00:23:29,210 --> 00:23:32,550 Jag skulle definitivt rekommendera checkar ut CS50 API. 391 00:23:32,550 --> 00:23:36,000 >> Jag ska titta på detta Harvard Food API i synnerhet för lite. 392 00:23:36,000 --> 00:23:39,870 En sak jag har faktiskt utformats är detta Harvard Noms webbplats, 393 00:23:39,870 --> 00:23:44,930 som använder CS50 Food API för att hämta HUDS menyn för dagen. 394 00:23:44,930 --> 00:23:50,400 Och för människor förlängning skolan är HUDS matsalen tjänsten vid Harvard. 395 00:23:50,400 --> 00:23:55,130 Vad du får är den här sidan som innehåller alla måltider för dagen, så vi ser lunch. 396 00:23:55,130 --> 00:23:58,130 Vi har några olika kategorier. Vi har bönor och fullkorn station. 397 00:23:58,130 --> 00:24:00,340 Vi har brunt ris stationen. 398 00:24:00,340 --> 00:24:03,360 Vi ser för brunch vi dessa få livsmedel. 399 00:24:03,360 --> 00:24:07,030 Om vi ​​klickar på dem, så får vi information om näringsvärdet. 400 00:24:07,030 --> 00:24:12,240 Du ser detta är näringsinformation för grapefrukt, i fall du undrar. 401 00:24:12,240 --> 00:24:14,870 Och så igen, vi kommer att blicka in i bakre änden hit lite 402 00:24:14,870 --> 00:24:18,530 och se exakt vad detta gör för att få dessa data. 403 00:24:18,530 --> 00:24:21,710 Och det visar sig att faktiskt inte vara mycket komplicerad på alla. 404 00:24:21,710 --> 00:24:28,720 Denna fil ser lite rörigt, men tänk på att detta hanterar hela webbplatsen, 405 00:24:28,720 --> 00:24:34,130 och om jag bläddra nedåt ser vi denna förändring uppgifter funktion. 406 00:24:34,130 --> 00:24:36,630 >> Nu, bara för att vara tydlig, det är skrivet i CoffeeScript, 407 00:24:36,630 --> 00:24:39,570 vilket är ett språk som du förmodligen inte har sett förut. 408 00:24:39,570 --> 00:24:44,810 Men det är ganska läsbar, så jag ska gå igenom det som om det var pseudokod. 409 00:24:44,810 --> 00:24:49,080 Ändra datum är en funktion som kommer att ta i detta datum värde, 410 00:24:49,080 --> 00:24:51,740 och det kommer också att ta i en första, som vi inte bryr oss om så mycket. 411 00:24:51,740 --> 00:24:54,110 Men det viktiga är att den har detta datum, 412 00:24:54,110 --> 00:25:00,080 och denna dag är den dag som vi vill be alla livsmedel för. 413 00:25:00,080 --> 00:25:04,030 Och så ser vi lite syntax här, 414 00:25:04,030 --> 00:25:09,000 som i princip är att analysera detta datum till ett läsbart format. 415 00:25:09,000 --> 00:25:11,920 Med andra ord kräver API datumet i ett visst format. 416 00:25:11,920 --> 00:25:17,390 Du kan inte bara säga 16 november 2012 AD. 417 00:25:17,390 --> 00:25:20,320 Det kommer inte att veta vad man ska göra med det. Det vill datumet i ett visst format. 418 00:25:20,320 --> 00:25:23,230 Allt vi gör här är att ge exakt det formatet, 419 00:25:23,230 --> 00:25:26,520 vilket är ett år värde och sedan ett bindestreck, en månad värde, 420 00:25:26,520 --> 00:25:29,420 annan bindestreck och datum värdet. 421 00:25:29,420 --> 00:25:34,910 Och vi säger också att vi vill att data ska matas in JSON. 422 00:25:34,910 --> 00:25:37,560 >> Nu gör vi det här AJAX begäran och som jag nämnde tidigare, 423 00:25:37,560 --> 00:25:41,680 jQuery har denna super bra AJAX funktion som allt du behöver göra är att ange 424 00:25:41,680 --> 00:25:45,780 några parametrar ner här, och det kommer att ge dig tillbaka precis vad du vill. 425 00:25:45,780 --> 00:25:50,490 Vi säger det att webbadressen vi vill att det ska gå till är detta CS50 Mat API, 426 00:25:50,490 --> 00:25:52,270 som vi fick från spec. 427 00:25:52,270 --> 00:25:56,730 Vi säger att vi vill att data i JSON och att 428 00:25:56,730 --> 00:25:59,490 vi kommer att ge dessa data som vi har definierat här. 429 00:25:59,490 --> 00:26:02,670 Detta är den dag vi vill att föda för. 430 00:26:02,670 --> 00:26:07,790 Och sedan allt vi behöver göra är att definiera någon form av framgång funktion, 431 00:26:07,790 --> 00:26:11,980 vilket egentligen är vad som händer när API återvänder dessa uppgifter. 432 00:26:11,980 --> 00:26:15,490 Med andra ord har vi förpackat upp alla de parametrar som vi vill, 433 00:26:15,490 --> 00:26:20,530 som i detta fall är den dag som vi vill ha det och det faktum att vi vill ha det i JSON, 434 00:26:20,530 --> 00:26:23,840 och vi skickade det till API, så nu API säger, okej, 435 00:26:23,840 --> 00:26:26,350 Här är dina data, fick jag det tillbaka till dig. 436 00:26:26,350 --> 00:26:29,930 Vi har framgång funktion, vilket innebär eftersom API 437 00:26:29,930 --> 00:26:32,230 framgångsrikt returnerar vissa data, vad gör vi med den? 438 00:26:32,230 --> 00:26:35,980 >> Och det visar sig att allt vi gör är att ringa den här uppdateringen menyfunktionen 439 00:26:35,980 --> 00:26:42,680 med vad API har återvänt, så vi kan söka efter den 440 00:26:42,680 --> 00:26:47,970 och se att allt vi gör är att använda en massa ny syntax här 441 00:26:47,970 --> 00:26:52,220 att uppdatera HTML och sätt dessa nya data. 442 00:26:52,220 --> 00:26:56,580 Vad detta gör är att vi har dessa pilar på båda sidor, och vi kan klicka, 443 00:26:56,580 --> 00:27:01,060 och nu är vi tittar på data för nästa dag och igen för nästa dag, 444 00:27:01,060 --> 00:27:04,820 och varje gång det uppdateras denna dag värde och sökfunktionen API, 445 00:27:04,820 --> 00:27:07,510 få tillbaka en del data och sätta in den i webbplatsen. 446 00:27:07,510 --> 00:27:10,590 Återigen kan du se, super, super bra. 447 00:27:10,590 --> 00:27:14,410 Denna app tog mig ett par timmar att hacka ihop, 448 00:27:14,410 --> 00:27:20,140 och jag har lite mer erfarenhet, naturligtvis, men din CS50 slutgiltiga projektet 449 00:27:20,140 --> 00:27:22,870 kan se ut mycket som detta. 450 00:27:22,870 --> 00:27:29,540 >> API är super kraftfull för hur mycket arbete som de tar. 451 00:27:29,540 --> 00:27:32,800 Det sista jag kommer att gå över är några fler API brett. 452 00:27:32,800 --> 00:27:35,480 Jag kommer inte komma så långt in dem så långt som vad de gör specifikt 453 00:27:35,480 --> 00:27:38,740 men jag ska ge dig en uppfattning om vad som finns där ute. 454 00:27:38,740 --> 00:27:42,700 2 riktigt användbara sådana, om du är intresserad av dataanalys eller visualisering 455 00:27:42,700 --> 00:27:45,960 eller något liknande, är Freebase och Wikipedia. 456 00:27:45,960 --> 00:27:49,800 Wikipedia-förmodligen vet, är alla en fri encyklopedi, 457 00:27:49,800 --> 00:27:53,230 och det har faktiskt ett API, så om du vill, till exempel, 458 00:27:53,230 --> 00:27:56,250 få alla texter och artiklar för bläckfisk 459 00:27:56,250 --> 00:27:58,030 Du kan enkelt göra det. 460 00:27:58,030 --> 00:28:02,300 Säg bara hej, Wikipedia API, jag vill de data som returneras som denna, 461 00:28:02,300 --> 00:28:07,010 och jag skulle vilja det i detta format, och artikeln jag vill är bläckfisk, 462 00:28:07,010 --> 00:28:09,820 och mycket snabbt det kommer att ge dig tillbaka den informationen. 463 00:28:09,820 --> 00:28:12,230 Det kan vara riktigt användbart om du vill göra någon form av plats 464 00:28:12,230 --> 00:28:16,200 det är en bättre visare för Wikipedia eller något liknande. 465 00:28:16,200 --> 00:28:21,350 >> Freebase är ganska likartad, även om det är lite svårare när det gäller API. 466 00:28:21,350 --> 00:28:24,390 Freebase är som Wikipedia att det är en encyklopedi 467 00:28:24,390 --> 00:28:29,050 som innehåller massor av olika data om alla möjliga olika ämnen, 468 00:28:29,050 --> 00:28:33,150 men det är lagrat i en relationsdatabas, som skiljer sig något från Wikipedia. 469 00:28:33,150 --> 00:28:36,410 Wikipedia har sina artiklar och artiklar kopplade till andra artiklar, 470 00:28:36,410 --> 00:28:38,860 men för det mesta, om du vill att data för bläckfisk, 471 00:28:38,860 --> 00:28:41,990 du går till bläckfisk artikeln, få att data, och du har ett gäng text 472 00:28:41,990 --> 00:28:43,830 om bläckfiskar, så det är bra. 473 00:28:43,830 --> 00:28:46,870 Freebase arbetar i en något mer komplicerat sätt genom att 474 00:28:46,870 --> 00:28:48,930 allt är relaterade till varandra. 475 00:28:48,930 --> 00:28:52,620 Med andra ord, om vi söker efter bläckfisk 476 00:28:52,620 --> 00:28:54,940 då den har en massa kategorier som är förknippade med den. 477 00:28:54,940 --> 00:28:57,920 >> Till exempel är det ett djur, lever den under vattnet, 478 00:28:57,920 --> 00:28:59,710 den har en viss kroppstemperatur. 479 00:28:59,710 --> 00:29:01,210 Jag vet inte. 480 00:29:01,210 --> 00:29:04,230 Och alla dessa kategorier finns länkar till andra platser där du kan gå 481 00:29:04,230 --> 00:29:06,640 att se saker med samma kategori. 482 00:29:06,640 --> 00:29:13,450 Med andra ord skulle bläckfisk datauppsättningen innehålla en länk till de data som för alla djur, 483 00:29:13,450 --> 00:29:16,790 och som skulle låta mig flytta runt i databasen verkligen snabbt. 484 00:29:16,790 --> 00:29:21,740 Detta kan vara mycket användbart om du gör något som jämförelser. 485 00:29:21,740 --> 00:29:24,490 Med andra ord, givet en viss sak, vill du se 486 00:29:24,490 --> 00:29:27,890 Vad det rör och se vad det inte rör. 487 00:29:27,890 --> 00:29:30,700 Sådant. Det kan vara användbart i ett antal olika sätt. 488 00:29:30,700 --> 00:29:34,250 Om du letar efter mer av en utmaning och att kunna göra några mer komplexa saker 489 00:29:34,250 --> 00:29:38,740 Jag skulle överväga att ta en titt på Freebase API. 490 00:29:38,740 --> 00:29:44,670 Men i stort sett är Wikipedia en mycket enkel plats att gå så långt som att få information. 491 00:29:44,670 --> 00:29:48,340 En annan plats som jag ska titta på är Last.fm, och jag faktiskt kommer att gå till webbplatsen 492 00:29:48,340 --> 00:29:53,800 om vissa människor inte är bekant, men Last.fm är i grunden en musik 493 00:29:53,800 --> 00:29:57,220 smaker och rekommendationer hemsida. 494 00:29:57,220 --> 00:29:59,000 Du kan göra ett konto. 495 00:29:59,000 --> 00:30:04,250 Du kan börja ladda upp musik från musikspelaren 496 00:30:04,250 --> 00:30:08,020 till webbplatsen, och i princip kommer att börja ge dig musikrekommendationer 497 00:30:08,020 --> 00:30:10,030 baserat på vad du lyssnar på. 498 00:30:10,030 --> 00:30:14,270 >> Till exempel, om du går till din profilsida-Detta är mitt- 499 00:30:14,270 --> 00:30:18,180 du kan se att du har en lista över de senast lyssnade på spår. 500 00:30:18,180 --> 00:30:22,550 Du kan se den totala favoritartister, alla sånt, 501 00:30:22,550 --> 00:30:25,280 och igen, det finns en stor API bakom Last.fm, 502 00:30:25,280 --> 00:30:29,360  och du kan använda den för att göra massor av riktigt coola saker. 503 00:30:29,360 --> 00:30:38,870 Till exempel, jag ska gå till en väns sida som har denna Last.fm Tools hemsida. 504 00:30:38,870 --> 00:30:42,380 Detta är faktiskt en annan plattform som är byggd på Last.fm API, 505 00:30:42,380 --> 00:30:45,420 och det gör ett antal ganska intressanta saker. 506 00:30:45,420 --> 00:30:50,260 Om jag loggar in med mitt användarnamn, till exempel, 507 00:30:50,260 --> 00:30:53,110 Jag kan be den att generera en tagg moln, till exempel, 508 00:30:53,110 --> 00:30:56,480 och vad det kommer att göra är att ge mig tillbaka en bild av 509 00:30:56,480 --> 00:30:59,850 alla olika genrer och sånt som jag gillar att lyssna på. 510 00:30:59,850 --> 00:31:01,410 Hur gör den det? 511 00:31:01,410 --> 00:31:05,670 Mycket princip det säger till Last.fm API här är den här användaren. 512 00:31:05,670 --> 00:31:10,710 Jag skulle vilja veta genren varje låt som de någonsin har lyssnat på, 513 00:31:10,710 --> 00:31:15,130 och du kan göra det genom att göra en ganska enkel AJAX samtal till Last.fm API. 514 00:31:15,130 --> 00:31:18,990 Du får tillbaka en stor lista, och sedan uppenbarligen vissa andra saker som görs 515 00:31:18,990 --> 00:31:22,280 att förvandla det till ett ord moln, men du kan se hela 516 00:31:22,280 --> 00:31:25,850 det är väldigt lätt att komma åt och mycket lätt att använda. 517 00:31:25,850 --> 00:31:30,750 Riktigt trevligt för ett antal saker. 518 00:31:30,750 --> 00:31:35,940 >> Jag tycker det är ungefär allt jag kommer att säga totalt. 519 00:31:35,940 --> 00:31:39,040 En sista sak jag ska nämna om API: er i allmänhet är att 520 00:31:39,040 --> 00:31:41,840 du ibland stöter på något som kallas hastighetsbegränsande, 521 00:31:41,840 --> 00:31:44,940 och idén om hastighetsbegränsande är du inte vill missbruka API: er. 522 00:31:44,940 --> 00:31:48,130 Med andra ord, det är verkligen trevligt att många av dessa webbplatser har API: er 523 00:31:48,130 --> 00:31:51,070 som du kan gå till och använda gratis. 524 00:31:51,070 --> 00:31:54,460 Men om du gör miljoner eller miljarder förfrågningar per dag, 525 00:31:54,460 --> 00:31:57,610 till exempel om du har fastnat i en oändlig loop som oändligt är sökfunktionen 526 00:31:57,610 --> 00:32:00,680 någon form av API och få tillbaka en stor mängd data, 527 00:32:00,680 --> 00:32:04,570 uppenbarligen det är inte bra, så vad många API göra är att ha den här hastighetsbegränsande funktionen 528 00:32:04,570 --> 00:32:09,970 som säger att du bara kan göra 1.000 förfrågningar per dag per IP-adress eller något liknande. 529 00:32:09,970 --> 00:32:12,540 Och om du gör en hel del tester och sånt, 530 00:32:12,540 --> 00:32:14,890 du ibland stöter på det, och plötsligt stängs av dig 531 00:32:14,890 --> 00:32:18,280 och säga nej, jag ger dig inte mer data. 532 00:32:18,280 --> 00:32:20,000 >> Vad du vill göra är att spela efter reglerna. 533 00:32:20,000 --> 00:32:22,950 Du vill vara säker på att du läser API spec noggrant. 534 00:32:22,950 --> 00:32:26,330 Om det har vissa regler knutna till den, som du bara kan göra X förfrågningar per dag 535 00:32:26,330 --> 00:32:30,000 eller så kan du bara komma åt en del av databasen ett visst antal gånger 536 00:32:30,000 --> 00:32:32,900 eller något liknande som du vill vara säker på att du håller sig till det. 537 00:32:32,900 --> 00:32:38,360 Så länge du spelar i dessa regler kommer du förmodligen ha en riktigt trevlig stund med API: er. 538 00:32:38,360 --> 00:32:42,030 Din totala takeaway är API är riktigt, riktigt bra. 539 00:32:42,030 --> 00:32:45,610 >> Det finns ett API för nästan alla stora webbtjänst där ute. 540 00:32:45,610 --> 00:32:50,700 Ganska mycket någon del av Googles verktyg Suite, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 Gmail, Google Kalender, alla dessa saker har API: er. 542 00:32:54,390 --> 00:32:58,280 Du kan använda dem till både hämta data från servern och skicka data till servern. 543 00:32:58,280 --> 00:33:00,870 Med andra ord, om du ville göra en kalender app som kan uppdatera 544 00:33:00,870 --> 00:33:04,190 någons Google Kalender, det finns ett API för det. 545 00:33:04,190 --> 00:33:07,810 Om du vill göra något som kommer att tala om var 546 00:33:07,810 --> 00:33:12,530 platsen för en viss adress är att du kan använda Google Maps API för det. 547 00:33:12,530 --> 00:33:15,860 API är fantastiskt användbara, och de är överallt. 548 00:33:15,860 --> 00:33:18,700 Om du är intresserad av någon form av idé, 549 00:33:18,700 --> 00:33:22,170 det finns förmodligen en relaterad API som du kan använda för att få en massa uppgifter 550 00:33:22,170 --> 00:33:25,060 mycket snabbt och mycket enkelt. 551 00:33:25,060 --> 00:33:28,140 >> Om du fortfarande letar efter ett projekt eller om du bara vill leka 552 00:33:28,140 --> 00:33:31,820 med något i allmänhet, API är definitivt värt att göra. 553 00:33:31,820 --> 00:33:37,200 Tack, och jag är glad att besvara alla frågor som ni kan ha. 554 00:33:37,200 --> 00:33:44,900 Okej, tack så mycket. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]