1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Seminar] [A programmeringsruden Introduktion til API'er] 2 00:00:02,480 --> 00:00:04,059 [Billy Janitsch] [Harvard University] [Tommy MacWilliam] 3 00:00:04,059 --> 00:00:08,220 [Dette er CS50.] [CS50.TV] 4 00:00:08,220 --> 00:00:12,100 >> Hej alle, jeg er Billy, og i dag vil jeg tale om API'er, 5 00:00:12,100 --> 00:00:15,220 eller application programming interfaces, 6 00:00:15,220 --> 00:00:20,040 specifikt i forbindelse med CS50 afsluttende projekter og den slags. 7 00:00:20,040 --> 00:00:22,490 I almindelighed, hvad der er en API? 8 00:00:22,490 --> 00:00:25,530 I meget grove træk, er det en slags midt mand, der giver 2 stykker 9 00:00:25,530 --> 00:00:28,610 af software til at kommunikere med hinanden. 10 00:00:28,610 --> 00:00:32,530 Det er en slags meget bred definition, og er det ikke relevant for hvad vi kigger på. 11 00:00:32,530 --> 00:00:35,450 Hvad vi virkelig ønsker, er en slags nyttige middelvej 12 00:00:35,450 --> 00:00:40,570 at kommunikere med en slags database sted. 13 00:00:40,570 --> 00:00:43,310 >> Her er et diagram, og dybest set ideen er, at 14 00:00:43,310 --> 00:00:46,790 Vi er en ansøgning, og vi ønsker at få data fra en database, 15 00:00:46,790 --> 00:00:49,570 men vi ønsker ikke at søge i databasen direkte. 16 00:00:49,570 --> 00:00:52,710 I stedet ønsker vi at gå gennem denne slags midt mand, API. 17 00:00:52,710 --> 00:00:55,440 Ideen bag dette er tallene 2 og 3 i diagrammet 18 00:00:55,440 --> 00:00:57,750 begge vil være meget kompliceret og rodet. 19 00:00:57,750 --> 00:00:59,960 Med andre ord, når API forespørge databasen 20 00:00:59,960 --> 00:01:03,300 det er sandsynligvis skal bruge SQL-tabeller og alle den slags ting, 21 00:01:03,300 --> 00:01:05,489 og vi har lært en smule om det i CS50, men samlet, 22 00:01:05,489 --> 00:01:07,590 De har bemærket, at det er lidt af en smerte. 23 00:01:07,590 --> 00:01:10,590 Det får meget, meget kompliceret og rodet, især når du laver 24 00:01:10,590 --> 00:01:12,530 komplekse forespørgsler og den slags ting. 25 00:01:12,530 --> 00:01:15,960 >> Hvad vi virkelig ønsker, er en form for nyttig og enkel måde 26 00:01:15,960 --> 00:01:19,780 at få disse data, og det er ideen bag tallene 1 og 4 på kortet. 27 00:01:19,780 --> 00:01:23,600 Med andre ord ønsker vi en meget simpel måde at fortælle API hvad man kan få for os 28 00:01:23,600 --> 00:01:27,760 og en meget simpel måde at få disse data tilbage. 29 00:01:27,760 --> 00:01:33,020 Der er én vigtigste måde, at data, der normalt bliver sendt og modtaget, 30 00:01:33,020 --> 00:01:36,490 der er JSON eller JavaScript Object Notation. 31 00:01:36,490 --> 00:01:40,370 Det kan variere en lille smule så langt som, hvordan du sender anmodningen til API. 32 00:01:40,370 --> 00:01:43,210 Med andre ord, hvis du ønsker nogle vis mængde data 33 00:01:43,210 --> 00:01:46,670 hvordan du fortælle API for at få disse data kan variere en lille smule. 34 00:01:46,670 --> 00:01:49,210 Normalt er det består i at stille en slags net anmodning. 35 00:01:49,210 --> 00:01:53,130 Med andre ord, at få adgang til nogle slags URL kommer til at fortælle API 36 00:01:53,130 --> 00:01:56,190 præcis, hvad du vil, men de data, er næsten altid sendes tilbage, 37 00:01:56,190 --> 00:01:59,530 med andre ord. nummer 4 i JSON 38 00:01:59,530 --> 00:02:01,030 >> Hvad er JSON præcist? 39 00:02:01,030 --> 00:02:03,030 Som jeg sagde, JavaScript Object Notation. 40 00:02:03,030 --> 00:02:07,090 Det er dybest set den universelle standard for at sende og modtage data. 41 00:02:07,090 --> 00:02:11,410 Ideen er, at du har disse 3 kategorier af ting. 42 00:02:11,410 --> 00:02:13,540 Du har arrays, hashmaps og primitiver. 43 00:02:13,540 --> 00:02:16,580 Arrays og hashmaps du har kigget på en lille smule i CS50, 44 00:02:16,580 --> 00:02:19,870 men du har slags fået en meget snæver forstand af, hvad de er. 45 00:02:19,870 --> 00:02:22,780 Med andre ord, du med arrays vide, at de er skrive bundet, 46 00:02:22,780 --> 00:02:26,560 så du kun har én slags af typen, der går gennem hele array. 47 00:02:26,560 --> 00:02:29,310 JSON er meget mere lempelig med den slags ting. 48 00:02:29,310 --> 00:02:33,590 Dybest set er idéen dig konstruere dette objekt, 49 00:02:33,590 --> 00:02:36,270 som kan være sammensat af ethvert af disse tre ting 50 00:02:36,270 --> 00:02:39,470 og kan være sammensat af flere dem af dem, og de kan indlejres. 51 00:02:39,470 --> 00:02:42,110 >> Her er slags et eksempel på JSON, 52 00:02:42,110 --> 00:02:47,910 der er disse krøllede parenteser her repræsentere din HashMap, 53 00:02:47,910 --> 00:02:51,400 og en HashMap er dybest set en afbildning af en form for central 54 00:02:51,400 --> 00:02:53,340 til en form for værdi. 55 00:02:53,340 --> 00:02:56,440 Du vil se her, at vi har den egenskaber nøgle, 56 00:02:56,440 --> 00:02:59,600 og det er kortlægning på et array, der er det hele. 57 00:02:59,600 --> 00:03:04,120 Vi ser et andet element i HashMap, som er denne nøgle isAwesome, 58 00:03:04,120 --> 00:03:07,370 som kort til en primitiv værdi af sand, med andre ord, en booleske. 59 00:03:07,370 --> 00:03:09,420 Primitiver kan være strenge. De kan være heltal. 60 00:03:09,420 --> 00:03:11,960 De kan være bools, noget i den retning. 61 00:03:11,960 --> 00:03:18,410 Og du kan se indholdet af denne array, ejendomme peger på har 2 strenge i det, 62 00:03:18,410 --> 00:03:20,050 self-lignende og vidunderlig. 63 00:03:20,050 --> 00:03:27,410 Det er 2 egenskaber JSON, og vi ser, at JSON er awesome. 64 00:03:27,410 --> 00:03:30,060 At se på det lidt nærmere Jeg har tænkt mig at konstruere 65 00:03:30,060 --> 00:03:32,870 et mere komplekst eksempel på JSON her. 66 00:03:32,870 --> 00:03:37,000 >> Lad os starte med et array, for eksempel blot en tom array. 67 00:03:37,000 --> 00:03:39,180 Men det er slags kedeligt, så vi kommer til at fylde det lidt op, 68 00:03:39,180 --> 00:03:43,420 og som jeg sagde, er arrays i JSON skrive bundet, 69 00:03:43,420 --> 00:03:46,400 så vi kunne også have en snor her, som er hi, 70 00:03:46,400 --> 00:03:49,330 og det er et andet element i denne array. 71 00:03:49,330 --> 00:03:53,450 Og på samme måde, kunne vi tilføje en hashmapping her, som kommer til at have et par mappings. 72 00:03:53,450 --> 00:04:00,470 Det kommer til at have en kortlægning fra navn til strengen Billy. 73 00:04:00,470 --> 00:04:04,590 Vi har en kortlægning fra navn til Billy, og vi har en kortlægning af 74 00:04:04,590 --> 00:04:10,860 yndlingsfarve til blå. 75 00:04:10,860 --> 00:04:12,700 Det er dybest set et godt eksempel på JSON. 76 00:04:12,700 --> 00:04:18,160 Det slags kommer i-Ups, har brug for et komma der-alle de forskellige dele af det. 77 00:04:18,160 --> 00:04:21,140 Igen, det er ikke skrive bundet på alle, så du kan have nogen form for typer 78 00:04:21,140 --> 00:04:24,710 inde i noget, du ønsker, og idéen er at det er selv-lignende. 79 00:04:24,710 --> 00:04:28,830 Med andre ord er det her en JSON objekt, som er det hele, 80 00:04:28,830 --> 00:04:33,200 som er netop dette, så du kan få en primitiv være et objekt, 81 00:04:33,200 --> 00:04:35,680 en matrix være en genstand eller en HashMap være et objekt. 82 00:04:35,680 --> 00:04:40,270 >> Som du kan slags se, er JSON virkelig, virkelig nyttige i at det er så alsidigt. 83 00:04:40,270 --> 00:04:45,860 Du kan få eventuelle data, som du kan forestille gemt i JSON. 84 00:04:45,860 --> 00:04:47,900 Det gør det en virkelig rart sprog til brug med API'er 85 00:04:47,900 --> 00:04:50,770 fordi det temmelig meget betyder, at ligegyldigt hvilke data, du vil 86 00:04:50,770 --> 00:04:54,270 der kommer til at være en måde at få den tilbage i JSON. 87 00:04:54,270 --> 00:04:58,600 Et par egenskaber, der gør JSON særlig godt for denne slags ting. 88 00:04:58,600 --> 00:05:02,270 Som du kan se, i forhold til en masse ting, du har arbejdet med i CS50 89 00:05:02,270 --> 00:05:06,040 Det er forholdsvis meget let at læse og også meget let at skrive. 90 00:05:06,040 --> 00:05:09,700 Du kan led det ud, hvis du vil have, som jeg gjorde i dette eksempel, 91 00:05:09,700 --> 00:05:12,990 som giver dig en dejlig, smuk version, som du kan se rigtig godt. 92 00:05:12,990 --> 00:05:17,150 Men i øvrigt er det også let at læse og skrive til en computer. 93 00:05:17,150 --> 00:05:19,870 Med andre ord er det nemt at parse og let at kode, 94 00:05:19,870 --> 00:05:23,820 hvilket betyder, at det er temmelig hurtigt så langt som at læse dataene angår, 95 00:05:23,820 --> 00:05:26,460 og JSON kan genereres virkelig hurtigt. 96 00:05:26,460 --> 00:05:30,300 >> Det er også meget let at få adgang til forskellige dele af JSON og den slags ting. 97 00:05:30,300 --> 00:05:33,320 Det er rart, og desuden er det faktum, at det er selv-lignende, 98 00:05:33,320 --> 00:05:36,090 med andre ord, det faktum, at du kan have JSON i JSON i JSON 99 00:05:36,090 --> 00:05:40,040 er virkelig rart for lagring af data. 100 00:05:40,040 --> 00:05:45,490 En anden del, der generelt er virkelig nyttige i at arbejde med API'er er jQuery. 101 00:05:45,490 --> 00:05:49,290 Du har lært en lille smule af JavaScript, som er en pæn måde 102 00:05:49,290 --> 00:05:53,710 at manipulere HTML og CSS i et website. 103 00:05:53,710 --> 00:05:57,190 Men det kan slags være en smerte at kode i et almindeligt JavaScript, 104 00:05:57,190 --> 00:05:59,810 hovedsagelig fordi JavaScript er en virkelig detaljeret sprog. 105 00:05:59,810 --> 00:06:03,020 Du er nødt til at lære en masse syntaks, og bare for at gøre meget simple ting 106 00:06:03,020 --> 00:06:07,590 det tager en masse kode, så jQuery er et bibliotek for JavaScript. 107 00:06:07,590 --> 00:06:09,800 Med andre ord er det en JavaScript-fil, som du kan indlæse 108 00:06:09,800 --> 00:06:12,730 og derefter bruge jQuery funktioner til at gøre visse ting. 109 00:06:12,730 --> 00:06:15,670 Og jQuery dybest set gør dit liv en hel del lettere. 110 00:06:15,670 --> 00:06:20,390 Det forenkler hvad der ville tage hundredvis af linjer i JavaScript ned til et par linjer i jQuery. 111 00:06:20,390 --> 00:06:24,430 >> Det er især nyttigt, hvis du bruger API'er, fordi generelt 112 00:06:24,430 --> 00:06:27,600 hvordan du skal få adgang til API'er er ved at gøre AJAX anmodninger, 113 00:06:27,600 --> 00:06:30,130 og jeg tror, ​​David har nævnt i foredrag, at AJAX anmodninger 114 00:06:30,130 --> 00:06:33,120 er generelt, når man laver et netværk anmodning til en slags server 115 00:06:33,120 --> 00:06:37,760 og komme tilbage en slags data og opdatering af en side øjeblikkeligt. 116 00:06:37,760 --> 00:06:41,840 Betragtninger i almindeligt JavaScript, der ville tage skøre antal linjer 117 00:06:41,840 --> 00:06:44,620 at validere alle de overskrifter og gøre alle den slags ting, 118 00:06:44,620 --> 00:06:46,810 jQuery har en meget simpel funktion kaldet AJAX, 119 00:06:46,810 --> 00:06:51,760 og alt hvad du skal gøre i AJAX er at give de parametre, som du ønsker at give API, 120 00:06:51,760 --> 00:06:56,830 placeringen af ​​API og enhver yderligere form for indstillinger, som du vil konfigurere. 121 00:06:56,830 --> 00:07:02,480 Det er virkelig, virkelig rart og meget nyttigt for denne slags ting. 122 00:07:02,480 --> 00:07:06,970 Det er alt, vi har brug for at begynde at få vores hænder beskidte i API'er. 123 00:07:06,970 --> 00:07:10,220 >> Jeg har tænkt mig at opdrage et par eksempler og udforske deres forskellige egenskaber 124 00:07:10,220 --> 00:07:13,150 og hvorfor de er nyttige for forskellige former for ting. 125 00:07:13,150 --> 00:07:15,570 Den første ting, jeg vil faktisk vise dig er noget, jeg arbejder på 126 00:07:15,570 --> 00:07:18,310 på min forskning lab, er der en Ngram Viewer, 127 00:07:18,310 --> 00:07:23,270 og dybest set ideen om et Ngram Viewer er du kan søge efter en slags ord 128 00:07:23,270 --> 00:07:28,840 eller en sætning og se, hvor ofte det er dukket op i et bestemt sæt af tekst over tid. 129 00:07:28,840 --> 00:07:33,160 Dette eksempel her er dette datasæt af babyer 130 00:07:33,160 --> 00:07:36,480 der blev født i New York mellem 1920 og 2000. 131 00:07:36,480 --> 00:07:40,090 Vi kan søge, for eksempel til navnet Jennifer, 132 00:07:40,090 --> 00:07:44,400 og vi kan se, at pre-1960'erne det virkelig blev ikke brugt så meget, 133 00:07:44,400 --> 00:07:48,900 og derefter som vi kommer ind i de senere år det bliver brugt mere og mere. 134 00:07:48,900 --> 00:07:53,680 Vi kan også gøre sammenligninger, så hvis man sammenligner Jennifer til for eksempel Thomas, 135 00:07:53,680 --> 00:07:56,520 vi kan se Thomas har været temmelig udbredt i hele historien, 136 00:07:56,520 --> 00:07:58,780 hvorimod Jennifer er en nyere navn. 137 00:07:58,780 --> 00:08:00,590 Vi kan gøre den slags ting. 138 00:08:00,590 --> 00:08:02,460 >> Hvordan virker denne ansøgning arbejde? 139 00:08:02,460 --> 00:08:06,030 Dybest set, det virker via en API. 140 00:08:06,030 --> 00:08:08,660 Med andre ord har vi visse parametre her. 141 00:08:08,660 --> 00:08:11,360 Vi har parametrene for, hvad vi faktisk søger efter, 142 00:08:11,360 --> 00:08:13,720 der er disse navne, og så har vi et par andre egenskaber, 143 00:08:13,720 --> 00:08:16,570 som Y-aksen og X-aksen. 144 00:08:16,570 --> 00:08:18,440 Du kan se, vi har et par forskellige muligheder for så vidt angår 145 00:08:18,440 --> 00:08:20,860 tidsopløsning at bruge, og den slags. 146 00:08:20,860 --> 00:08:26,700 Vi har disse muligheder så vidt, hvad data, vi egentlig ønsker fra databasen, 147 00:08:26,700 --> 00:08:29,400 og vi ønsker at få disse data tilbage på en eller anden nyttig måde. 148 00:08:29,400 --> 00:08:34,020 Normalt, hvis vi var forespørge databasen direkte ville det sortere af være en smerte at gøre 149 00:08:34,020 --> 00:08:38,970 fordi formodentlig disse data om baby navne bor i nogle database eller andet sted, 150 00:08:38,970 --> 00:08:42,789 og det ville være virkelig kompliceret at skulle forespørge den manuelt 151 00:08:42,789 --> 00:08:45,830 og beslutte præcist, hvilke data til at vende tilbage. 152 00:08:45,830 --> 00:08:49,300 Med andre ord, vi kun interesserer os for Jennifer og Thomas i dette tilfælde, 153 00:08:49,300 --> 00:08:53,410 og vi kun bekymre sig om på en bestemt akse og alle den slags ting. 154 00:08:53,410 --> 00:08:55,720 >> Hvordan kommer vi omkring dette? 155 00:08:55,720 --> 00:09:01,200 At grave i denne API lidt mere Jeg vil vise dig et andet eksempel på denne platform 156 00:09:01,200 --> 00:09:04,490 som anvender en lidt anderledes datasæt. 157 00:09:04,490 --> 00:09:09,950 Dette datasæt, i stedet for at være baby navne, er faktisk bare det hele 158 00:09:09,950 --> 00:09:12,460 udskrive publikationsdatabase af Open Library, 159 00:09:12,460 --> 00:09:18,410 hvilket er en kæmpe kilde til tekster offentliggjort gennem de sidste 100 år eller så. 160 00:09:18,410 --> 00:09:23,540 Ideen er, at vi har denne compository af millioner og millioner af tekst, 161 00:09:23,540 --> 00:09:27,420 som vi nu kan søge efter forskellige ord og sætninger i. 162 00:09:27,420 --> 00:09:30,840 Her er et eksempel, der varierer lidt anderledes fra det foregående eksempel 163 00:09:30,840 --> 00:09:33,350 Jeg viste dig, som er, at vi har disse 3 søgeforespørgsler, 164 00:09:33,350 --> 00:09:36,290 krig, krig og det franske ord for krig, som er guerre. 165 00:09:36,290 --> 00:09:40,380 Og vi søger inden for 3 forskellige dele af den samlede database. 166 00:09:40,380 --> 00:09:45,080 Med andre ord, vi i denne første forespørgsel er kun søger i USA, 167 00:09:45,080 --> 00:09:51,150 i den anden kun i Storbritannien, og den tredje kun fra værker udgivet i Frankrig. 168 00:09:51,150 --> 00:09:53,120 Vi ser nogle interessante mønstre opstår. 169 00:09:53,120 --> 00:09:58,180 For eksempel ser vi lige her omkring som- 170 00:09:58,180 --> 00:10:02,410 Ups, jeg rodet op aksen en lille smule, men du kan se til højre i denne serie her 171 00:10:02,410 --> 00:10:05,730 omkring borgerkrigen er der et stort spike i den amerikanske udgave 172 00:10:05,730 --> 00:10:08,340 men ikke så stor en stigning i de to andre, og det er selvfølgelig fordi 173 00:10:08,340 --> 00:10:10,880 den amerikanske borgerkrig skete på det tidspunkt. 174 00:10:10,880 --> 00:10:13,890 >> Vi kan se nogle seje ting der, 175 00:10:13,890 --> 00:10:17,070 men hvad vi virkelig bekymrer sig om, er, hvordan vi fik disse data. 176 00:10:17,070 --> 00:10:21,320 Jeg tager dig med bag kulisserne i denne app i en lille smule. 177 00:10:21,320 --> 00:10:24,540 Et lille trick er, hvis du arbejder med stedet og slags ønsker at vide 178 00:10:24,540 --> 00:10:27,430 hvad der foregår bag kulisserne, kan du åbne op udviklerværktøjer. 179 00:10:27,430 --> 00:10:30,200 Jeg har tænkt mig at bruge Chromes udviklingsværktøjer, og at komme til dem, 180 00:10:30,200 --> 00:10:35,160 du kan gøre kontrol, skifteholdsarbejde, J, og det tager dig til JavaScript-konsol. 181 00:10:35,160 --> 00:10:37,420 Der er et par faner her. 182 00:10:37,420 --> 00:10:39,680 De kan alle være ganske nyttigt under forskellige omstændigheder, men jeg ligeglad med netværket 183 00:10:39,680 --> 00:10:44,150 Fanen lige nu, og jeg faktisk nødt til at genopfriske at få det arbejde. 184 00:10:44,150 --> 00:10:50,180 Åh, undskyld. 185 00:10:50,180 --> 00:10:52,320 Den kan lide at give en tilfældig eksempel. 186 00:10:52,320 --> 00:10:54,700 Okay, vi bruger dette eksempel i stedet dengang. 187 00:10:54,700 --> 00:11:01,330 >> Tanken er at der er denne API her, 188 00:11:01,330 --> 00:11:05,330 og du kan se præcis, hvad API er på vej tilbage. 189 00:11:05,330 --> 00:11:10,220 Dette er hvad programmet er at komme tilbage fra API har sendt denne anmodning. 190 00:11:10,220 --> 00:11:13,680 Lad mig zoome ind en lille smule, 191 00:11:13,680 --> 00:11:18,340 og vi kan stort set se det er bare en række centrale værdipar i JSON. 192 00:11:18,340 --> 00:11:23,220 Med andre ord har vi denne HashMap her, kortlægning værdier. 193 00:11:23,220 --> 00:11:26,440 Med andre ord, er det kortlægning år værdier. 194 00:11:26,440 --> 00:11:32,600 I 1765 uanset ord vi oprindeligt søgte bruges 90 gange 195 00:11:32,600 --> 00:11:35,810 ud af 1 million, så vi får tilbage dette resultat. 196 00:11:35,810 --> 00:11:40,280 Det er ikke ligefrem JSON da vi har denne lille resultat header her, 197 00:11:40,280 --> 00:11:45,630 men bemærk, at hele denne objekt her er bare en stor, stor JSON blob. 198 00:11:45,630 --> 00:11:51,070 Vi har et array her som indeholder hele dette element, 199 00:11:51,070 --> 00:11:55,590 og du kan se, at hele elementet ender der, og så har vi en anden stor element 200 00:11:55,590 --> 00:11:59,430 der går hele vejen ned til enden, og det slutter her. 201 00:11:59,430 --> 00:12:02,200 Vi har et virkelig stort array med 2 objekter i det, 202 00:12:02,200 --> 00:12:04,630 og hver af disse objekter er en HashMap. 203 00:12:04,630 --> 00:12:07,340 Du kan se inden for hver af disse hashmaps har vi en kortlægning 204 00:12:07,340 --> 00:12:12,700 af dette indeks værdi til 0, og denne værdi er værdi til en anden HashMap, 205 00:12:12,700 --> 00:12:18,360 som igen er kortlægning X-akseværdier til Y-aksen værdier. 206 00:12:18,360 --> 00:12:20,970 >> Du kan se JSON bliver lidt kompliceret smule, men samlet set 207 00:12:20,970 --> 00:12:24,190 det er faktisk meget nyttigt, og det er meget let at få adgang i forhold til 208 00:12:24,190 --> 00:12:27,390 andre forskellige former for notation. 209 00:12:27,390 --> 00:12:30,550 Så vidt hvad vi faktisk sender data til API til at få, 210 00:12:30,550 --> 00:12:34,690 Jeg har tænkt mig at gå ind i bagenden en lille smule her. 211 00:12:34,690 --> 00:12:39,850 Dette er den store JavaScript-fil, der er behandling af alle de interaktioner af web app, 212 00:12:39,850 --> 00:12:44,810 og så vi er ligeglad med det meste af det, men vi virkelig bekymrer os noget af det. 213 00:12:44,810 --> 00:12:47,410 For eksempel, bekymrer vi os om denne buildQuery funktion, 214 00:12:47,410 --> 00:12:50,670 og tanken om denne funktion er dybest set det ser rundt på siden, 215 00:12:50,670 --> 00:12:53,750 finde ud af hvad brugeren ønsker at forespørge, med andre ord, 216 00:12:53,750 --> 00:12:57,090 kontrol af disse bokse, hvor de har input deres søgetermer, 217 00:12:57,090 --> 00:13:01,380 kontrollere de forskellige Y-og X-akse værdier, som de har valgt, og alle af den slags, 218 00:13:01,380 --> 00:13:06,650 og det kommer til at spytte ud denne forespørgsel værdi, som jeg kan derefter sende ud til API. 219 00:13:06,650 --> 00:13:09,180 >> Det ser kompliceret ud, og det er temmelig kompliceret 220 00:13:09,180 --> 00:13:18,090 men hvad jeg har tænkt mig at gøre, i virkeligheden, jeg allerede gør dette, hvilket er store- 221 00:13:18,090 --> 00:13:21,640 er, at jeg har tænkt mig at få konsollen til at udskrive præcis den pågældende forespørgsel værdi 222 00:13:21,640 --> 00:13:28,110 at det er at sende afsted til API. 223 00:13:28,110 --> 00:13:30,870 Det er faktisk lige her. Beklager, det udsender en masse ting. 224 00:13:30,870 --> 00:13:33,690 Men dette er, hvad vi bekymrer os om, dette objekt lige her. 225 00:13:33,690 --> 00:13:35,300 Dette er den forespørgselsobjekt. 226 00:13:35,300 --> 00:13:40,670 Med andre ord er dette præcis, hvad web-applikation sender til API, 227 00:13:40,670 --> 00:13:45,730 og så lad os se inde i en lille smule, og vi se, vi har et par værdier her. 228 00:13:45,730 --> 00:13:48,710 Vi ser vi denne tæller type, der er hændelser per million ord, 229 00:13:48,710 --> 00:13:51,460 hvilket er præcis, hvad vi har valgt i Y-aksen herovre. 230 00:13:51,460 --> 00:13:53,740 Det er, hvor det kommer fra. 231 00:13:53,740 --> 00:13:58,010 Vi har en database værdi, hvilket betyder, at der er en bestemt database 232 00:13:58,010 --> 00:14:01,610 at disse data lever i, og vi ønsker at få adgang til disse data specifikt 233 00:14:01,610 --> 00:14:04,950 i modsætning til de baby navne data, for eksempel. 234 00:14:04,950 --> 00:14:08,320 Så har vi dette grupper værdi, 235 00:14:08,320 --> 00:14:12,090 som siger, at vi ønsker at søge efter år i modsætning til 236 00:14:12,090 --> 00:14:16,030 alle andre X-akse værdi. 237 00:14:16,030 --> 00:14:19,040 Så har vi en metode, som nogle API'er vil gøre flere ting. 238 00:14:19,040 --> 00:14:22,360 Med andre ord kan denne API også returnere andre former for data, 239 00:14:22,360 --> 00:14:27,740 men i dette tilfælde ønsker vi, at kortlægningen af ​​X-akseværdier til Y-aksen værdier. 240 00:14:27,740 --> 00:14:30,730 Det er, hvad der er at fortælle den at gøre der, 241 00:14:30,730 --> 00:14:35,020 og vi har denne søgning grænser array, som indeholder 2 værdier. 242 00:14:35,020 --> 00:14:40,720 Den første er det, vi ser her, som er alle værdierne 243 00:14:40,720 --> 00:14:43,020 indeholdt i det første lille boks øverst. 244 00:14:43,020 --> 00:14:47,570 >> Med andre ord ønsker vi at kigge efter ordet kamp, ​​og vi ønsker at filtrere det 245 00:14:47,570 --> 00:14:51,920 af engelske tekster inden amerikansk litteratur. 246 00:14:51,920 --> 00:14:54,590 Vi har dette land, der er USA. 247 00:14:54,590 --> 00:14:59,130 Vi har et sprog, som er engelsk, så vi har alle disse forskellige dele 248 00:14:59,130 --> 00:15:02,690 , der alle fortæller API præcis, hvad vi ønsker. 249 00:15:02,690 --> 00:15:04,940 Vi ved ikke, hvad de data, vi får tilbage er endnu, 250 00:15:04,940 --> 00:15:10,970 men vi ved, at dataene kommer til at tage en bestemt form. 251 00:15:10,970 --> 00:15:13,650 Dette eksempel er slags på den komplicerede side, 252 00:15:13,650 --> 00:15:16,180 og du ville ikke nødvendigvis være ved hjælp af en API dette kompleks, 253 00:15:16,180 --> 00:15:20,600 men dette er at vise dig området og magt hvad API'er kan gøre. 254 00:15:20,600 --> 00:15:24,980 Med andre ord, vi bruger en forholdsvis simpel forespørgsel ordningen i princippet har en tekstboks 255 00:15:24,980 --> 00:15:29,490 med et par andre vælgere i forskellige steder. 256 00:15:29,490 --> 00:15:32,010 >> Lad mig ind herude. 257 00:15:32,010 --> 00:15:37,720 Vi har en tekstboks med et par forskellige metadata markeringer, 258 00:15:37,720 --> 00:15:40,610 og vi har Y-aksen og X-aksen markeringer. 259 00:15:40,610 --> 00:15:42,830 Vi har faktisk ikke, at mange områder, 260 00:15:42,830 --> 00:15:46,210 og vi kan se meget nemt vi kan forespørge en slags API 261 00:15:46,210 --> 00:15:48,510 og få data tilbage og derefter sætte det ind i dette skema, 262 00:15:48,510 --> 00:15:52,080 som derefter kommer til at vise det i en brugbar måde. 263 00:15:52,080 --> 00:15:54,970 At se på et andet eksempel, som kunne være en smule mere velkendt for jer 264 00:15:54,970 --> 00:15:56,510 vi kommer til at henvende sig til Facebook. 265 00:15:56,510 --> 00:15:59,440 Facebooks API kaldes Facebook Graph, 266 00:15:59,440 --> 00:16:04,390 og dybest set, hvad det betyder, er Facebook ser sig selv som denne massive database 267 00:16:04,390 --> 00:16:08,000 af masser af forskellige dele, der alle har visse relationer til hinanden. 268 00:16:08,000 --> 00:16:11,070 Med andre ord er jeg en bruger på Facebook, så jeg har en profil, 269 00:16:11,070 --> 00:16:14,310 og jeg har også nogle venner, og hver af dem har en profil, 270 00:16:14,310 --> 00:16:17,580 og hver af mine venner har en væg, som har andre kommentarer til det, 271 00:16:17,580 --> 00:16:20,800 og hver af disse bemærkninger har sympatier og alle den slags ting. 272 00:16:20,800 --> 00:16:23,100 >> Der er masser af forskellige dele til Facebook. 273 00:16:23,100 --> 00:16:26,670 Det er et enormt kompleks API, og der er tonsvis du kan gøre med det, 274 00:16:26,670 --> 00:16:28,450 men det er faktisk ret simpelt at bruge. 275 00:16:28,450 --> 00:16:33,680 Jeg har tænkt mig at starte ud ved at gå til graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 som er min unikt kontonavn, og dit kontonavn vil enten være 277 00:16:38,430 --> 00:16:43,710 en slags ord, hvis du har valgt det, eller det kan bare være en streng af tal. 278 00:16:43,710 --> 00:16:46,360 Hvad vi kommer tilbage er temmelig grundlæggende information. 279 00:16:46,360 --> 00:16:50,460 Vi ser, at jeg har et fornavn, der er Billy, et efternavn, der er Janitsch. 280 00:16:50,460 --> 00:16:53,370 Der er en unik Facebook ID, som jeg har. 281 00:16:53,370 --> 00:16:57,920 Du kan se, at jeg er mand, og at jeg har min sprogindstilling 282 00:16:57,920 --> 00:17:01,290 til britisk engelsk. 283 00:17:01,290 --> 00:17:03,490 Med andre ord, vi ser meget grundlæggende information her. 284 00:17:03,490 --> 00:17:08,670 Det er ikke for meget, men det giver os en idé om, hvad der er. 285 00:17:08,670 --> 00:17:10,849 >> Vi kan gøre det samme for David Malan, for eksempel. 286 00:17:10,849 --> 00:17:13,599 Jeg tror hans navn er dmalan. 287 00:17:13,599 --> 00:17:16,369 Vi ser David Malan har et unikt ID. 288 00:17:16,369 --> 00:17:19,300 Han har et navn, fornavn, mellemnavn, efternavn. 289 00:17:19,300 --> 00:17:24,210 Vi ser også, at han er mand og har sit sprog indstillet til amerikansk engelsk. 290 00:17:24,210 --> 00:17:26,869 Med andre ord, vi ser temmelig grundlæggende information her. 291 00:17:26,869 --> 00:17:28,860 Nu, hvad sker der, hvis vi forsøger at kontrollere ud af noget andet? 292 00:17:28,860 --> 00:17:33,060 Lad os sige, jeg er interesseret i, hvad David Malan har ønsket på Facebook. 293 00:17:33,060 --> 00:17:36,860 Jeg kan gøre / kan lide. Nu har vi løbet ind i et problem. 294 00:17:36,860 --> 00:17:39,280 Vi har fået en slags fejl, der siger en adgang token 295 00:17:39,280 --> 00:17:41,660 er forpligtet til at anmode denne ressource. 296 00:17:41,660 --> 00:17:44,730 Men hvis du tænker over det, der rent faktisk giver mening, fordi det ville være underligt 297 00:17:44,730 --> 00:17:47,830 hvis du kunne få adgang til hver eneste del af Facebooks database 298 00:17:47,830 --> 00:17:50,170 bare fra en slags simpel API, vel? 299 00:17:50,170 --> 00:17:56,040 Med andre ord, dine oplysninger formentlig ikke kan tilgås af alle, der ønsker det. 300 00:17:56,040 --> 00:17:58,330 >> Denne fejl er netop, hvad det betyder. 301 00:17:58,330 --> 00:18:03,630 Nogle API'er kræver visse tilladelser for at få adgang til deres data. 302 00:18:03,630 --> 00:18:06,940 Og endnu mere avanceret API'er, ligesom Facebook én, 303 00:18:06,940 --> 00:18:09,840 vil kræve visse tilladelser til at gøre visse ting. 304 00:18:09,840 --> 00:18:12,650 Jeg kan se dette grundlæggende oplysninger om David Malan. 305 00:18:12,650 --> 00:18:15,950 Jeg kan se, at han er mand, og at han bor i USA, 306 00:18:15,950 --> 00:18:19,270 men jeg kan ikke rigtig se noget forbi det. 307 00:18:19,270 --> 00:18:23,050 For at omgå dette for nu, Facebook har denne nice værktøj 308 00:18:23,050 --> 00:18:27,690 som er grafen API Explorer, og tanken om det er du kan sortere i 309 00:18:27,690 --> 00:18:31,880 fyldes op tilladelser til dig selv baseret på din egen konto 310 00:18:31,880 --> 00:18:35,680 og derefter se ting, som specifikt din konto kan se. 311 00:18:35,680 --> 00:18:45,120 For eksempel, graph.facebook.com/billyjanitsch/likes- hvis jeg gør 312 00:18:45,120 --> 00:18:53,510 Ups, jeg tror jeg er nødt til at forny min token her. 313 00:18:53,510 --> 00:18:55,950 Okay. 314 00:18:55,950 --> 00:19:01,740 Hvis jeg gør det igen, stor, nu kan jeg se, at jeg får dette objekt tilbage 315 00:19:01,740 --> 00:19:06,300 som siger, at jeg gerne pulje nudler, som er i kategorien spil og legetøj. 316 00:19:06,300 --> 00:19:08,620 Jeg kan godt lide hvalrosser, som er i kategorien Animal. 317 00:19:08,620 --> 00:19:10,180 Det er min egentlige Facebook lide. 318 00:19:10,180 --> 00:19:13,280 De er lidt pinligt. 319 00:19:13,280 --> 00:19:16,090 >> Men vi kan se disse data er alle tilbage i JSON. 320 00:19:16,090 --> 00:19:18,160 Det er temmelig læsbar. 321 00:19:18,160 --> 00:19:20,970 Med andre ord har vi denne mapping af data til en form af en matrix, 322 00:19:20,970 --> 00:19:25,220 og hvert element i dette array er en HashMap der kortlægger 323 00:19:25,220 --> 00:19:28,530 navnet på en lignende og den kategori af en lignende. 324 00:19:28,530 --> 00:19:31,240 Hver lignende har et unikt ID. 325 00:19:31,240 --> 00:19:34,510 Der er alle mulige forskellige ting af data, som vi kan få, 326 00:19:34,510 --> 00:19:37,980 og hvis du er interesseret i at bruge Facebook API for et CS50 afgangsprojekt 327 00:19:37,980 --> 00:19:40,720 eller for noget lignende, det er faktisk ganske doable. 328 00:19:40,720 --> 00:19:44,260 Dybest set, hvordan du får omkring autentificering ting er Facebook 329 00:19:44,260 --> 00:19:48,030 anvender et system kaldet OAuth, eller Open Authentication, 330 00:19:48,030 --> 00:19:52,870 og jeg ønsker ikke at komme ind i det nu, fordi OAuth eller anden type 331 00:19:52,870 --> 00:19:56,060 af autentificering tendens til at variere meget mellem forskellige API'er, 332 00:19:56,060 --> 00:19:58,320 så jeg kunne bruge lang tid på at gå over hver enkelt, 333 00:19:58,320 --> 00:20:01,170 men de er faktisk temmelig selvforklarende. 334 00:20:01,170 --> 00:20:04,050 >> Hvis du Google Facebook API er det meget læsbar. 335 00:20:04,050 --> 00:20:06,670 Der er en hel spec. 336 00:20:06,670 --> 00:20:10,210 For eksempel er dette i dokumentationen til den Facebook API, 337 00:20:10,210 --> 00:20:14,170 og du kan se jeg er på User side, så jeg kan lære alt om de forskellige slags ting 338 00:20:14,170 --> 00:20:17,170 der er til rådighed for at komme så vidt som data 339 00:20:17,170 --> 00:20:21,550 og også de forskellige tilladelser, som jeg har brug for at kunne få adgang til dem. 340 00:20:21,550 --> 00:20:25,470 Som vi så, behøver vi ikke tilladelse til at få adgang til det navn eller køn, 341 00:20:25,470 --> 00:20:29,380 men ud over at vi har brug for tilladelser til de fleste ting. 342 00:20:29,380 --> 00:20:33,040 Denne side, eller rettere, denne hjemmeside vil også fortælle dig, hvordan du får 343 00:20:33,040 --> 00:20:35,640 en token for at kunne identificere dig. 344 00:20:35,640 --> 00:20:39,290 De fleste autentifikationssystemer bruge nogle form for token 345 00:20:39,290 --> 00:20:42,880 hvor du får denne unikke værdi, som er en virkelig lang og tilfældig streng, 346 00:20:42,880 --> 00:20:46,240 og på den måde de kan associere anmodningen om, at du gør med dig. 347 00:20:46,240 --> 00:20:50,560 Med andre ord, ved de, at du ikke laver noget mistænkeligt med deres data. 348 00:20:50,560 --> 00:20:53,340 De ved præcis, hvad du får. 349 00:20:53,340 --> 00:20:56,180 De ved også, at du har tilladelse til at se denne information. 350 00:20:56,180 --> 00:20:59,110 >> Hvis du har lavet en Facebook app og din app har visse brugere, 351 00:20:59,110 --> 00:21:03,380 og disse brugere har tilladt, at app få adgang til visse dele af deres profil, 352 00:21:03,380 --> 00:21:07,790 så uanset hvad API nøgle eller token, at app bruger 353 00:21:07,790 --> 00:21:11,090 vil være i stand til at få adgang til data for disse brugere. 354 00:21:11,090 --> 00:21:13,780 Dette lyder måske kompliceret, men det er ikke alt for dårlig, 355 00:21:13,780 --> 00:21:16,810 og hvis du ønsker at bruge Facebook vil jeg stærkt anbefale, at du 356 00:21:16,810 --> 00:21:18,990 overveje at spille rundt med deres API. 357 00:21:18,990 --> 00:21:21,610 Det er meget cool, og du kan gøre en masse forskellige ting med det. 358 00:21:21,610 --> 00:21:24,880 Hvis brugeren giver dig disse tilladelser, kan du endda gå tilbage til API 359 00:21:24,880 --> 00:21:28,820 og sige, at jeg vil faktisk skrive i denne brugers væg, eller jeg vil have dem sende et foto, 360 00:21:28,820 --> 00:21:32,390 og det er derfor på din news feed du sommetider få de irriterende ting 361 00:21:32,390 --> 00:21:37,840 siger din ven har set denne video på en slags underlige websted eller noget lignende. 362 00:21:37,840 --> 00:21:43,120 Det er fordi, at app har fået adgang til at sende på den pågældende persons væg. 363 00:21:43,120 --> 00:21:48,350 Ideen er den samlede Facebook API temmelig kompliceret, men også virkelig nyttige. 364 00:21:48,350 --> 00:21:53,220 Absolut værd at tjekke ud, hvis du stadig leder efter en afsluttende projekt. 365 00:21:53,220 --> 00:21:57,930 >> En anden suite af API'er, som jeg har tænkt mig at gå over er CS50 API'er. 366 00:21:57,930 --> 00:22:00,070 Lad mig zoome ind her. 367 00:22:00,070 --> 00:22:03,390 CS50 har faktisk sat sammen af ​​en hel række af API'er 368 00:22:03,390 --> 00:22:07,080 som du kan bruge til et afsluttende projekt eller bare til noget, du laver. 369 00:22:07,080 --> 00:22:12,830 Og de er for det meste Harvard relaterede, og de varierer fra HUDS menuen, 370 00:22:12,830 --> 00:22:17,780 for eksempel til denne Harvard Events API, der vil lade dig få adgang til en liste over 371 00:22:17,780 --> 00:22:21,290 forskellige begivenheder, der foregår på Harvard og den slags ting. 372 00:22:21,290 --> 00:22:24,510 Og så vi kan klikke på et hvilket som helst af disse og få en spec for det, 373 00:22:24,510 --> 00:22:28,090 som du vil være i stand til at finde for enhver API, og idéen er 374 00:22:28,090 --> 00:22:33,920 det lader dig vide, A, specifikt, hvad at anmode fra API, og hvordan man anmoder om det. 375 00:22:33,920 --> 00:22:37,370 Med andre ord, hvis jeg ønsker, at alle begivenheder, der sker i morgen 376 00:22:37,370 --> 00:22:42,550 så jeg er nødt til klart at give det denne dato, at jeg ønsker i et bestemt format, 377 00:22:42,550 --> 00:22:46,030 og B, vil den fortælle mig præcis, hvad det kommer til at give noget tilbage til mig. 378 00:22:46,030 --> 00:22:48,590 Det vil sige, at jeg har tænkt mig at sende dig denne JSON objekt, 379 00:22:48,590 --> 00:22:50,960 eller som du kan se, er der forskellige formater. 380 00:22:50,960 --> 00:22:54,050 >> Du kan også returnere dataene som en CSV, for eksempel. 381 00:22:54,050 --> 00:22:57,620 Men du ved præcis, hvordan dataene kommer til at se ud, når du får den tilbage 382 00:22:57,620 --> 00:23:00,610 så du kan forvente at gøre visse ting med det. 383 00:23:00,610 --> 00:23:07,240 Vi kan rulle ned og se, for eksempel, hvis vi ønsker at søge i API 384 00:23:07,240 --> 00:23:11,500 at få en kalender, så kan vi bruge denne særlige webadresse 385 00:23:11,500 --> 00:23:16,480 og give det nogle parametre, der kommer til at være de data, vi ønsker nøjagtigt. 386 00:23:16,480 --> 00:23:19,540 Og på samme måde, hvis vi ønsker, at de data tilbage i et bestemt format, 387 00:23:19,540 --> 00:23:23,790 så kan vi bede den om at udlæse data i en CSV, 388 00:23:23,790 --> 00:23:27,700 og det er bare en anden parameter, som vi passerer til API. 389 00:23:27,700 --> 00:23:29,210 Masser af smarte ting at gøre der. 390 00:23:29,210 --> 00:23:32,550 Jeg vil absolut anbefale tjekker CS50 API'er. 391 00:23:32,550 --> 00:23:36,000 >> Jeg har tænkt mig at se på dette Harvard Food API især for en lille smule. 392 00:23:36,000 --> 00:23:39,870 En ting jeg har faktisk udviklet, er dette Harvard Noms hjemmeside, 393 00:23:39,870 --> 00:23:44,930 som anvender CS50 Food API til at hente HUDS menu for dagen. 394 00:23:44,930 --> 00:23:50,400 Og til udvidelse skole folk, er HUDS spise service på Harvard. 395 00:23:50,400 --> 00:23:55,130 Hvad du får, er denne side, der indeholder alle de måltider for dagen, så ser vi frokost. 396 00:23:55,130 --> 00:23:58,130 Vi har et par forskellige kategorier. Vi har bønne og fuldkorn station. 397 00:23:58,130 --> 00:24:00,340 Vi har den brune ris station. 398 00:24:00,340 --> 00:24:03,360 Vi kan se til brunch vi har disse få fødevarer. 399 00:24:03,360 --> 00:24:07,030 Hvis vi klikker på dem, så vi får næringsdeklarationen. 400 00:24:07,030 --> 00:24:12,240 Du ser dette er næringsdeklarationen for grapefrugter, hvis du skulle være i tvivl. 401 00:24:12,240 --> 00:24:14,870 Og så igen, vil vi kigge ind i bagenden her en lille smule 402 00:24:14,870 --> 00:24:18,530 og se, hvad dette gør for at få disse data. 403 00:24:18,530 --> 00:24:21,710 Og det viser sig at faktisk ikke være meget kompliceret overhovedet. 404 00:24:21,710 --> 00:24:28,720 Denne fil ser lidt rodet, men husk på, at dette er håndtering hele hjemmesiden, 405 00:24:28,720 --> 00:24:34,130 og hvis jeg rulle ned ser vi denne ændring data funktion. 406 00:24:34,130 --> 00:24:36,630 >> Nu, bare for at være klar, dette er skrevet i CoffeeScript, 407 00:24:36,630 --> 00:24:39,570 hvilket er et sprog, som du sikkert ikke har set før. 408 00:24:39,570 --> 00:24:44,810 Men det er temmelig læsbar, så jeg vil gå igennem det, som om det var pseudokode. 409 00:24:44,810 --> 00:24:49,080 Skift dato er en funktion, der kommer til at tage i denne dato værdi, 410 00:24:49,080 --> 00:24:51,740 og det er også kommer til at tage i en første, som vi er ligeglad så meget. 411 00:24:51,740 --> 00:24:54,110 Men det vigtige er, at det har denne dato, 412 00:24:54,110 --> 00:25:00,080 og denne dato er den dag, vi vil anmode alle fødevarer for. 413 00:25:00,080 --> 00:25:04,030 Og så skal du se, vi har en lille smule af syntaks her, 414 00:25:04,030 --> 00:25:09,000 der dybest set parsing denne dato til et læsbart format. 415 00:25:09,000 --> 00:25:11,920 Med andre ord kræver API datoen i et bestemt format. 416 00:25:11,920 --> 00:25:17,390 Man kan ikke bare sige 16 november 2012 AD. 417 00:25:17,390 --> 00:25:20,320 Det vil ikke vide hvad de skal gøre med det. Det ønsker datoen i et bestemt format. 418 00:25:20,320 --> 00:25:23,230 Alt, hvad vi laver her er at give det præcis det format, 419 00:25:23,230 --> 00:25:26,520 hvilket er et år værdi og derefter en bindestreg, en måned værdi, 420 00:25:26,520 --> 00:25:29,420 en anden bindestreg og datoen værdi. 421 00:25:29,420 --> 00:25:34,910 Og vi har også sige, at vi ønsker, at de data, der skal output i JSON. 422 00:25:34,910 --> 00:25:37,560 >> Nu vi gør dette AJAX anmodning, og som jeg nævnte tidligere, 423 00:25:37,560 --> 00:25:41,680 jQuery har denne super nyttige AJAX funktion, som alt hvad du skal gøre er at specificere 424 00:25:41,680 --> 00:25:45,780 nogle få parametre ned her, og det vil give dig tilbage præcis, hvad du ønsker. 425 00:25:45,780 --> 00:25:50,490 Vi fortæller det, at webadressen vi ønsker det til at gå til, er dette CS50 Food API, 426 00:25:50,490 --> 00:25:52,270 som vi fik fra spec. 427 00:25:52,270 --> 00:25:56,730 Vi siger, at vi ønsker, at data i JSON, og at 428 00:25:56,730 --> 00:25:59,490 vi vil give det disse data, som vi har defineret op her. 429 00:25:59,490 --> 00:26:02,670 Det er den dag, vi ønsker, at de fødevarer for. 430 00:26:02,670 --> 00:26:07,790 Og så alt, hvad vi skal gøre, er at definere en slags succes-funktion, 431 00:26:07,790 --> 00:26:11,980 som er dybest set, hvad der sker, når API returnerer disse data. 432 00:26:11,980 --> 00:26:15,490 Med andre ord har vi pakket op alle de parametre, som vi ønsker, 433 00:26:15,490 --> 00:26:20,530 som i dette tilfælde er den dag, vi ønsker det, og det faktum, at vi vil have det i JSON, 434 00:26:20,530 --> 00:26:23,840 og vi sendte det ud til API, så nu API siger, okay, 435 00:26:23,840 --> 00:26:26,350 her er dine data, jeg fik det tilbage til dig. 436 00:26:26,350 --> 00:26:29,930 Vi har succes funktion, hvilket betyder, eftersom API 437 00:26:29,930 --> 00:26:32,230 held returnerer nogle data, gør hvad vi gør med den? 438 00:26:32,230 --> 00:26:35,980 >> Og det viser sig, at alt, hvad vi gør, er kalde denne opdatering menufunktion 439 00:26:35,980 --> 00:26:42,680 med hvad API er vendt tilbage, så vi kan søge efter det 440 00:26:42,680 --> 00:26:47,970 og se, at alt, hvad vi laver er at bruge en masse ny syntaks her 441 00:26:47,970 --> 00:26:52,220 at opdatere HTML og indsætte disse nye data. 442 00:26:52,220 --> 00:26:56,580 Hvad dette giver, er vi har disse pile på hver side, og vi kan klikke, 443 00:26:56,580 --> 00:27:01,060 og nu vi kigger på data for den næste dag og igen til den næste dag, 444 00:27:01,060 --> 00:27:04,820 og hver gang det er at opdatere denne dato værdi og forespørge API, 445 00:27:04,820 --> 00:27:07,510 komme tilbage nogle data og sætte det ind på webstedet. 446 00:27:07,510 --> 00:27:10,590 Igen, kan du se, super, super nyttige. 447 00:27:10,590 --> 00:27:14,410 Denne app tog mig et par timer at hacke sammen, 448 00:27:14,410 --> 00:27:20,140 og jeg har en smule mere erfaring, naturligvis, men din CS50 afgangsprojekt 449 00:27:20,140 --> 00:27:22,870 kan se noget meget som dette. 450 00:27:22,870 --> 00:27:29,540 >> API'er er super stærk for den indsats, de tager. 451 00:27:29,540 --> 00:27:32,800 Det sidste, jeg har tænkt mig at gå over er et par mere API'er bredt. 452 00:27:32,800 --> 00:27:35,480 Jeg vil ikke komme så langt ind i dem så vidt, hvad de gør specifikt, 453 00:27:35,480 --> 00:27:38,740 men jeg vil give dig en idé om, hvad der er derude. 454 00:27:38,740 --> 00:27:42,700 2 virkelig nyttige dem, hvis du er interesseret i dataanalyse eller visualisering 455 00:27:42,700 --> 00:27:45,960 eller noget lignende, er Freebase og Wikipedia. 456 00:27:45,960 --> 00:27:49,800 Wikipedia-formentlig alle ved-er en gratis online-encyklopædi, 457 00:27:49,800 --> 00:27:53,230 og det faktisk har en API, så hvis du vil, for eksempel, 458 00:27:53,230 --> 00:27:56,250 få alle teksterne og artikler til blæksprutte 459 00:27:56,250 --> 00:27:58,030 du kan meget nemt gøre det. 460 00:27:58,030 --> 00:28:02,300 Bare sige hey, Wikipedia API, jeg vil gerne de data, der returneres som denne, 461 00:28:02,300 --> 00:28:07,010 og jeg vil gerne det i dette format, og artiklen vil jeg gerne er blæksprutte, 462 00:28:07,010 --> 00:28:09,820 og meget hurtigt det vil give dig tilbage disse oplysninger. 463 00:28:09,820 --> 00:28:12,230 Det kan være meget nyttigt, hvis du ønsker at gøre en slags webstedet 464 00:28:12,230 --> 00:28:16,200 det er en bedre fremviser til Wikipedia eller noget lignende. 465 00:28:16,200 --> 00:28:21,350 >> Freebase er slags lignende, selv om det er en lille smule sværere for så vidt angår API. 466 00:28:21,350 --> 00:28:24,390 Freebase er ligesom Wikipedia i, at det er en online-encyklopædi 467 00:28:24,390 --> 00:28:29,050 som indeholder masser og masser af forskellige data om alle mulige forskellige emner, 468 00:28:29,050 --> 00:28:33,150 men den er gemt i en relationsdatabase, som er lidt anderledes end Wikipedia. 469 00:28:33,150 --> 00:28:36,410 Wikipedia har sine artikler og artikler med tilknytning til andre artikler, 470 00:28:36,410 --> 00:28:38,860 men for det meste, hvis du ønsker data for blæksprutte, 471 00:28:38,860 --> 00:28:41,990 du gå til blæksprutte artiklen, få disse data, og du har en masse tekst 472 00:28:41,990 --> 00:28:43,830 om blæksprutter, så det er fantastisk. 473 00:28:43,830 --> 00:28:46,870 Freebase arbejder i en lidt mere kompliceret måde at 474 00:28:46,870 --> 00:28:48,930 alt er relateret til hinanden. 475 00:28:48,930 --> 00:28:52,620 Med andre ord: Hvis leder efter blæksprutter 476 00:28:52,620 --> 00:28:54,940 så det har en masse kategorier, der er forbundet med det. 477 00:28:54,940 --> 00:28:57,920 >> For eksempel er det et dyr, det lever under vandet, 478 00:28:57,920 --> 00:28:59,710 det har en vis kropstemperatur. 479 00:28:59,710 --> 00:29:01,210 Det ved jeg ikke. 480 00:29:01,210 --> 00:29:04,230 Og alle disse kategorier er links til andre steder, hvor du kan gå 481 00:29:04,230 --> 00:29:06,640 at se tingene med det samme kategori. 482 00:29:06,640 --> 00:29:13,450 Med andre ord ville blæksprutte datasæt indeholde et link til de datasæt for alle dyr, 483 00:29:13,450 --> 00:29:16,790 og der ville lade mig flytte rundt i databasen virkelig hurtigt. 484 00:29:16,790 --> 00:29:21,740 Dette kan være meget nyttigt, hvis du laver noget lignende sammenligninger. 485 00:29:21,740 --> 00:29:24,490 Med andre ord, givet en bestemt ting, du ønsker at se 486 00:29:24,490 --> 00:29:27,890 hvad det er relateret til og se hvad det er ikke relateret til. 487 00:29:27,890 --> 00:29:30,700 Den slags ting. Det kan være nyttigt i en række måder. 488 00:29:30,700 --> 00:29:34,250 Hvis du leder efter mere af en udfordring og at være i stand til at gøre nogle mere komplekse ting 489 00:29:34,250 --> 00:29:38,740 Jeg ville overveje at tage et kig på Freebase API. 490 00:29:38,740 --> 00:29:44,670 Men stort set, Wikipedia er en meget enkel sted at gå så langt som at få information. 491 00:29:44,670 --> 00:29:48,340 Et andet sted, at jeg vil se på, er Last.fm, og jeg er faktisk tænkt mig at gå til webstedet 492 00:29:48,340 --> 00:29:53,800 i tilfælde nogle mennesker ikke kender, men Last.fm er dybest set en musik 493 00:29:53,800 --> 00:29:57,220 smag og henstillinger hjemmeside. 494 00:29:57,220 --> 00:29:59,000 Du kan lave en konto. 495 00:29:59,000 --> 00:30:04,250 Du kan begynde at uploade musik fra din musikafspiller 496 00:30:04,250 --> 00:30:08,020 til hjemmesiden, og dybest set vil det begynde at give dig musikalske anbefalinger 497 00:30:08,020 --> 00:30:10,030 baseret på, hvad du lytter til. 498 00:30:10,030 --> 00:30:14,270 >> For eksempel, side-dette, hvis du gå til din profil er mine- 499 00:30:14,270 --> 00:30:18,180 du kan se du har en liste over nyligt lyttet til sporene. 500 00:30:18,180 --> 00:30:22,550 Du kan se den samlede yndlingskunstnere, alle slags ting, 501 00:30:22,550 --> 00:30:25,280 og igen, der er en stor API bag Last.fm, 502 00:30:25,280 --> 00:30:29,360  og du kan bruge den til at gøre masser og masser af virkelig cool ting. 503 00:30:29,360 --> 00:30:38,870 For eksempel, vil jeg gå til en vens side, der har denne Last.fm Tools hjemmeside. 504 00:30:38,870 --> 00:30:42,380 Dette er faktisk en anden platform, der er bygget på Last.fm API, 505 00:30:42,380 --> 00:30:45,420 og det gør en række ret interessante ting. 506 00:30:45,420 --> 00:30:50,260 Hvis jeg logger ind med mit brugernavn, for eksempel, 507 00:30:50,260 --> 00:30:53,110 Jeg kan bede den om at generere en tag cloud, for eksempel, 508 00:30:53,110 --> 00:30:56,480 og hvad der kommer til at gøre, er at give mig tilbage et billede af 509 00:30:56,480 --> 00:30:59,850 alle de forskellige genrer og den slags ting, som jeg kan lide at lytte til. 510 00:30:59,850 --> 00:31:01,410 Hvordan er det at gøre dette? 511 00:31:01,410 --> 00:31:05,670 Meget Dybest set er det at sige til det Last.fm API her er denne bruger. 512 00:31:05,670 --> 00:31:10,710 Jeg vil gerne vide genren af ​​hver sang, de nogensinde har lyttet til, 513 00:31:10,710 --> 00:31:15,130 og du kan gøre det ved at lave en temmelig simpel AJAX opkald til Last.fm API. 514 00:31:15,130 --> 00:31:18,990 Du får tilbage en stor liste, og så selvfølgelig nogle andre ting der bliver gjort 515 00:31:18,990 --> 00:31:22,280 at gøre det til et ord sky, men du kan se den samlede 516 00:31:22,280 --> 00:31:25,850 det er meget let at få adgang til og meget nem at bruge. 517 00:31:25,850 --> 00:31:30,750 Virkelig rart for en række ting. 518 00:31:30,750 --> 00:31:35,940 >> Jeg tror, ​​det er om alle jeg vil sige generelt. 519 00:31:35,940 --> 00:31:39,040 En sidste ting jeg vil nævne om API'er i almindelighed er, at 520 00:31:39,040 --> 00:31:41,840 vil du sommetider løbe ind i noget, der hedder hastighedsbegrænsende, 521 00:31:41,840 --> 00:31:44,940 og tanken om hastighedsbegrænsende er du ikke ønsker at misbruge API'er. 522 00:31:44,940 --> 00:31:48,130 Med andre ord, er det virkelig rart, at en masse af disse hjemmesider har API'er 523 00:31:48,130 --> 00:31:51,070 at du kan gå til og bruge gratis. 524 00:31:51,070 --> 00:31:54,460 Men hvis du laver millioner eller milliarder af forespørgsler om dagen, 525 00:31:54,460 --> 00:31:57,610 for eksempel, hvis du sidder fast i en uendelig løkke, der er uendeligt forespørgsler 526 00:31:57,610 --> 00:32:00,680 en slags API og komme tilbage en enorm mængde data, 527 00:32:00,680 --> 00:32:04,570 selvfølgelig det er ikke godt, så hvad en masse API'er gøre, er at have denne hastighedsbegrænsende funktion 528 00:32:04,570 --> 00:32:09,970 der siger, at du kun kan lave 1.000 anmodninger om dagen pr IP-adresse eller noget lignende. 529 00:32:09,970 --> 00:32:12,540 Og hvis du laver en masse test og den slags, 530 00:32:12,540 --> 00:32:14,890 vil du sommetider løbe ind i det, og pludselig vil lukke dig ud 531 00:32:14,890 --> 00:32:18,280 og sige nej, jeg giver dig ikke noget mere data. 532 00:32:18,280 --> 00:32:20,000 >> Hvad du ønsker at gøre, er at spille efter reglerne. 533 00:32:20,000 --> 00:32:22,950 Du vil være sikker på at du læser det API spec omhyggeligt. 534 00:32:22,950 --> 00:32:26,330 Hvis den har visse regler knyttet til den, ligesom du kan kun lave X forespørgsler om dagen 535 00:32:26,330 --> 00:32:30,000 eller du kan kun få adgang til en del af databasen et bestemt antal gange 536 00:32:30,000 --> 00:32:32,900 eller noget i den retning du vil være sikker på du holder dig til det. 537 00:32:32,900 --> 00:32:38,360 Så længe du spiller inden for disse regler, du skal nok have en virkelig rart tid ved hjælp af API'er. 538 00:32:38,360 --> 00:32:42,030 Din overordnede takeaway er API'er er virkelig, virkelig nyttige. 539 00:32:42,030 --> 00:32:45,610 >> Der er en API for næsten enhver stor web service derude. 540 00:32:45,610 --> 00:32:50,700 Stort set enhver del af Google Tools Suite, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 GMail, Google Kalender, alle disse ting har API'er. 542 00:32:54,390 --> 00:32:58,280 Du kan bruge dem til både får data fra serveren og sende data til serveren. 543 00:32:58,280 --> 00:33:00,870 Med andre ord, at hvis du ønsker at lave en kalender app kan opdatere 544 00:33:00,870 --> 00:33:04,190 andens Google Kalender, er der en API til det. 545 00:33:04,190 --> 00:33:07,810 Hvis du ønsker at gøre noget, der vil fortælle dig, hvor 546 00:33:07,810 --> 00:33:12,530 placeringen af ​​en bestemt adresse er du kan bruge Google Maps API til det. 547 00:33:12,530 --> 00:33:15,860 API'er er fantastisk nyttige, og de er overalt. 548 00:33:15,860 --> 00:33:18,700 Hvis du er interesseret i en form for idé, 549 00:33:18,700 --> 00:33:22,170 der er sikkert en relateret API, som du kan bruge til at få en masse data 550 00:33:22,170 --> 00:33:25,060 meget hurtigt og meget simpelt. 551 00:33:25,060 --> 00:33:28,140 >> Hvis du stadig leder efter et projekt eller hvis du blot ønsker at spille rundt 552 00:33:28,140 --> 00:33:31,820 med noget i almindelighed er API'er absolut værd at gøre. 553 00:33:31,820 --> 00:33:37,200 Tak, og jeg er glad for at besvare eventuelle spørgsmål, du fyre kan have. 554 00:33:37,200 --> 00:33:44,900 Okay, mange tak. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]