1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Seminar] [A programmeringsruten Introduksjon til APIer] 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 >> Hei, alle sammen, jeg er Billy, og i dag skal jeg snakke om APIer, 5 00:00:12,100 --> 00:00:15,220 eller programmeringsgrensesnitt, 6 00:00:15,220 --> 00:00:20,040 spesielt i sammenheng med CS50 endelige prosjekter og den slags ting. 7 00:00:20,040 --> 00:00:22,490 Generelt hva som er en API? 8 00:00:22,490 --> 00:00:25,530 I svært grove trekk er det liksom en middelaldrende mann som lar 2 stk 9 00:00:25,530 --> 00:00:28,610 av programvare for å kommunisere med hverandre. 10 00:00:28,610 --> 00:00:32,530 Det er en slags svært vid definisjon, og er ikke så relevant for det vi ser på. 11 00:00:32,530 --> 00:00:35,450 Hva vi egentlig ønsker er en slags nyttige middelvei 12 00:00:35,450 --> 00:00:40,570 å kommunisere med en slags database et sted. 13 00:00:40,570 --> 00:00:43,310 >> Her er et diagram, og i utgangspunktet ideen er at 14 00:00:43,310 --> 00:00:46,790 vi er et program, og vi ønsker å få data fra en database, 15 00:00:46,790 --> 00:00:49,570 men vi ønsker ikke å søke i databasen direkte. 16 00:00:49,570 --> 00:00:52,710 I stedet ønsker vi å gå gjennom denne typen midt mann, API. 17 00:00:52,710 --> 00:00:55,440 Tanken bak det er nummer 2 og 3 på tabellen 18 00:00:55,440 --> 00:00:57,750 begge kommer til å være svært komplisert og rotete. 19 00:00:57,750 --> 00:00:59,960 Med andre ord, når API er spørre databasen, 20 00:00:59,960 --> 00:01:03,300 er det sannsynligvis kommer til å bruke SQL-tabeller og alle den slags ting, 21 00:01:03,300 --> 00:01:05,489 og vi har lært litt om det i CS50, men samlet, 22 00:01:05,489 --> 00:01:07,590 du har lagt merke til at det er litt av en smerte. 23 00:01:07,590 --> 00:01:10,590 Det blir veldig, veldig komplisert og rotete, spesielt når du gjør 24 00:01:10,590 --> 00:01:12,530 komplekse spørringer og den slags ting. 25 00:01:12,530 --> 00:01:15,960 >> Hva vi egentlig ønsker er en slags nyttige og enkel måte 26 00:01:15,960 --> 00:01:19,780 å få disse dataene, og det er tanken bak tallene 1 og 4 på kartet. 27 00:01:19,780 --> 00:01:23,600 Med andre ord, ønsker vi en veldig enkel måte å fortelle API hva du får for oss 28 00:01:23,600 --> 00:01:27,760 og en veldig enkel måte å få disse dataene tilbake. 29 00:01:27,760 --> 00:01:33,020 Det er en viktigste måten at data skal sendes og mottas, 30 00:01:33,020 --> 00:01:36,490 som er JSON, eller JavaScript Object Notation. 31 00:01:36,490 --> 00:01:40,370 Som kan variere litt så langt som hvordan du sender forespørsel til API. 32 00:01:40,370 --> 00:01:43,210 Med andre ord, hvis du ønsker noen viss mengde data, 33 00:01:43,210 --> 00:01:46,670 hvordan du fortelle API for å få disse dataene kan variere litt. 34 00:01:46,670 --> 00:01:49,210 Vanligvis er det innebærer å gjøre noen form for nettverk forespørsel. 35 00:01:49,210 --> 00:01:53,130 Med andre ord, tilgang slags URL som kommer til å fortelle API 36 00:01:53,130 --> 00:01:56,190 akkurat hva du vil, men dataene er nesten alltid sendes tilbake, 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 >> Hva er JSON egentlig? 39 00:02:01,030 --> 00:02:03,030 Som jeg sa, JavaScript Object Notation. 40 00:02:03,030 --> 00:02:07,090 Det er i utgangspunktet den universelle standarden for overføring og mottak av data. 41 00:02:07,090 --> 00:02:11,410 Ideen er at du har disse tre kategorier av 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 Matriser og hashmaps du har sett på litt i CS50, 44 00:02:16,580 --> 00:02:19,870 men du har liksom fått en meget streng følelse av hva de er. 45 00:02:19,870 --> 00:02:22,780 Med andre ord, med arrays vet du at de er skrive bundet, 46 00:02:22,780 --> 00:02:26,560 slik at du bare har en slags type som går gjennom hele matrisen. 47 00:02:26,560 --> 00:02:29,310 JSON er mye mer skånsom med den slags ting. 48 00:02:29,310 --> 00:02:33,590 I utgangspunktet ideen er du konstruere dette objektet, 49 00:02:33,590 --> 00:02:36,270 som kan være sammensatt av hvilken som helst av disse 3 ting 50 00:02:36,270 --> 00:02:39,470 og kan være sammensatt av flere seg av dem, og de kan settes inn i hverandre. 51 00:02:39,470 --> 00:02:42,110 >> Her er liksom et eksempel på JSON, 52 00:02:42,110 --> 00:02:47,910 som er disse klammeparentesene her representerer din HashMap, 53 00:02:47,910 --> 00:02:51,400 og en HashMap er i utgangspunktet en kartlegging av noen form for nøkkel 54 00:02:51,400 --> 00:02:53,340 til noen slags verdi. 55 00:02:53,340 --> 00:02:56,440 Du vil se her at vi har egenskaper nøkkelen, 56 00:02:56,440 --> 00:02:59,600 og det er kartlegging på en matrise, som er hele greia. 57 00:02:59,600 --> 00:03:04,120 Vi ser en annen del av HashMap, som er denne nøkkelen isAwesome, 58 00:03:04,120 --> 00:03:07,370 som kart til en primitiv verdi av ekte, med andre ord, en boolsk. 59 00:03:07,370 --> 00:03:09,420 Primitiv kan være strenger. De kan være hele tall. 60 00:03:09,420 --> 00:03:11,960 De kan være bools, noe sånt. 61 00:03:11,960 --> 00:03:18,410 Og du se innholdet i denne matrisen som eiendommer poeng til har 2 strenger i den, 62 00:03:18,410 --> 00:03:20,050 self-lignende og fantastisk. 63 00:03:20,050 --> 00:03:27,410 De er to egenskaper JSON, og vi ser at JSON er kjempebra. 64 00:03:27,410 --> 00:03:30,060 For å se på det litt nærmere jeg kommer til å konstruere 65 00:03:30,060 --> 00:03:32,870 en mer komplisert eksempel av JSON her. 66 00:03:32,870 --> 00:03:37,000 >> La oss starte med en matrise, for eksempel bare en tom matrise. 67 00:03:37,000 --> 00:03:39,180 Men det er liksom kjedelig, så vi kommer til å fylle den opp litt, 68 00:03:39,180 --> 00:03:43,420 og som jeg sa, er arrays i JSON skriver bundet, 69 00:03:43,420 --> 00:03:46,400 slik at vi kunne også ha en streng her, som er hi, 70 00:03:46,400 --> 00:03:49,330 og det er en annen del av denne matrisen. 71 00:03:49,330 --> 00:03:53,450 Likeså kan vi legge en hashmapping her, som kommer til å ha noen kartlegginger. 72 00:03:53,450 --> 00:04:00,470 Det kommer til å ha en kartlegging fra navn til strengen Billy. 73 00:04:00,470 --> 00:04:04,590 Vi har en kartlegging fra navn til Billy, og vi har en kartlegging av 74 00:04:04,590 --> 00:04:10,860 favorittfarge til blå. 75 00:04:10,860 --> 00:04:12,700 Det er i utgangspunktet et godt eksempel på JSON. 76 00:04:12,700 --> 00:04:18,160 Den slags kommer inn-whoops, trenger et komma der-alle de forskjellige deler av den. 77 00:04:18,160 --> 00:04:21,140 Igjen, det er ikke skrive bundet i det hele tatt, slik at du kan ha noen slags typer 78 00:04:21,140 --> 00:04:24,710 inne noe du ønsker, og ideen er at det er self-lignende. 79 00:04:24,710 --> 00:04:28,830 Med andre ord, dette er rett her en JSON objekt, som er hele greia, 80 00:04:28,830 --> 00:04:33,200 som er nettopp dette, slik at du kan ha en primitiv være et objekt, 81 00:04:33,200 --> 00:04:35,680 en matrise være et objekt 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 nyttig i at det er så allsidig. 83 00:04:40,270 --> 00:04:45,860 Du kan ha alle mulige data som du kan tenke lagret i JSON. 84 00:04:45,860 --> 00:04:47,900 Det gjør det en veldig fin språk som skal brukes med APIer 85 00:04:47,900 --> 00:04:50,770 fordi det ganske mye betyr at uansett hvilke data du vil 86 00:04:50,770 --> 00:04:54,270 det kommer til å være noen måte å få den tilbake i JSON. 87 00:04:54,270 --> 00:04:58,600 Noen egenskaper som gjør JSON spesielt bra for denne typen ting. 88 00:04:58,600 --> 00:05:02,270 Som du kan se, i forhold til en masse ting som du har jobbet med i CS50 89 00:05:02,270 --> 00:05:06,040 Det er forholdsvis lett å lese og også svært enkelt å skrive. 90 00:05:06,040 --> 00:05:09,700 Du kan rykke ut hvis du vil, som jeg gjorde i dette eksempelet, 91 00:05:09,700 --> 00:05:12,990 som gir deg en fin, pen versjon som du kan se veldig bra. 92 00:05:12,990 --> 00:05:17,150 Men dessuten er det også lett å lese og skrive for en datamaskin. 93 00:05:17,150 --> 00:05:19,870 Med andre ord, er det lett å analysere og lett å kode, 94 00:05:19,870 --> 00:05:23,820 noe som betyr at det er ganske fort så langt som å lese data er opptatt, 95 00:05:23,820 --> 00:05:26,460 og JSON kan genereres veldig raskt. 96 00:05:26,460 --> 00:05:30,300 >> Det er også svært enkelt å få tilgang til ulike deler av JSON og den slags ting. 97 00:05:30,300 --> 00:05:33,320 Det er fint, og dessuten det faktum at det er selvbetjent lignende, 98 00:05:33,320 --> 00:05:36,090 med andre ord, det faktum at du kan ha JSON innen JSON innen JSON 99 00:05:36,090 --> 00:05:40,040 er veldig hyggelig for lagring av data. 100 00:05:40,040 --> 00:05:45,490 En annen del som er generelt veldig nyttig i arbeidet med APIer er jQuery. 101 00:05:45,490 --> 00:05:49,290 Du har lært litt av JavaScript, som er en fin måte 102 00:05:49,290 --> 00:05:53,710 å manipulere HTML og CSS i et nettsted. 103 00:05:53,710 --> 00:05:57,190 Men det kan slags være smertefullt å kode i ren JavaScript, 104 00:05:57,190 --> 00:05:59,810 hovedsakelig fordi JavaScript er en virkelig detaljert språk. 105 00:05:59,810 --> 00:06:03,020 Du må lære mye av syntaks, og bare for å gjøre veldig enkle ting 106 00:06:03,020 --> 00:06:07,590 det tar mye av koden, så jQuery er et bibliotek for JavaScript. 107 00:06:07,590 --> 00:06:09,800 Med andre ord, det er en JavaScript-fil som du kan laste 108 00:06:09,800 --> 00:06:12,730 og deretter bruke jQuery funksjoner for å gjøre visse ting. 109 00:06:12,730 --> 00:06:15,670 Og jQuery gjør i utgangspunktet livet mye enklere. 110 00:06:15,670 --> 00:06:20,390 Det forenkler hva ville ta hundrevis av linjer i JavaScript ned til noen få linjer i jQuery. 111 00:06:20,390 --> 00:06:24,430 >> Det er spesielt nyttig hvis du bruker APIer fordi generelt 112 00:06:24,430 --> 00:06:27,600 hvordan du skal få tilgang til API er ved å gjøre AJAX forespørsler, 113 00:06:27,600 --> 00:06:30,130 og jeg tror David har nevnt i foredraget at AJAX forespørsler 114 00:06:30,130 --> 00:06:33,120 er generelt når du gjør en forespørsel til noen slags server 115 00:06:33,120 --> 00:06:37,760 og komme tilbake en slags data og oppdatere en side umiddelbart. 116 00:06:37,760 --> 00:06:41,840 Mens i vanlig JavaScript som ville ta gale antall linjer 117 00:06:41,840 --> 00:06:44,620 å validere alle overskrifter og gjøre alt av den slags ting, 118 00:06:44,620 --> 00:06:46,810 jQuery har en veldig enkel funksjon kalt AJAX, 119 00:06:46,810 --> 00:06:51,760 og alt du trenger å gjøre i AJAX er å gi parameterne som du ønsker å gi API, 120 00:06:51,760 --> 00:06:56,830 plasseringen av API og ytterligere slags alternativer som du ønsker å konfigurere. 121 00:06:56,830 --> 00:07:02,480 Det er veldig, veldig hyggelig og veldig nyttig for denne typen ting. 122 00:07:02,480 --> 00:07:06,970 Det er alt vi trenger for å begynne å få våre hender skitne i APIer. 123 00:07:06,970 --> 00:07:10,220 >> Jeg kommer til å ta opp noen eksempler og utforske sine ulike egenskaper 124 00:07:10,220 --> 00:07:13,150 og hvorfor de er nyttige for ulike typer ting. 125 00:07:13,150 --> 00:07:15,570 Det første jeg vil faktisk vise deg er noe som jeg jobber med 126 00:07:15,570 --> 00:07:18,310 på min forskningslaboratorium, som er en Ngram Viewer, 127 00:07:18,310 --> 00:07:23,270 og i utgangspunktet ideen om en Ngram Viewer er at du kan søke etter en slags ord 128 00:07:23,270 --> 00:07:28,840 eller uttrykk og se hvor ofte det dukket opp i et bestemt sett av tekst over tid. 129 00:07:28,840 --> 00:07:33,160 Dette eksempelet her er dette datasettet av babyer 130 00:07:33,160 --> 00:07:36,480 som ble født i New York mellom 1920 og 2000. 131 00:07:36,480 --> 00:07:40,090 Vi kan søke, for eksempel, for navnet Jennifer, 132 00:07:40,090 --> 00:07:44,400 og vi ser at pre-1960 det virkelig var ikke brukt så mye, 133 00:07:44,400 --> 00:07:48,900 og deretter som vi får inn de senere år er det blitt brukt mer og mer. 134 00:07:48,900 --> 00:07:53,680 Vi kan også gjøre sammenligninger, så hvis vi sammenligner Jennifer til, for eksempel, Thomas, 135 00:07:53,680 --> 00:07:56,520 Vi kan se Thomas har vært ganske utbredt gjennom historien, 136 00:07:56,520 --> 00:07:58,780 mens Jennifer er en nyere navn. 137 00:07:58,780 --> 00:08:00,590 Vi kan gjøre den slags ting. 138 00:08:00,590 --> 00:08:02,460 >> Hvordan fungerer dette programmet fungerer? 139 00:08:02,460 --> 00:08:06,030 I utgangspunktet, det fungerer 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 parameterne hva vi faktisk søker etter, 142 00:08:11,360 --> 00:08:13,720 som er disse navnene, og så har vi et par andre egenskaper, 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 forskjellige alternativer så langt som 145 00:08:18,440 --> 00:08:20,860 tidsoppløsning å bruke og den slags ting. 146 00:08:20,860 --> 00:08:26,700 Vi har disse alternativene så langt som hva data vi faktisk ønsker fra databasen, 147 00:08:26,700 --> 00:08:29,400 og vi ønsker å få disse dataene tilbake på noen hensiktsmessig måte. 148 00:08:29,400 --> 00:08:34,020 Vanligvis hvis vi spørre databasen direkte det ville liksom være en smerte å gjøre 149 00:08:34,020 --> 00:08:38,970 fordi antagelig disse dataene om baby navn bor i noen database sted, 150 00:08:38,970 --> 00:08:42,789 og det ville være veldig komplisert å måtte spørre det manuelt 151 00:08:42,789 --> 00:08:45,830 og bestemme nøyaktig hvilke data som skal tilbake. 152 00:08:45,830 --> 00:08:49,300 Med andre ord, vi bare bryr seg om Jennifer og Thomas i dette tilfellet, 153 00:08:49,300 --> 00:08:53,410 og vi bare bryr seg om på en bestemt akse og alle den slags ting. 154 00:08:53,410 --> 00:08:55,720 >> Hvordan kommer vi oss rundt dette? 155 00:08:55,720 --> 00:09:01,200 Å grave i dette API litt mer jeg vil vise deg et annet eksempel på denne plattformen 156 00:09:01,200 --> 00:09:04,490 som bruker en litt annen datasett. 157 00:09:04,490 --> 00:09:09,950 Dette datasettet, i stedet for å være baby navn, er faktisk bare hele 158 00:09:09,950 --> 00:09:12,460 trykt publikasjon database av Open Library, 159 00:09:12,460 --> 00:09:18,410 som er en gigantisk kilde tekster publisert gjennom de siste 100 år eller så. 160 00:09:18,410 --> 00:09:23,540 Ideen er at vi har denne compository av millioner av tekst, 161 00:09:23,540 --> 00:09:27,420 som vi kan nå søke etter ulike ord og uttrykk i. 162 00:09:27,420 --> 00:09:30,840 Her er et eksempel som varierer litt annerledes fra forrige eksempel 163 00:09:30,840 --> 00:09:33,350 Jeg viste deg, som er at vi har disse tre søk, 164 00:09:33,350 --> 00:09:36,290 krig, krig og det franske ordet for krig, som er Guerre. 165 00:09:36,290 --> 00:09:40,380 Og vi søker innen 3 forskjellige deler av den totale databasen. 166 00:09:40,380 --> 00:09:45,080 Med andre ord, i denne første spørringen vi bare søker i USA, 167 00:09:45,080 --> 00:09:51,150 i den andre bare i Storbritannia, og den tredje bare fra verk utgitt i Frankrike. 168 00:09:51,150 --> 00:09:53,120 Vi ser frem noen interessante mønstre. 169 00:09:53,120 --> 00:09:58,180 For eksempel ser vi rett rundt her som- 170 00:09:58,180 --> 00:10:02,410 oops, jeg messed opp aksen litt, men du kan se rett i dette området her 171 00:10:02,410 --> 00:10:05,730 rundt borgerkrigen er det en stor økning i den amerikanske utgaven 172 00:10:05,730 --> 00:10:08,340 men ikke en så stor økning i de to andre, og det er åpenbart fordi 173 00:10:08,340 --> 00:10:10,880 den amerikanske borgerkrigen foregikk på det tidspunktet. 174 00:10:10,880 --> 00:10:13,890 >> Vi kan se noen kule ting der, 175 00:10:13,890 --> 00:10:17,070 men hva vi virkelig bryr seg om er hvordan vi fikk disse dataene. 176 00:10:17,070 --> 00:10:21,320 Jeg tar deg med bak kulissene i dette programmet i en liten bit. 177 00:10:21,320 --> 00:10:24,540 En ryddig trikset er hvis du arbeider med området og hva slags ønsker å vite 178 00:10:24,540 --> 00:10:27,430 hva som skjer bak kulissene, kan du åpne opp utviklerverktøy. 179 00:10:27,430 --> 00:10:30,200 Jeg kommer til å bruke Chrome utviklerverktøy, og å komme til dem 180 00:10:30,200 --> 00:10:35,160 du kan gjøre kontroll, shift, J, og som tar deg til JavaScript-konsoll. 181 00:10:35,160 --> 00:10:37,420 Det er noen få faner her. 182 00:10:37,420 --> 00:10:39,680 De kan alle være ganske nyttig under forskjellige omstendigheter, men jeg bryr meg om nettverket 183 00:10:39,680 --> 00:10:44,150 Kategorien akkurat nå, og jeg har faktisk å oppdatere for å få den fungerer. 184 00:10:44,150 --> 00:10:50,180 Oh, beklager. 185 00:10:50,180 --> 00:10:52,320 Det liker å gi en tilfeldig eksempel. 186 00:10:52,320 --> 00:10:54,700 Ok, vil vi bruke dette eksemplet i stedet da. 187 00:10:54,700 --> 00:11:01,330 >> Ideen er at det er dette API her, 188 00:11:01,330 --> 00:11:05,330 og du kan se nøyaktig hva API er tilbake. 189 00:11:05,330 --> 00:11:10,220 Dette er hva programmet er å komme tilbake fra API ha sendt forespørselen. 190 00:11:10,220 --> 00:11:13,680 La meg zoome inn litt, 191 00:11:13,680 --> 00:11:18,340 og vi kan i utgangspunktet se det er bare en serie av viktige verdi par i JSON. 192 00:11:18,340 --> 00:11:23,220 Med andre ord, har vi denne HashMap her som er kartlegging verdier. 193 00:11:23,220 --> 00:11:26,440 Med andre ord, er det kartlegging år til verdier. 194 00:11:26,440 --> 00:11:32,600 I 1765 hvilket ord vi opprinnelig søkte etter er brukt 90 ganger 195 00:11:32,600 --> 00:11:35,810 av 1 million, så vi får tilbake dette resultatet. 196 00:11:35,810 --> 00:11:40,280 Det er ikke akkurat JSON siden vi har denne lille resultatet header her, 197 00:11:40,280 --> 00:11:45,630 men ser at dette hele objektet her er bare en stor stor JSON blob. 198 00:11:45,630 --> 00:11:51,070 Vi har en matrise her som inneholder dette hele elementet, 199 00:11:51,070 --> 00:11:55,590 og du kan se at hele elementet slutter der, og så har vi en annen stor element 200 00:11:55,590 --> 00:11:59,430 som går hele veien ned til enden, og som ender her. 201 00:11:59,430 --> 00:12:02,200 Vi har en veldig stor matrise med to objekter i den, 202 00:12:02,200 --> 00:12:04,630 og hver av disse objektene er HashMap. 203 00:12:04,630 --> 00:12:07,340 Du kan se innenfor hver av disse hashmaps vi har en kartlegging 204 00:12:07,340 --> 00:12:12,700 av denne indeksen verdien til 0 og denne verdien verdi til en annen HashMap, 205 00:12:12,700 --> 00:12:18,360 som igjen er kartlegging x-aksen verdier til Y-aksen verdier. 206 00:12:18,360 --> 00:12:20,970 >> Du kan se JSON blir litt komplisert, men samlet, 207 00:12:20,970 --> 00:12:24,190 det er faktisk veldig nyttig, og det er veldig enkelt å få tilgang i forhold til 208 00:12:24,190 --> 00:12:27,390 andre ulike former for notasjon. 209 00:12:27,390 --> 00:12:30,550 Så langt som hva vi faktisk sender data til API for å få, 210 00:12:30,550 --> 00:12:34,690 Jeg kommer til å gå inn i bakenden litt her. 211 00:12:34,690 --> 00:12:39,850 Dette er den store JavaScript-fil som er håndtering av alle interaksjoner på web app, 212 00:12:39,850 --> 00:12:44,810 og slik at vi ikke bryr oss om det meste av dette, men vi bryr oss om noe av det. 213 00:12:44,810 --> 00:12:47,410 For eksempel, vi bryr oss om dette buildQuery funksjonen, 214 00:12:47,410 --> 00:12:50,670 og ideen om denne funksjonen er i utgangspunktet det ser rundt på siden, 215 00:12:50,670 --> 00:12:53,750 finne ut hva brukeren ønsker å spørre, med andre ord, 216 00:12:53,750 --> 00:12:57,090 sjekke disse boksene der de har innspill sine søkeord, 217 00:12:57,090 --> 00:13:01,380 sjekke de forskjellige Y og x-aksen verdier som de har valgt, og alle slike ting, 218 00:13:01,380 --> 00:13:06,650 og det kommer til å spytte ut dette søket verdi, som jeg kan da sende ut til API. 219 00:13:06,650 --> 00:13:09,180 >> Dette ser komplisert ut, og det er ganske komplisert 220 00:13:09,180 --> 00:13:18,090 men hva jeg skal gjøre-faktisk, jeg allerede gjør dette, som er stor- 221 00:13:18,090 --> 00:13:21,640 er at jeg kommer til å få konsollen til å skrive ut akkurat det spørringsverdien 222 00:13:21,640 --> 00:13:28,110 at det er å sende av gårde til API. 223 00:13:28,110 --> 00:13:30,870 Det er faktisk akkurat her. Beklager, utganger det en masse ting. 224 00:13:30,870 --> 00:13:33,690 Men dette er hva vi bryr oss om, dette objektet her. 225 00:13:33,690 --> 00:13:35,300 Dette er den Søkeobjektet. 226 00:13:35,300 --> 00:13:40,670 Med andre ord, dette er akkurat hva nettet program sender til API, 227 00:13:40,670 --> 00:13:45,730 og så la oss se inne i en liten bit, og vi ser at vi noen verdier her. 228 00:13:45,730 --> 00:13:48,710 Vi ser at vi dette telle type, som er forekomster per million ord, 229 00:13:48,710 --> 00:13:51,460 som er nøyaktig hva vi har valgt i Y-aksen over her. 230 00:13:51,460 --> 00:13:53,740 Det er der det kommer fra. 231 00:13:53,740 --> 00:13:58,010 Vi har en database verdi, noe som betyr at det er noen bestemt database 232 00:13:58,010 --> 00:14:01,610 at disse dataene er å leve i, og vi ønsker å få tilgang til data spesifikt 233 00:14:01,610 --> 00:14:04,950 i motsetning til de baby data, for eksempel. 234 00:14:04,950 --> 00:14:08,320 Så har vi dette grupper verdi, 235 00:14:08,320 --> 00:14:12,090 som sier at vi vil søke etter år i motsetning til 236 00:14:12,090 --> 00:14:16,030 andre X-aksen verdi. 237 00:14:16,030 --> 00:14:19,040 Da har vi en metode, som noen APIer vil gjøre flere ting. 238 00:14:19,040 --> 00:14:22,360 Med andre ord, kan dette API også returnere andre typer data, 239 00:14:22,360 --> 00:14:27,740 men i dette tilfellet, vil vi at kartlegging av X-aksen til Y-verdier akseverdiene. 240 00:14:27,740 --> 00:14:30,730 Det er det som er å fortelle det å gjøre det, 241 00:14:30,730 --> 00:14:35,020 og vi har dette søket grenser array, som inneholder to verdier. 242 00:14:35,020 --> 00:14:40,720 Den første er det vi ser her, er som alle verdiene 243 00:14:40,720 --> 00:14:43,020 inneholdt i den første lille boksen på toppen. 244 00:14:43,020 --> 00:14:47,570 >> Med andre ord, ønsker vi å se etter ordet kamp, ​​og vi ønsker å filtrere det 245 00:14:47,570 --> 00:14:51,920 av engelske tekster innenfor amerikansk litteratur. 246 00:14:51,920 --> 00:14:54,590 Vi har dette landet, som er USA. 247 00:14:54,590 --> 00:14:59,130 Vi har et språk, som er engelsk, så har vi alle disse forskjellige delene 248 00:14:59,130 --> 00:15:02,690 som alle forteller API nøyaktig hva vi ønsker. 249 00:15:02,690 --> 00:15:04,940 Vi vet ikke hva de data som vi får tilbake er ennå, 250 00:15:04,940 --> 00:15:10,970 men vi vet at dataene kommer til å ta en viss form. 251 00:15:10,970 --> 00:15:13,650 Dette eksemplet er liksom på det kompliserte side, 252 00:15:13,650 --> 00:15:16,180 og du ville ikke nødvendigvis være å bruke en API dette komplekset, 253 00:15:16,180 --> 00:15:20,600 men dette er å vise deg området og makt over hva APIer kan gjøre. 254 00:15:20,600 --> 00:15:24,980 Med andre ord, ved hjelp av en relativt enkel spørring systemet i utgangspunktet har vi en inndataboks 255 00:15:24,980 --> 00:15:29,490 med noen andre velgere på forskjellige steder. 256 00:15:29,490 --> 00:15:32,010 >> La meg zoome ut igjen her. 257 00:15:32,010 --> 00:15:37,720 Vi har en tekstboks med et par forskjellige metadata valg, 258 00:15:37,720 --> 00:15:40,610 og vi har Y-aksen og x-aksen valg. 259 00:15:40,610 --> 00:15:42,830 Vi trenger faktisk ikke har så mange felt, 260 00:15:42,830 --> 00:15:46,210 og vi kan se veldig lett vi er i stand til å spørre noen form for API 261 00:15:46,210 --> 00:15:48,510 og få data tilbake og deretter sette det inn i denne figuren, 262 00:15:48,510 --> 00:15:52,080 som deretter skal vise det på en nyttig måte. 263 00:15:52,080 --> 00:15:54,970 For å se på et annet eksempel som kan være litt mer kjent med dere 264 00:15:54,970 --> 00:15:56,510 vi kommer til å slå til Facebook. 265 00:15:56,510 --> 00:15:59,440 Facebooks API kalles Facebook Graph, 266 00:15:59,440 --> 00:16:04,390 og i utgangspunktet hva det betyr er Facebook ser på seg selv som denne massive database 267 00:16:04,390 --> 00:16:08,000 av mange forskjellige deler som alle har visse relasjoner til hverandre. 268 00:16:08,000 --> 00:16:11,070 Med andre ord, jeg er en bruker på Facebook, så har jeg en profil, 269 00:16:11,070 --> 00:16:14,310 og jeg har også visse venner, og hver av dem har en profil, 270 00:16:14,310 --> 00:16:17,580 og hver av mine venner har en vegg, som har forskjellige kommentarer på det, 271 00:16:17,580 --> 00:16:20,800 og hver av disse kommentarene har liker og alt av den slags ting. 272 00:16:20,800 --> 00:16:23,100 >> Det er mange forskjellige deler til Facebook. 273 00:16:23,100 --> 00:16:26,670 Det er et enormt kompleks API, og det er tonnevis du kan gjøre med det, 274 00:16:26,670 --> 00:16:28,450 men det er faktisk ganske enkel å bruke. 275 00:16:28,450 --> 00:16:33,680 Jeg kommer til å starte ut ved å gå til graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 som er min unike kontonavn, og kontonavnet 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 av tall. 278 00:16:43,710 --> 00:16:46,360 Det vi får tilbake er ganske grunnleggende informasjon. 279 00:16:46,360 --> 00:16:50,460 Vi ser at jeg har et fornavn som er Billy, et etternavn, som er Janitsch. 280 00:16:50,460 --> 00:16:53,370 Det er en unik Facebook ID som jeg har. 281 00:16:53,370 --> 00:16:57,920 Du kan se at jeg er mann, og at jeg har min språkinnstilling 282 00:16:57,920 --> 00:17:01,290 til britisk engelsk. 283 00:17:01,290 --> 00:17:03,490 Med andre ord, ser vi svært grunnleggende informasjon her. 284 00:17:03,490 --> 00:17:08,670 Det er ikke for mye, men det gir oss en idé om hva som er der. 285 00:17:08,670 --> 00:17:10,849 >> Vi kan gjøre det samme til David Malan, for eksempel. 286 00:17:10,849 --> 00:17:13,599 Jeg tror han heter dmalan. 287 00:17:13,599 --> 00:17:16,369 Vi ser David Malan har en unik ID. 288 00:17:16,369 --> 00:17:19,300 Han har et navn, fornavn, mellomnavn, etternavn. 289 00:17:19,300 --> 00:17:24,210 Vi ser også at han er mann og har språket hans satt til amerikansk engelsk. 290 00:17:24,210 --> 00:17:26,869 Med andre ord, ser vi ganske grunnleggende informasjon her. 291 00:17:26,869 --> 00:17:28,860 Nå, hva skjer hvis vi prøver å sjekke ut noe annet? 292 00:17:28,860 --> 00:17:33,060 La oss si jeg er interessert i hva David Malan har likt på Facebook. 293 00:17:33,060 --> 00:17:36,860 Jeg kan gjøre / liker. Nå har vi kjørt inn i et problem. 294 00:17:36,860 --> 00:17:39,280 Vi har fått noen form for feil som sier en tilgang 295 00:17:39,280 --> 00:17:41,660 er nødvendig for å be om denne ressursen. 296 00:17:41,660 --> 00:17:44,730 Men hvis du tenker på det, gjør det faktisk fornuftig fordi det ville være rart 297 00:17:44,730 --> 00:17:47,830 hvis du kunne få tilgang til hver enkelt del av Facebooks database 298 00:17:47,830 --> 00:17:50,170 bare fra en slags enkel API, ikke sant? 299 00:17:50,170 --> 00:17:56,040 Med andre ord, formodentlig informasjonen ikke kan nås av alle som ønsker det. 300 00:17:56,040 --> 00:17:58,330 >> Denne feilen er nettopp hva det betyr. 301 00:17:58,330 --> 00:18:03,630 Noen APIer krever visse tillatelser for å få tilgang til sine data. 302 00:18:03,630 --> 00:18:06,940 Og enda mer avanserte APIer, som Facebook en, 303 00:18:06,940 --> 00:18:09,840 vil kreve visse tillatelser til å gjøre visse ting. 304 00:18:09,840 --> 00:18:12,650 Jeg kan se dette grunnleggende informasjon om David Malan. 305 00:18:12,650 --> 00:18:15,950 Jeg kan se at han er mann, og at han bor i USA, 306 00:18:15,950 --> 00:18:19,270 men jeg kan egentlig ikke se noe forbi dette. 307 00:18:19,270 --> 00:18:23,050 For å komme rundt dette for nå har Facebook denne fint verktøy 308 00:18:23,050 --> 00:18:27,690 som er grafen API explorer, og ideen om det er du kan liksom 309 00:18:27,690 --> 00:18:31,880 utgjør tillatelser for deg selv basert på din egen konto 310 00:18:31,880 --> 00:18:35,680 og deretter se ting som spesifikt kontoen kan vise. 311 00:18:35,680 --> 00:18:45,120 For eksempel, hvis jeg gjør graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 whoops, antar jeg at jeg har for å forlenge min token her. 313 00:18:53,510 --> 00:18:55,950 Okay. 314 00:18:55,950 --> 00:19:01,740 Hvis jeg gjør det igjen, stor, nå ser jeg at jeg får dette objektet tilbake 315 00:19:01,740 --> 00:19:06,300 som sier at jeg liker bassenget nudler, som er i kategorien spill og leker. 316 00:19:06,300 --> 00:19:08,620 Jeg liker hvalross, som er i kategorien Animal. 317 00:19:08,620 --> 00:19:10,180 Dette er min faktiske Facebook liker. 318 00:19:10,180 --> 00:19:13,280 De er slags pinlig. 319 00:19:13,280 --> 00:19:16,090 >> Men vi kan se disse dataene er alle tilbake i JSON. 320 00:19:16,090 --> 00:19:18,160 Det er ganske lesbar. 321 00:19:18,160 --> 00:19:20,970 Med andre ord, har vi denne kartleggingen av data til en slags en matrise, 322 00:19:20,970 --> 00:19:25,220 og hvert element i denne matrise er en HashMap som kartlegger 323 00:19:25,220 --> 00:19:28,530 navnet på en lignende og kategorien av en slik. 324 00:19:28,530 --> 00:19:31,240 Hver som har en unik ID. 325 00:19:31,240 --> 00:19:34,510 Det er alle slags forskjellige ting av data som vi kan få, 326 00:19:34,510 --> 00:19:37,980 og hvis du er interessert i å bruke Facebook API for en CS50 avsluttende prosjekt 327 00:19:37,980 --> 00:19:40,720 eller for noe sånt det er faktisk ganske gjennomførbart. 328 00:19:40,720 --> 00:19:44,260 I utgangspunktet hvordan du får rundt godkjenning ting er Facebook 329 00:19:44,260 --> 00:19:48,030 bruker et system kalt OAuth eller Åpne autentisering, 330 00:19:48,030 --> 00:19:52,870 og jeg ønsker ikke å komme inn i det nå fordi OAuth eller annen type 331 00:19:52,870 --> 00:19:56,060 av godkjenning tendens til å variere mye mellom ulike APIer, 332 00:19:56,060 --> 00:19:58,320 så jeg kunne bruke lang tid å gå over hver enkelt, 333 00:19:58,320 --> 00:20:01,170 men de er faktisk ganske selvforklarende. 334 00:20:01,170 --> 00:20:04,050 >> Hvis du Google Facebook API det er svært lesbare. 335 00:20:04,050 --> 00:20:06,670 Det er en hel spec. 336 00:20:06,670 --> 00:20:10,210 For eksempel er dette dokumentasjonen for Facebook API, 337 00:20:10,210 --> 00:20:14,170 og du kan se jeg er på bruker, slik at jeg kan lære alt om de forskjellige ting 338 00:20:14,170 --> 00:20:17,170 som er tilgjengelig for å komme så langt som data 339 00:20:17,170 --> 00:20:21,550 og også de ulike tillatelser som jeg trenger for å få tilgang til dem. 340 00:20:21,550 --> 00:20:25,470 Som vi så, trenger vi ikke tillatelse til å få tilgang til navn eller kjønn, 341 00:20:25,470 --> 00:20:29,380 men utover at vi trenger tillatelser for de fleste ting. 342 00:20:29,380 --> 00:20:33,040 Denne siden, eller rettere sagt, denne nettsiden vil også fortelle deg hvordan du får 343 00:20:33,040 --> 00:20:35,640 en token å kunne godkjenne deg selv. 344 00:20:35,640 --> 00:20:39,290 De fleste autentiseringssystemer bruke noen form for token 345 00:20:39,290 --> 00:20:42,880 hvor du får denne unike verdi, som er en veldig lang og tilfeldig streng, 346 00:20:42,880 --> 00:20:46,240 og på den måten de kan knytte anmodning om at du gjør med deg. 347 00:20:46,240 --> 00:20:50,560 Med andre ord, de vet at du ikke gjør noe mistenkelig med sine data. 348 00:20:50,560 --> 00:20:53,340 De vet nøyaktig hva du får. 349 00:20:53,340 --> 00:20:56,180 De vet også at du har tillatelse til å vise denne informasjonen. 350 00:20:56,180 --> 00:20:59,110 >> Hvis du har laget en Facebook-applikasjonen og programmet ditt har visse brukere, 351 00:20:59,110 --> 00:21:03,380 og disse brukerne har lov som app tilgang til visse deler av profilen sin, 352 00:21:03,380 --> 00:21:07,790 så hva API nøkkel eller tegn på at det app bruker 353 00:21:07,790 --> 00:21:11,090 vil kunne få tilgang til dataene for disse brukerne. 354 00:21:11,090 --> 00:21:13,780 Dette kan høres komplisert ut, men det er ikke så ille, 355 00:21:13,780 --> 00:21:16,810 og hvis du ønsker å bruke Facebook Jeg vil anbefale at du 356 00:21:16,810 --> 00:21:18,990 vurdere å spille rundt med API deres. 357 00:21:18,990 --> 00:21:21,610 Det er veldig kult, og du kan gjøre en masse forskjellige ting med den. 358 00:21:21,610 --> 00:21:24,880 Hvis brukeren gir deg disse tillatelsene du kan selv gå tilbake til API 359 00:21:24,880 --> 00:21:28,820 og si jeg vil faktisk legge til denne brukerens vegg, eller ønsker jeg å ha dem legge inn et bilde, 360 00:21:28,820 --> 00:21:32,390 og det er derfor på nyhetsfeed vil du noen ganger får disse irriterende tingene 361 00:21:32,390 --> 00:21:37,840 si din venn har sett denne videoen på en slags rare nettstedet eller noe sånt. 362 00:21:37,840 --> 00:21:43,120 Det er fordi at programmet har fått tilgang til å legge på vedkommendes vegg. 363 00:21:43,120 --> 00:21:48,350 Ideen samlet, er Facebook API ganske komplisert, men også veldig nyttig. 364 00:21:48,350 --> 00:21:53,220 Definitivt verdt å sjekke ut hvis du fortsatt leter etter et avsluttende prosjekt. 365 00:21:53,220 --> 00:21:57,930 >> En annen suite med APIer som jeg kommer til å gå over er CS50 APIer. 366 00:21:57,930 --> 00:22:00,070 La meg zoome inn her. 367 00:22:00,070 --> 00:22:03,390 CS50 har satt faktisk sammen en hel serie av APIer 368 00:22:03,390 --> 00:22:07,080 som du kan bruke for et avsluttende prosjekt eller bare for noe som du gjør. 369 00:22:07,080 --> 00:22:12,830 Og de er stort sett Harvard relatert, og de varierer fra HUDS menyen, 370 00:22:12,830 --> 00:22:17,780 for eksempel til dette Harvard Hendelser API, som vil la deg få tilgang til en liste over 371 00:22:17,780 --> 00:22:21,290 forskjellige hendelser som skjer ved Harvard og den slags ting. 372 00:22:21,290 --> 00:22:24,510 Og så kan vi klikke på ett av disse og få en spec for det, 373 00:22:24,510 --> 00:22:28,090 som du vil være i stand til å finne for enhver API, og ideen er 374 00:22:28,090 --> 00:22:33,920 det gjør at du vet, A, spesifikt hva å be fra API og hvordan du ber om det. 375 00:22:33,920 --> 00:22:37,370 Med andre ord, hvis jeg vil at alle hendelser som skjer i morgen 376 00:22:37,370 --> 00:22:42,550 da har jeg fått til åpenbart gi den nevnte dag at jeg vil ha i et bestemt format, 377 00:22:42,550 --> 00:22:46,030 og B, vil den fortelle meg nøyaktig hva det kommer til å gi tilbake til meg. 378 00:22:46,030 --> 00:22:48,590 Det vil si at jeg kommer til å returnere deg denne JSON objekt, 379 00:22:48,590 --> 00:22:50,960 eller som du kan se, er det forskjellige formater. 380 00:22:50,960 --> 00:22:54,050 >> Du kan også returnere dataene som CSV, for eksempel. 381 00:22:54,050 --> 00:22:57,620 Men du vet nøyaktig hvordan dataene kommer til å se når du får den tilbake 382 00:22:57,620 --> 00:23:00,610 slik at du kan forvente å gjøre visse ting med det. 383 00:23:00,610 --> 00:23:07,240 Vi kan bla nedover og se, for eksempel hvis vi ønsker å spørre API 384 00:23:07,240 --> 00:23:11,500 å få en kalender, så vi kan bruke denne URL 385 00:23:11,500 --> 00:23:16,480 og gi den enkelte parametre som kommer til å være data som vi ønsker akkurat. 386 00:23:16,480 --> 00:23:19,540 Og på samme måte, hvis vi ønsker dataene tilbake i et bestemt format, 387 00:23:19,540 --> 00:23:23,790 så kan vi be den skal sende data i en CSV, 388 00:23:23,790 --> 00:23:27,700 og det er bare en annen parameter som vi passerer til API. 389 00:23:27,700 --> 00:23:29,210 Massevis av kule ting å gjøre der. 390 00:23:29,210 --> 00:23:32,550 Jeg vil absolutt anbefale å sjekke ut CS50 APIer. 391 00:23:32,550 --> 00:23:36,000 >> Jeg kommer til å se på dette Harvard Food API spesielt for en liten bit. 392 00:23:36,000 --> 00:23:39,870 En ting jeg har faktisk laget er dette Harvard Noms nettside, 393 00:23:39,870 --> 00:23:44,930 som bruker CS50 Food API for å hente HUDS menyen for dagen. 394 00:23:44,930 --> 00:23:50,400 Og for forlengelse skolen mennesker, er HUDS dining service på Harvard. 395 00:23:50,400 --> 00:23:55,130 Hva du får er denne siden som inneholder alle måltider for dagen, så vi ser lunsj. 396 00:23:55,130 --> 00:23:58,130 Vi har et par forskjellige kategorier. Vi har bønne og hele korn stasjon. 397 00:23:58,130 --> 00:24:00,340 Vi har brun ris stasjon. 398 00:24:00,340 --> 00:24:03,360 Vi kan se for brunsj vi har disse få matvarer. 399 00:24:03,360 --> 00:24:07,030 Hvis vi klikker på dem, så vi får informasjon om ernæring. 400 00:24:07,030 --> 00:24:12,240 Du ser dette er ernæring informasjon for grapefrukt, i tilfelle du skulle lure på. 401 00:24:12,240 --> 00:24:14,870 Og så igjen, vi kommer til å kikke inn i bakenden her litt 402 00:24:14,870 --> 00:24:18,530 og se hva dette gjør for å få disse dataene. 403 00:24:18,530 --> 00:24:21,710 Og det viser seg å faktisk ikke være veldig komplisert i det hele tatt. 404 00:24:21,710 --> 00:24:28,720 Denne filen ser litt rotete, men husk at dette er håndtering av hele nettstedet, 405 00:24:28,720 --> 00:24:34,130 og hvis jeg ruller nedover ser vi denne endringen data funksjonen. 406 00:24:34,130 --> 00:24:36,630 >> Nå, bare for å være klar, dette er skrevet i CoffeeScript, 407 00:24:36,630 --> 00:24:39,570 som er et språk som du sannsynligvis ikke har sett før. 408 00:24:39,570 --> 00:24:44,810 Men det er ganske lesbar, så jeg skal gå gjennom det som om det var pseudokode. 409 00:24:44,810 --> 00:24:49,080 Endre datoen er en funksjon som kommer til å ta i denne datoen verdi, 410 00:24:49,080 --> 00:24:51,740 og det er også kommer til å ta i et første, som vi ikke bryr oss om så mye. 411 00:24:51,740 --> 00:24:54,110 Men det viktigste er at den har denne datoen, 412 00:24:54,110 --> 00:25:00,080 og at datoen er dagen som vi ønsker å be alle matvarer for. 413 00:25:00,080 --> 00:25:04,030 Og så ser vi en liten bit av syntaks her, 414 00:25:04,030 --> 00:25:09,000 som er utgangspunktet analyse denne datoen til et lesbart format. 415 00:25:09,000 --> 00:25:11,920 Med andre ord krever API datoen i et bestemt format. 416 00:25:11,920 --> 00:25:17,390 Du kan ikke bare si 16 november 2012 AD. 417 00:25:17,390 --> 00:25:20,320 Det vil ikke vite hva jeg skal gjøre med det. Det ønsker datoen i et bestemt format. 418 00:25:20,320 --> 00:25:23,230 Alt vi gjør her er å gi det akkurat det formatet, 419 00:25:23,230 --> 00:25:26,520 som er et år verdi og deretter en bindestrek, en måned verdi, 420 00:25:26,520 --> 00:25:29,420 en annen bindestrek og datoen verdi. 421 00:25:29,420 --> 00:25:34,910 Og vi har også si at vi ønsker dataene skal sendes ut i JSON. 422 00:25:34,910 --> 00:25:37,560 >> Nå vi gjør dette AJAX forespørsel, og som jeg nevnte tidligere, 423 00:25:37,560 --> 00:25:41,680 jQuery har denne super nyttige AJAX-funksjon som alt du trenger å gjøre er å spesifisere 424 00:25:41,680 --> 00:25:45,780 noen parametere her nede, og det vil gi deg akkurat det du ønsker. 425 00:25:45,780 --> 00:25:50,490 Vi forteller det at nettadressen vi ønsker at den skal gå til, er dette CS50 Mat API, 426 00:25:50,490 --> 00:25:52,270 som vi fikk fra spec. 427 00:25:52,270 --> 00:25:56,730 Vi sier at vi ønsker dataene i JSON og at 428 00:25:56,730 --> 00:25:59,490 vi kommer til å gi den disse dataene som vi har definert her oppe. 429 00:25:59,490 --> 00:26:02,670 Dette er dagen vi ønsker matvarer for. 430 00:26:02,670 --> 00:26:07,790 Og så alt vi trenger å gjøre er å definere en slags suksess funksjon, 431 00:26:07,790 --> 00:26:11,980 som er utgangspunktet hva som skjer når API returnerer dataene. 432 00:26:11,980 --> 00:26:15,490 Med andre ord, vi har pakket opp alle parameterne som vi ønsker, 433 00:26:15,490 --> 00:26:20,530 som i dette tilfellet er den dagen vi ønsker det og det faktum at vi vil ha det i JSON, 434 00:26:20,530 --> 00:26:23,840 og vi sendte det av gårde til API, så nå API sier, ok, 435 00:26:23,840 --> 00:26:26,350 her er dine data, fikk jeg den tilbake til deg. 436 00:26:26,350 --> 00:26:29,930 Vi har suksessen funksjonen, noe som betyr gitt at API 437 00:26:29,930 --> 00:26:32,230 hell returnerer noen data, hva gjør vi med det? 438 00:26:32,230 --> 00:26:35,980 >> Og det viser seg at alt vi gjør er å ringe denne oppdateringen menyfunksjonen 439 00:26:35,980 --> 00:26:42,680 med uansett API har returnert, slik at vi kan søke etter det 440 00:26:42,680 --> 00:26:47,970 og se at alt vi gjør er å bruke en haug med nye syntaksen her 441 00:26:47,970 --> 00:26:52,220 å oppdatere HTML og sett disse nye dataene. 442 00:26:52,220 --> 00:26:56,580 Hva dette gjør er at vi har disse pilene på hver side, og vi kan klikke, 443 00:26:56,580 --> 00:27:01,060 og nå ser vi på data for neste dag og igjen for neste dag, 444 00:27:01,060 --> 00:27:04,820 og hver gang det har å oppdatere denne datoen verdi og spørring API, 445 00:27:04,820 --> 00:27:07,510 komme tilbake noen data og sette det inn i området. 446 00:27:07,510 --> 00:27:10,590 Igjen, kan du se, super, super nyttig. 447 00:27:10,590 --> 00:27:14,410 Denne app tok meg et par timer å hacke sammen, 448 00:27:14,410 --> 00:27:20,140 og jeg har litt mer erfaring, selvsagt, men CS50 avsluttende prosjekt 449 00:27:20,140 --> 00:27:22,870 kan se noe veldig mye som dette. 450 00:27:22,870 --> 00:27:29,540 >> Programmeringsgrensesnitt er super kraftig for hvor mye krefter som de tar. 451 00:27:29,540 --> 00:27:32,800 Det siste jeg kommer til å gå over er noen flere APIer bredt. 452 00:27:32,800 --> 00:27:35,480 Jeg vil ikke komme så langt inn i dem så langt som hva de gjør konkret, 453 00:27:35,480 --> 00:27:38,740 men jeg vil gi deg en idé om hva som er der ute. 454 00:27:38,740 --> 00:27:42,700 2 virkelig nyttige seg, hvis du er interessert i data analyse eller visualisering 455 00:27:42,700 --> 00:27:45,960 eller noe sånt, er Freebase og Wikipedia. 456 00:27:45,960 --> 00:27:49,800 Wikipedia-antagelig dere alle vet, er et gratis online leksikon, 457 00:27:49,800 --> 00:27:53,230 og det har faktisk en API, så hvis du vil, for eksempel, 458 00:27:53,230 --> 00:27:56,250 få alle tekstene og artikler for blekksprut 459 00:27:56,250 --> 00:27:58,030 du kan veldig enkelt gjøre det. 460 00:27:58,030 --> 00:28:02,300 Bare si hei, Wikipedia API, vil jeg gjerne dataene som returneres som dette, 461 00:28:02,300 --> 00:28:07,010 og jeg vil ha den i dette formatet, og artikkelen jeg ønsker er blekksprut, 462 00:28:07,010 --> 00:28:09,820 og svært raskt det vil gi deg tilbake den informasjonen. 463 00:28:09,820 --> 00:28:12,230 Det kan være veldig nyttig hvis du ønsker å gjøre noen form for nettstedet 464 00:28:12,230 --> 00:28:16,200 det er en bedre visningsprogram for Wikipedia eller noe sånt. 465 00:28:16,200 --> 00:28:21,350 >> Freebase er liksom lik, selv om det er litt vanskeligere så langt som API. 466 00:28:21,350 --> 00:28:24,390 Freebase er som Wikipedia i at det er en online leksikon 467 00:28:24,390 --> 00:28:29,050 som inneholder mange og massevis av ulike data om alle slags forskjellige temaer, 468 00:28:29,050 --> 00:28:33,150 men den er lagret i en relasjonsdatabase, som er litt forskjellig fra Wikipedia. 469 00:28:33,150 --> 00:28:36,410 Wikipedia har sine artikler og artikler knyttet til andre artikler, 470 00:28:36,410 --> 00:28:38,860 men for det meste, hvis du vil at dataene for blekksprut, 471 00:28:38,860 --> 00:28:41,990 du går til blekksprut artikkelen får disse dataene, og du har en haug med tekst 472 00:28:41,990 --> 00:28:43,830 om blekkspruter, så det er flott. 473 00:28:43,830 --> 00:28:46,870 Freebase fungerer på en litt mer komplisert måte i det 474 00:28:46,870 --> 00:28:48,930 alt er relatert til hverandre. 475 00:28:48,930 --> 00:28:52,620 Med andre ord, hvis vi leter etter blekksprut 476 00:28:52,620 --> 00:28:54,940 da den har en haug med kategorier knyttet til den. 477 00:28:54,940 --> 00:28:57,920 >> For eksempel er det et dyr, lever den under vann, 478 00:28:57,920 --> 00:28:59,710 den har en viss kroppstemperatur. 479 00:28:59,710 --> 00:29:01,210 Jeg vet ikke. 480 00:29:01,210 --> 00:29:04,230 Og alle disse kategoriene er lenker til andre steder hvor du kan gå 481 00:29:04,230 --> 00:29:06,640 å se ting med det samme kategori. 482 00:29:06,640 --> 00:29:13,450 Med andre ord, ville blekksprut datasettet inneholder en kobling til datasettet for alle dyr, 483 00:29:13,450 --> 00:29:16,790 og som ville la meg flytte rundt i databasen veldig raskt. 484 00:29:16,790 --> 00:29:21,740 Dette kan være svært nyttig hvis du gjør noe sånt sammenligninger. 485 00:29:21,740 --> 00:29:24,490 Med andre ord, gitt en bestemt ting, vil du se 486 00:29:24,490 --> 00:29:27,890 hva annet det er relatert til og se hva annet det ikke er relatert til. 487 00:29:27,890 --> 00:29:30,700 Den slags ting. Det kan være nyttig i en rekke måter. 488 00:29:30,700 --> 00:29:34,250 Hvis du leter etter mer av en utfordring, og å være i stand til å gjøre noen mer komplekse ting 489 00:29:34,250 --> 00:29:38,740 Jeg ville vurdere å ta en titt på Freebase API. 490 00:29:38,740 --> 00:29:44,670 Men i stor grad er Wikipedia et veldig enkelt sted å gå så langt som å få informasjon. 491 00:29:44,670 --> 00:29:48,340 Et annet sted som jeg vil se på er Last.fm, og jeg faktisk kommer til å gå til nettstedet 492 00:29:48,340 --> 00:29:53,800 i tilfelle noen mennesker er ikke kjent, men Last.fm er i utgangspunktet en musikk 493 00:29:53,800 --> 00:29:57,220 smak og anbefalinger nettsted. 494 00:29:57,220 --> 00:29:59,000 Du kan lage en konto. 495 00:29:59,000 --> 00:30:04,250 Du kan begynne å laste opp musikk fra musikkspilleren 496 00:30:04,250 --> 00:30:08,020 til nettstedet, og i utgangspunktet vil det begynne å gi deg musikk anbefalinger 497 00:30:08,020 --> 00:30:10,030 basert på hva du lytter til. 498 00:30:10,030 --> 00:30:14,270 >> For eksempel, hvis du går til din profil side-dette er mine- 499 00:30:14,270 --> 00:30:18,180 du kan se at du har en liste over nylig lyttet til sporene. 500 00:30:18,180 --> 00:30:22,550 Du kan se samlet favorittartister, alle av den slags ting, 501 00:30:22,550 --> 00:30:25,280 og igjen, det er en stor API bak Last.fm, 502 00:30:25,280 --> 00:30:29,360  og du kan bruke den til å gjøre mange og massevis av virkelig kule ting. 503 00:30:29,360 --> 00:30:38,870 For eksempel, vil jeg gå til en venns side som har denne Last.fm Tools nettside. 504 00:30:38,870 --> 00:30:42,380 Dette er faktisk en annen plattform som er bygget på Last.fm API, 505 00:30:42,380 --> 00:30:45,420 og det gjør en rekke ganske interessante ting. 506 00:30:45,420 --> 00:30:50,260 Hvis jeg logger inn med mitt brukernavn, for eksempel, 507 00:30:50,260 --> 00:30:53,110 Jeg kan spørre den til å generere en tag cloud, for eksempel, 508 00:30:53,110 --> 00:30:56,480 og hva som kommer til å gjøre er å gi meg tilbake et bilde av 509 00:30:56,480 --> 00:30:59,850 alle de forskjellige sjangere og den slags ting som jeg liker å høre på. 510 00:30:59,850 --> 00:31:01,410 Hvordan er det å gjøre dette? 511 00:31:01,410 --> 00:31:05,670 Veldig utgangspunktet det er å si til Last.fm API her er denne brukeren. 512 00:31:05,670 --> 00:31:10,710 Jeg vil gjerne vite sjangeren hver sang som de noensinne har lyttet til, 513 00:31:10,710 --> 00:31:15,130 og du kan gjøre det ved å lage en ganske enkel AJAX kall til Last.fm API. 514 00:31:15,130 --> 00:31:18,990 Du får tilbake en stor liste, og deretter selvsagt noen andre ting som blir gjort 515 00:31:18,990 --> 00:31:22,280 å slå den inn et ord sky, men du kan se samlet 516 00:31:22,280 --> 00:31:25,850 det er veldig lett å få tilgang til og svært enkel å bruke. 517 00:31:25,850 --> 00:31:30,750 Veldig hyggelig for en rekke ting. 518 00:31:30,750 --> 00:31:35,940 >> Jeg tror det er omtrent alt jeg vil si samlet. 519 00:31:35,940 --> 00:31:39,040 En siste ting jeg vil nevne om APIer generelt er at 520 00:31:39,040 --> 00:31:41,840 du noen ganger kjøre inn i noe som kalles hastighetsbegrensende, 521 00:31:41,840 --> 00:31:44,940 og ideen om hastighetsbegrensende er at du ikke ønsker å misbruke APIer. 522 00:31:44,940 --> 00:31:48,130 Med andre ord, det er virkelig hyggelig at mange av disse nettstedene har APIer 523 00:31:48,130 --> 00:31:51,070 at du kan gå til og bruke gratis. 524 00:31:51,070 --> 00:31:54,460 Men hvis du tjener millioner eller milliarder av forespørsler per dag, 525 00:31:54,460 --> 00:31:57,610 for eksempel hvis du sitter fast i en uendelig løkke som er uendelig spør 526 00:31:57,610 --> 00:32:00,680 en slags API og komme tilbake en stor mengde data, 527 00:32:00,680 --> 00:32:04,570 åpenbart det er ikke bra, så hva mange APIer gjøre er å ha dette hastighetsbegrensende funksjonen 528 00:32:04,570 --> 00:32:09,970 som sier at du bare kan gjøre 1000 forespørsler per dag per IP-adresse eller noe sånt. 529 00:32:09,970 --> 00:32:12,540 Og hvis du gjør mye testing og den slags ting, 530 00:32:12,540 --> 00:32:14,890 du noen ganger kjørt inn i den, og plutselig vil slå deg av 531 00:32:14,890 --> 00:32:18,280 og si nei, jeg er ikke å gi deg noen flere data. 532 00:32:18,280 --> 00:32:20,000 >> Hva du ønsker å gjøre er å spille etter reglene. 533 00:32:20,000 --> 00:32:22,950 Du vil være sikker på at du leser API spec nøye. 534 00:32:22,950 --> 00:32:26,330 Hvis det har visse regler knyttet til det, som du bare kan gjøre X søk per dag 535 00:32:26,330 --> 00:32:30,000 eller du kan bare få tilgang til en del av databasen et visst antall ganger 536 00:32:30,000 --> 00:32:32,900 eller noe sånt du vil være sikker på at du holder deg til det. 537 00:32:32,900 --> 00:32:38,360 Så lenge du spiller innenfor disse reglene vil du sannsynligvis ha en veldig fin tid med APIer. 538 00:32:38,360 --> 00:32:42,030 Din generelle takeaway er API-er er virkelig, virkelig nyttig. 539 00:32:42,030 --> 00:32:45,610 >> Det er en API for nesten alle store webtjeneste der ute. 540 00:32:45,610 --> 00:32:50,700 Stort sett alle deler av Googles verktøy Suite, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 GMail, Google Calendar, alle disse tingene har APIer. 542 00:32:54,390 --> 00:32:58,280 Du kan bruke dem til å både få data fra serveren og sende data til serveren. 543 00:32:58,280 --> 00:33:00,870 Med andre ord, hvis du ønsket å lage en kalender app som kan oppdatere 544 00:33:00,870 --> 00:33:04,190 noens Google Kalender, det er en API for det. 545 00:33:04,190 --> 00:33:07,810 Hvis du ønsker å gjøre noe som kommer til å fortelle deg hvor 546 00:33:07,810 --> 00:33:12,530 plasseringen av en bestemt adresse er at du kan bruke Google Maps API for det. 547 00:33:12,530 --> 00:33:15,860 API-er er utrolig nyttig, og de er overalt. 548 00:33:15,860 --> 00:33:18,700 Hvis du er interessert i noen slags idé, 549 00:33:18,700 --> 00:33:22,170 det er trolig et beslektet API som du kan bruke til å få mye data 550 00:33:22,170 --> 00:33:25,060 veldig raskt og veldig enkelt. 551 00:33:25,060 --> 00:33:28,140 >> Hvis du fortsatt leter etter et prosjekt eller hvis du bare ønsker å leke seg 552 00:33:28,140 --> 00:33:31,820 med noe generelt, API-er er definitivt verdt å gjøre. 553 00:33:31,820 --> 00:33:37,200 Takk, og jeg er glad for å svare på spørsmål som dere måtte ha. 554 00:33:37,200 --> 00:33:44,900 Ok, takk. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]