1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Seminar] [programer je Uvod u API] 2 00:00:02,480 --> 00:00:04,059 [Billy Janitsch] [Sveučilište Harvard] [Tommy MacWilliam] 3 00:00:04,059 --> 00:00:08,220 [Ovo je CS50.] [CS50.TV] 4 00:00:08,220 --> 00:00:12,100 >> Bok, svima, ja sam Billy, a danas ću da se govori o API-ja, 5 00:00:12,100 --> 00:00:15,220 ili sučelja za programiranje aplikacija, 6 00:00:15,220 --> 00:00:20,040 posebno u kontekstu CS50 konačnih projekata i takve stvari. 7 00:00:20,040 --> 00:00:22,490 U principu ono što je API? 8 00:00:22,490 --> 00:00:25,530 U vrlo širem smislu, to je svojevrsni srednji čovjek koji omogućava dva komada 9 00:00:25,530 --> 00:00:28,610 softvera da komuniciraju jedni s drugima. 10 00:00:28,610 --> 00:00:32,530 To je vrsta vrlo široku definiciju i da nije relevantno za ono što gledamo. 11 00:00:32,530 --> 00:00:35,450 Ono što stvarno želite je neka vrsta korisnog srednjeg terenu 12 00:00:35,450 --> 00:00:40,570 komunicirati s nekom vrstom baze podataka negdje. 13 00:00:40,570 --> 00:00:43,310 >> Evo tablice, a zapravo ideja je da 14 00:00:43,310 --> 00:00:46,790 mi smo aplikacija, a želimo dobiti podatke iz baze podataka, 15 00:00:46,790 --> 00:00:49,570 ali ne želimo da upita baze podataka izravno. 16 00:00:49,570 --> 00:00:52,710 Umjesto toga želimo ići kroz ove vrste srednji čovjek, API. 17 00:00:52,710 --> 00:00:55,440 Ideja da je broj 2 i 3 na grafikonu 18 00:00:55,440 --> 00:00:57,750 oboje će biti vrlo kompliciran i neuredan. 19 00:00:57,750 --> 00:00:59,960 Drugim riječima, kad se API upite baze podataka, 20 00:00:59,960 --> 00:01:03,300 to je vjerojatno idući u biti koristeći SQL tablice i sve takve vrste stvari, 21 00:01:03,300 --> 00:01:05,489 i naučili smo nešto o tome u CS50, ali sveukupno, 22 00:01:05,489 --> 00:01:07,590 ste primjetili da je malo boli. 23 00:01:07,590 --> 00:01:10,590 Ona dobiva vrlo, vrlo kompliciran i neuredan, pogotovo kada ste izradu 24 00:01:10,590 --> 00:01:12,530 složene upite i takve stvari. 25 00:01:12,530 --> 00:01:15,960 >> Ono što stvarno želite je neka vrsta korisnog i jednostavan način 26 00:01:15,960 --> 00:01:19,780 dobiti te podatke, a to je ideja iza brojeva 1 i 4 na karti. 27 00:01:19,780 --> 00:01:23,600 Drugim riječima, želimo stvarno jednostavan način za reći API što bi za nas 28 00:01:23,600 --> 00:01:27,760 i stvarno jednostavan način da biste dobili te podatke natrag. 29 00:01:27,760 --> 00:01:33,020 Postoji jedan glavni način na koji se podaci obično se šalju i primaju, 30 00:01:33,020 --> 00:01:36,490 što je JSON, ili JavaScript Objekt notacija. 31 00:01:36,490 --> 00:01:40,370 To može varirati malo koliko kako poslati zahtjev za API. 32 00:01:40,370 --> 00:01:43,210 Drugim riječima, ako želite neku određenu količinu podataka, 33 00:01:43,210 --> 00:01:46,670 kako reći API kako bi dobili da podaci mogu varirati malo. 34 00:01:46,670 --> 00:01:49,210 Obično to uključuje izradu nekakvu mreže zahtjev. 35 00:01:49,210 --> 00:01:53,130 Drugim riječima, pristup nekakvu URL koji će reći API 36 00:01:53,130 --> 00:01:56,190 točno ono što želite, ali podaci se gotovo uvijek poslao natrag, 37 00:01:56,190 --> 00:01:59,530 Drugim riječima, broj 4 u JSON. 38 00:01:59,530 --> 00:02:01,030 >> Što je JSON točno? 39 00:02:01,030 --> 00:02:03,030 Kao što sam rekao, JavaScript Object notaciji. 40 00:02:03,030 --> 00:02:07,090 To je u osnovi univerzalni standard za prijenos i primanje podataka. 41 00:02:07,090 --> 00:02:11,410 Ideja je da imate ove tri kategorije stvari. 42 00:02:11,410 --> 00:02:13,540 Imate polja, hashmaps i primitivaca. 43 00:02:13,540 --> 00:02:16,580 Nizovi i hashmaps ste gledali na malo u CS50, 44 00:02:16,580 --> 00:02:19,870 ali ste vrsta dobivši vrlo strogi osjećaj za ono što su oni. 45 00:02:19,870 --> 00:02:22,780 Drugim riječima, s polja znaš da oni upišite vezan, 46 00:02:22,780 --> 00:02:26,560 tako da imate samo jedan kakve vrste koja ide kroz cijeli niz. 47 00:02:26,560 --> 00:02:29,310 JSON je puno blaži s tim stvarima. 48 00:02:29,310 --> 00:02:33,590 Uglavnom ideja je da izgradnja ovog objekta, 49 00:02:33,590 --> 00:02:36,270 koji može biti sastavljen od bilo koje od tih 3 stvari 50 00:02:36,270 --> 00:02:39,470 i može biti sastavljena od više one od njih, i oni mogu biti ugniježđene. 51 00:02:39,470 --> 00:02:42,110 >> Ovdje je vrsta primjer JSON, 52 00:02:42,110 --> 00:02:47,910 koji je ove vitičastim zagradama ovdje predstavljaju svoju hashmap, 53 00:02:47,910 --> 00:02:51,400 i hashmap je u osnovi mapiranje iz neke vrste ključem 54 00:02:51,400 --> 00:02:53,340 na nekakvoj vrijednosti. 55 00:02:53,340 --> 00:02:56,440 Vidjet ćete da se ovdje imamo nekretnine tipku, 56 00:02:56,440 --> 00:02:59,600 i da je mapiranje na polju, što je sve ovo. 57 00:02:59,600 --> 00:03:04,120 Vidimo još jedan element hashmap, što je to ključ isAwesome, 58 00:03:04,120 --> 00:03:07,370 koji mapira primitivnog vrijednosti istina, drugim riječima, boolean. 59 00:03:07,370 --> 00:03:09,420 Primitivi mogu biti nizovi. Oni mogu biti cijeli. 60 00:03:09,420 --> 00:03:11,960 Oni mogu biti bools, bilo što slično. 61 00:03:11,960 --> 00:03:18,410 A vidite sadržaj ovog niza koji ukazuje na svojstva ima dvije žice u njemu, 62 00:03:18,410 --> 00:03:20,050 self-slična i prekrasna. 63 00:03:20,050 --> 00:03:27,410 Oni su dva svojstva JSON, a vidimo da JSON je strašan. 64 00:03:27,410 --> 00:03:30,060 Da pogledate da malo pobliže ću izgraditi 65 00:03:30,060 --> 00:03:32,870 složeniji primjer JSON ovdje. 66 00:03:32,870 --> 00:03:37,000 >> Počnimo s nizom, na primjer, samo prazan niz. 67 00:03:37,000 --> 00:03:39,180 No, to je vrsta dosadno, tako da ćemo ga napuniti malo, 68 00:03:39,180 --> 00:03:43,420 i kao što sam rekao, nizovi u JSON su upišite vezan, 69 00:03:43,420 --> 00:03:46,400 tako da smo mogli imati niz ovdje, što je hi, 70 00:03:46,400 --> 00:03:49,330 i to je još jedan element tog niza. 71 00:03:49,330 --> 00:03:53,450 A isto tako, mogli bismo dodati hashmapping ovdje, koji će imati nekoliko mapiranja. 72 00:03:53,450 --> 00:04:00,470 To će imati mapiranje iz imenom na niz Billy. 73 00:04:00,470 --> 00:04:04,590 Imamo mapiranje iz imenom na Billyja, a imamo i kartiranje 74 00:04:04,590 --> 00:04:10,860 omiljena boja plava. 75 00:04:10,860 --> 00:04:12,700 To je u osnovi dobar primjer JSON. 76 00:04:12,700 --> 00:04:18,160 To je vrsta dobiva u-ups, potrebno zarez tamo-sve različitih dijelova njega. 77 00:04:18,160 --> 00:04:21,140 Opet, to nije tip dužan na sve, tako da možete imati bilo kakve vrste 78 00:04:21,140 --> 00:04:24,710 unutar sve što želite, a ideja je da je samo-sličan. 79 00:04:24,710 --> 00:04:28,830 Drugim riječima, ovo ovdje je JSON objekt, kao što je ova cijela stvar, 80 00:04:28,830 --> 00:04:33,200 kao što je upravo to, tako da možete imati primitivna biti objekt, 81 00:04:33,200 --> 00:04:35,680 Niz biti objekt ili hashmap biti objekt. 82 00:04:35,680 --> 00:04:40,270 >> Kao što možete vidjeti vrsta, JSON je jako, jako koristan u smislu da je tako svestran. 83 00:04:40,270 --> 00:04:45,860 Možete imati sve moguće podatke koje možete zamisliti pohranjene u JSON. 84 00:04:45,860 --> 00:04:47,900 To ga čini jako lijepo jezik za korištenje s API-ja 85 00:04:47,900 --> 00:04:50,770 jer to prilično puno znači da bez obzira što podaci koje želite 86 00:04:50,770 --> 00:04:54,270 tamo će biti neki način da će ga vratiti u JSON. 87 00:04:54,270 --> 00:04:58,600 Prije nekoliko svojstava koje čine JSON posebno dobro za ovu vrstu stvar. 88 00:04:58,600 --> 00:05:02,270 Kao što možete vidjeti, u odnosu na puno stvari koje ste radili sa u CS50 89 00:05:02,270 --> 00:05:06,040 to je relativno vrlo jednostavan za čitanje i vrlo lako napisati. 90 00:05:06,040 --> 00:05:09,700 Možete ga uvući se, ako želite, kao što sam radio u tom primjeru, 91 00:05:09,700 --> 00:05:12,990 koja vam daje lijep, lijep verziju koju možete vidjeti jako dobro. 92 00:05:12,990 --> 00:05:17,150 No, osim toga, to je također lako čitati i pisati za računalo. 93 00:05:17,150 --> 00:05:19,870 Drugim riječima, to je lako analizirati i jednostavan za kodiranje, 94 00:05:19,870 --> 00:05:23,820 što znači da je to prilično brzo koliko čitanja podataka je u pitanju, 95 00:05:23,820 --> 00:05:26,460 i JSON može biti generiran jako brzo. 96 00:05:26,460 --> 00:05:30,300 >> To je također vrlo lako pristupiti na različite dijelove JSON i takve stvari. 97 00:05:30,300 --> 00:05:33,320 To je lijepo, a osim toga, činjenica da je samo-sličan, 98 00:05:33,320 --> 00:05:36,090 Drugim riječima, činjenica da možete imati JSON unutar JSON unutar JSON 99 00:05:36,090 --> 00:05:40,040 je stvarno lijepo za pohranu podataka. 100 00:05:40,040 --> 00:05:45,490 Drugi dio koji je općenito jako korisno u radu s API-ja je jQuery. 101 00:05:45,490 --> 00:05:49,290 Vi ste naučili malo JavaScripta, što je lijep način 102 00:05:49,290 --> 00:05:53,710 manipulirati HTML i CSS unutar web stranice. 103 00:05:53,710 --> 00:05:57,190 Ali to može biti vrsta boli kod u običnom JavaScriptu 104 00:05:57,190 --> 00:05:59,810 uglavnom zato JavaScript je stvarno preopširan jezik. 105 00:05:59,810 --> 00:06:03,020 Morate naučiti puno sintakse, i samo to učiniti vrlo jednostavne stvari 106 00:06:03,020 --> 00:06:07,590 to traje puno koda, tako jQuery je knjižnica za JavaScript. 107 00:06:07,590 --> 00:06:09,800 Drugim riječima, to je JavaScript datoteka koje možete učitati 108 00:06:09,800 --> 00:06:12,730 , a zatim koristiti jQuery funkcije učiniti određene stvari. 109 00:06:12,730 --> 00:06:15,670 I jQuery osnovi čini vaš život puno lakši. 110 00:06:15,670 --> 00:06:20,390 To pojednostavljuje ono što će se stotine linija u JavaScriptu na samo nekoliko redaka u jQuery. 111 00:06:20,390 --> 00:06:24,430 >> To je posebno korisno ako koristite API-ja, jer općenito 112 00:06:24,430 --> 00:06:27,600 kako ćete se pristup API-je za izradu AJAX zahtjeva, 113 00:06:27,600 --> 00:06:30,130 i vjerujem da David nije spomenuo u predavanju koje AJAX zahtjeva 114 00:06:30,130 --> 00:06:33,120 općenito kada ste stvaranje mreže zahtjev za nekom vrstom poslužitelja 115 00:06:33,120 --> 00:06:37,760 i dobivanje natrag nekakvu podataka i ažuriranje stranica trenutno. 116 00:06:37,760 --> 00:06:41,840 Dok je u običnom JavaScript da bi lude brojeve redaka 117 00:06:41,840 --> 00:06:44,620 potvrditi sve zaglavlja i učiniti sve te vrste stvari, 118 00:06:44,620 --> 00:06:46,810 jQuery ima stvarno jednostavan funkciju zove AJAX, 119 00:06:46,810 --> 00:06:51,760 i sve što morate učiniti je dati AJAX parametre koje želite dati API, 120 00:06:51,760 --> 00:06:56,830 lokacija API i dodatni vrsta mogućnosti koje želite konfigurirati. 121 00:06:56,830 --> 00:07:02,480 To je jako, jako lijepo i vrlo korisno za ovu vrstu stvar. 122 00:07:02,480 --> 00:07:06,970 To je sve što nam je potrebno za početak uzimajući naše ruke prljave in API. 123 00:07:06,970 --> 00:07:10,220 >> Idem dovesti do nekoliko primjera i istražiti njihove različite osobine 124 00:07:10,220 --> 00:07:13,150 i zašto su oni korisni za različite vrste stvari. 125 00:07:13,150 --> 00:07:15,570 Prva stvar koju sam zapravo ću vam pokazati nešto što sam radio na 126 00:07:15,570 --> 00:07:18,310 na mom istraživačkom laboratoriju, koji je Ngram Viewer, 127 00:07:18,310 --> 00:07:23,270 iu osnovi ideja o Ngram Viewer je možete tražiti neke vrste riječi 128 00:07:23,270 --> 00:07:28,840 ili fraza i vidjeti koliko često se to pojavio se u određenom setu teksta tijekom vremena. 129 00:07:28,840 --> 00:07:33,160 Ovaj primjer ovdje je to skup podataka o bebama 130 00:07:33,160 --> 00:07:36,480 koji su rođeni u New Yorku između 1920 i 2000. 131 00:07:36,480 --> 00:07:40,090 Možemo pretraživati, na primjer, za ime Jennifer, 132 00:07:40,090 --> 00:07:44,400 i vidimo da pre-1960 stvarno nije koristio sve što je mnogo, 133 00:07:44,400 --> 00:07:48,900 i onda kao što smo dobili u kasnijim godinama to postaje sve više koristi. 134 00:07:48,900 --> 00:07:53,680 Možemo također učiniti usporedbe, pa ako usporedimo Jennifer se, na primjer, Thomas, 135 00:07:53,680 --> 00:07:56,520 možemo vidjeti Toma je bio prilično rasprostranjen u cijeloj povijesti, 136 00:07:56,520 --> 00:07:58,780 dok Jennifer je novije ime. 137 00:07:58,780 --> 00:08:00,590 Mi možemo učiniti takvu stvar. 138 00:08:00,590 --> 00:08:02,460 >> Kako se ova aplikacija radi? 139 00:08:02,460 --> 00:08:06,030 Uglavnom, to radi preko API-ja. 140 00:08:06,030 --> 00:08:08,660 Drugim riječima, imamo određene parametre ovdje. 141 00:08:08,660 --> 00:08:11,360 Imamo parametre ono što mi zapravo u potrazi za, 142 00:08:11,360 --> 00:08:13,720 koji su ta imena, a onda ćemo imati i nekoliko drugih svojstava, 143 00:08:13,720 --> 00:08:16,570 kao osi Y i X osi. 144 00:08:16,570 --> 00:08:18,440 Možete vidjeti imamo nekoliko različitih opcija što se tiče 145 00:08:18,440 --> 00:08:20,860 Vrijeme rezolucija koristiti i takve stvari. 146 00:08:20,860 --> 00:08:26,700 Imamo ove opcije što se tiče onoga što podaci zapravo želimo iz baze podataka, 147 00:08:26,700 --> 00:08:29,400 i želimo dobiti te podatke vratiti na neki koristan način. 148 00:08:29,400 --> 00:08:34,020 Obično, ako smo upite baze podataka izravno će sortirati od biti bol učiniti 149 00:08:34,020 --> 00:08:38,970 jer vjerojatno ti podaci o baby imena živi u nekoj bazi negdje, 150 00:08:38,970 --> 00:08:42,789 i to bi stvarno biti komplicirano da ga upita ručno 151 00:08:42,789 --> 00:08:45,830 i odlučiti što točno podaci za povratak. 152 00:08:45,830 --> 00:08:49,300 Drugim riječima, samo mi je stalo Jennifer i Thomas u ovom slučaju, 153 00:08:49,300 --> 00:08:53,410 a mi samo stalo na određenoj osi i sve te vrste stvari. 154 00:08:53,410 --> 00:08:55,720 >> Kako ćemo dobiti oko ovoga? 155 00:08:55,720 --> 00:09:01,200 Da kopaju u ovom API malo više pokazat ću vam još jedan primjer ove platforme 156 00:09:01,200 --> 00:09:04,490 koji koristi malo drugačiji skup podataka. 157 00:09:04,490 --> 00:09:09,950 Ovaj skup podataka, umjesto da se beba imena, je zapravo samo cijeli 158 00:09:09,950 --> 00:09:12,460 ispisati publikaciju baze Open Library, 159 00:09:12,460 --> 00:09:18,410 što je div izvor tekstova objavljenih tijekom posljednjih sto godina ili tako. 160 00:09:18,410 --> 00:09:23,540 Ideja je da se ovaj compository u milijune i milijune teksta, 161 00:09:23,540 --> 00:09:27,420 što sada možemo tražiti različite riječi i fraze i. 162 00:09:27,420 --> 00:09:30,840 Evo primjera koji se razlikuje malo drugačije od prethodnog primjera 163 00:09:30,840 --> 00:09:33,350 Ja vam pokazao, što je imamo ove tri upita za pretraživanje, 164 00:09:33,350 --> 00:09:36,290 rat, rat, i francuska riječ za rat, koji je guerre. 165 00:09:36,290 --> 00:09:40,380 I mi smo u potrazi unutar tri različite dijelove ukupnog baze podataka. 166 00:09:40,380 --> 00:09:45,080 Drugim riječima, u ovom prvom upitu mi samo tražimo u SAD-u, 167 00:09:45,080 --> 00:09:51,150 u drugom samo u Velikoj Britaniji, a treći samo iz radova objavljenih u Francuskoj. 168 00:09:51,150 --> 00:09:53,120 Mi vidimo neke zanimljive uzorke isplivati. 169 00:09:53,120 --> 00:09:58,180 Na primjer, možemo vidjeti upravo ovdje koji- 170 00:09:58,180 --> 00:10:02,410 Ups, ja zabrljao osi malo, ali možete vidjeti upravo u tom rasponu ovdje 171 00:10:02,410 --> 00:10:05,730 oko građanskog rata tamo je veliki smeč u američkom izdanju 172 00:10:05,730 --> 00:10:08,340 ali ne kao veliki smeč u druge dvije, i to je očito, jer 173 00:10:08,340 --> 00:10:10,880 Američki građanski rat se događa u tom trenutku. 174 00:10:10,880 --> 00:10:13,890 >> Možemo vidjeti neke cool stvari tamo, 175 00:10:13,890 --> 00:10:17,070 ali ono što mi je stvarno stalo je kako smo dobili ove podatke. 176 00:10:17,070 --> 00:10:21,320 Ja ću vas odvesti iza kulisa u ovom app u malo. 177 00:10:21,320 --> 00:10:24,540 Uredan trik je ako radite sa stranice i vrsti žele znati 178 00:10:24,540 --> 00:10:27,430 ono što se događa iza kulisa, možete otvoriti alate developer. 179 00:10:27,430 --> 00:10:30,200 Ja ću biti koristeći Chrome razvojne alate, i da se onima 180 00:10:30,200 --> 00:10:35,160 možete učiniti kontrolu, pomak, J, i koji vas vodi na JavaScript konzole. 181 00:10:35,160 --> 00:10:37,420 Postoji nekoliko kartica ovdje. 182 00:10:37,420 --> 00:10:39,680 Oni svi mogu biti prilično korisno pod različitim okolnostima, ali mi je stalo mreži 183 00:10:39,680 --> 00:10:44,150 Kartica upravo sada, a ja zapravo morati osvježiti kako bi dobili da rade. 184 00:10:44,150 --> 00:10:50,180 Oh, žao mi je. 185 00:10:50,180 --> 00:10:52,320 To voli dati slučajni primjer. 186 00:10:52,320 --> 00:10:54,700 Ok, mi ćemo koristiti ovaj primjer, umjesto tada. 187 00:10:54,700 --> 00:11:01,330 >> Ideja je da je ovo API ovdje, 188 00:11:01,330 --> 00:11:05,330 i možete vidjeti točno ono što API se vraća. 189 00:11:05,330 --> 00:11:10,220 To je ono što je zahtjev vratimo iz API što je poslao taj zahtjev. 190 00:11:10,220 --> 00:11:13,680 Dopustite mi povećali malo, 191 00:11:13,680 --> 00:11:18,340 a mi u osnovi može vidjeti da je to samo niz ključnih vrijednosti parova u JSON. 192 00:11:18,340 --> 00:11:23,220 Drugim riječima, mi imamo tu hashmap ovdje da je mapiranje vrijednosti. 193 00:11:23,220 --> 00:11:26,440 Drugim riječima, to je mapiranje godina vrijednostima. 194 00:11:26,440 --> 00:11:32,600 U 1765 god riječ mi u početku tražili koristi 90 puta 195 00:11:32,600 --> 00:11:35,810 od milijun, tako da smo dobivanje natrag ovaj rezultat. 196 00:11:35,810 --> 00:11:40,280 To nije točno JSON jer imamo ovaj mali rezultat zaglavlje ovdje, 197 00:11:40,280 --> 00:11:45,630 ali obavijest da je cijeli ovaj predmet ovdje je samo veliki veliki JSON blob. 198 00:11:45,630 --> 00:11:51,070 Imamo niz ovdje koji sadrži cijeli ovaj element, 199 00:11:51,070 --> 00:11:55,590 i možete vidjeti da je cijeli element koji završava tamo, i onda imamo još jedan veliki elementa 200 00:11:55,590 --> 00:11:59,430 da ide sve na putu prema dolje do kraja, i da se ovdje završava. 201 00:11:59,430 --> 00:12:02,200 Imamo jako veliki niz s dva predmeta u njoj, 202 00:12:02,200 --> 00:12:04,630 i svaki od tih predmeta je hashmap. 203 00:12:04,630 --> 00:12:07,340 Možete vidjeti u svakom od tih hashmaps imamo preslikavanje 204 00:12:07,340 --> 00:12:12,700 ove vrijednosti indeksa na 0, a ta vrijednost je vrijednost na drugu hashmap, 205 00:12:12,700 --> 00:12:18,360 koji je ponovno mapiranje vrijednosti os X na Y osi vrijednosti. 206 00:12:18,360 --> 00:12:20,970 >> Možete vidjeti JSON dobiva malo komplicirano, ali sveukupno, 207 00:12:20,970 --> 00:12:24,190 to je zapravo vrlo korisno, a to je vrlo lako za pristup u odnosu na 208 00:12:24,190 --> 00:12:27,390 drugi različiti oblici zapisa. 209 00:12:27,390 --> 00:12:30,550 Što se tiče onoga što mi zapravo šalju podatke API dobiti, 210 00:12:30,550 --> 00:12:34,690 Ja idem u leđa kraj malo ovdje. 211 00:12:34,690 --> 00:12:39,850 Ovo je velika JavaScript datoteku koja je rukovanje svim interakcijama web app, 212 00:12:39,850 --> 00:12:44,810 i tako mi nije stalo većinu toga, ali mi je stalo nešto od toga. 213 00:12:44,810 --> 00:12:47,410 Na primjer, mi brinemo o ovom buildQuery funkciji, 214 00:12:47,410 --> 00:12:50,670 i ideja ove funkcije je u osnovi to gleda po stranici, 215 00:12:50,670 --> 00:12:53,750 figuring out ono što korisnik želi upita, drugim riječima, 216 00:12:53,750 --> 00:12:57,090 provjeru tih polja gdje smo Ulaz svoje pojmove, 217 00:12:57,090 --> 00:13:01,380 provjeru različite Y i X osi vrijednosti da ste izabrali i sve takve stvari, 218 00:13:01,380 --> 00:13:06,650 i to će ispljunuti ovaj upit vrijednost, koji sam tada može poslati off API. 219 00:13:06,650 --> 00:13:09,180 >> Ovo izgleda komplicirano, a to je prilično komplicirano 220 00:13:09,180 --> 00:13:18,090 ali ono što ću učiniti, u stvari, ja sam već to, što je velik- 221 00:13:18,090 --> 00:13:21,640 je da ću dobiti konzolu ispisati točno da upita vrijednost 222 00:13:21,640 --> 00:13:28,110 da je slanje off API. 223 00:13:28,110 --> 00:13:30,870 To je zapravo ovdje. Nažalost, ona izlazi puno stvari. 224 00:13:30,870 --> 00:13:33,690 Ali to je ono što mi je stalo, ovaj objekt ovdje. 225 00:13:33,690 --> 00:13:35,300 Ovo je upit objekt. 226 00:13:35,300 --> 00:13:40,670 Drugim riječima, to je točno ono što je web aplikacija šalje na API, 227 00:13:40,670 --> 00:13:45,730 pa pogledajmo unutar malo, i vidimo imamo nekoliko vrijednosti ovdje. 228 00:13:45,730 --> 00:13:48,710 Mi vidimo imamo ovu računati tip, što je pojava na milijun riječima, 229 00:13:48,710 --> 00:13:51,460 što je upravo ono što smo izabrali u Y osi ovamo. 230 00:13:51,460 --> 00:13:53,740 To je mjesto gdje da dolazi iz. 231 00:13:53,740 --> 00:13:58,010 Imamo baze vrijednost, što znači da postoji neki određeni baze podataka 232 00:13:58,010 --> 00:14:01,610 da se ti podaci živi u, i želimo pristupiti te podatke posebno 233 00:14:01,610 --> 00:14:04,950 za razliku od imena za bebe podataka, na primjer. 234 00:14:04,950 --> 00:14:08,320 Onda imamo ovaj skupine vrijednost, 235 00:14:08,320 --> 00:14:12,090 koji je rekao da želimo tražiti po godini, za razliku od 236 00:14:12,090 --> 00:14:16,030 bilo koja druga os X vrijednost. 237 00:14:16,030 --> 00:14:19,040 Onda imamo metodu, koju neki API će učiniti više stvari. 238 00:14:19,040 --> 00:14:22,360 Drugim riječima, ovo API također može vratiti i druge vrste podataka, 239 00:14:22,360 --> 00:14:27,740 ali u ovom slučaju, želimo da kartiranje X osi vrijednosti na y osi vrijednosti. 240 00:14:27,740 --> 00:14:30,730 To je ono što da se to govori da to postoji, 241 00:14:30,730 --> 00:14:35,020 i mi imamo tu niz pretragu granica, koja sadrži dvije vrijednosti. 242 00:14:35,020 --> 00:14:40,720 Prvi je ono što smo vidjeli ovdje, koji je sve vrijednosti 243 00:14:40,720 --> 00:14:43,020 sadržana unutar tog prvog malo okvir na vrhu. 244 00:14:43,020 --> 00:14:47,570 >> Drugim riječima, želimo tražiti riječi bitke, a mi želimo da ga filtrirati 245 00:14:47,570 --> 00:14:51,920 po engleskim tekstovima u američkoj književnosti. 246 00:14:51,920 --> 00:14:54,590 Imamo ovu zemlju, koji je SAD-u. 247 00:14:54,590 --> 00:14:59,130 Imamo jezik, što je engleski, pa mi imamo sve od tih različitih dijelova 248 00:14:59,130 --> 00:15:02,690 da svi govore API točno ono što želimo. 249 00:15:02,690 --> 00:15:04,940 Mi ne znamo što su podaci koje smo dobili natrag je još, 250 00:15:04,940 --> 00:15:10,970 ali znamo da podaci će se određeni oblik. 251 00:15:10,970 --> 00:15:13,650 Ovaj primjer je vrsta na komplicirane strani, 252 00:15:13,650 --> 00:15:16,180 i ne bi nužno koristiti API ovaj kompleks, 253 00:15:16,180 --> 00:15:20,600 ali to je da vam pokazati raspon i snagu što API može učiniti. 254 00:15:20,600 --> 00:15:24,980 Drugim riječima, koristeći relativno jednostavan upita sustav smo u osnovi imaju ulazni okvir 255 00:15:24,980 --> 00:15:29,490 s nekoliko drugih selektora u različitim mjestima. 256 00:15:29,490 --> 00:15:32,010 >> Dopustite mi povećali vratiti ovdje. 257 00:15:32,010 --> 00:15:37,720 Imamo ulaznog okvir s nekoliko različitih metapodataka odabira, 258 00:15:37,720 --> 00:15:40,610 i imamo Y os i os x odabira. 259 00:15:40,610 --> 00:15:42,830 Mi zapravo i ne moraju da se mnogo polja, 260 00:15:42,830 --> 00:15:46,210 i možemo vidjeti vrlo lako smo mogli upita nekakav API 261 00:15:46,210 --> 00:15:48,510 i dobiti podatke natrag, a zatim ga staviti u ovoj tablici, 262 00:15:48,510 --> 00:15:52,080 koji se potom će ga prikazati u koristan način. 263 00:15:52,080 --> 00:15:54,970 Da pogledate još jedan primjer koji bi mogli biti malo više upoznat s vama 264 00:15:54,970 --> 00:15:56,510 idemo okrenuti na Facebook. 265 00:15:56,510 --> 00:15:59,440 Facebook API zove Facebook Graf, 266 00:15:59,440 --> 00:16:04,390 i zapravo što to znači je Facebook sebe vidi kao ovaj masivni bazu podataka 267 00:16:04,390 --> 00:16:08,000 od puno različitih dijelova koji svi imaju određene odnose jedni prema drugima. 268 00:16:08,000 --> 00:16:11,070 Drugim riječima, ja sam korisnik na Facebooku, tako da imam profil, 269 00:16:11,070 --> 00:16:14,310 i ja također imaju određene prijatelje, a svaki od njih ima profil, 270 00:16:14,310 --> 00:16:17,580 i svaki od mojih prijatelja ima zid, koji ima različite komentare na njemu, 271 00:16:17,580 --> 00:16:20,800 a svaki od tih primjedbi ima voli i sve takve stvari. 272 00:16:20,800 --> 00:16:23,100 >> Postoji mnogo različitih dijelova na Facebooku. 273 00:16:23,100 --> 00:16:26,670 To je iznimno složen API, a tu je tona što možete učiniti s njom, 274 00:16:26,670 --> 00:16:28,450 ali to je zapravo prilično jednostavan za korištenje. 275 00:16:28,450 --> 00:16:33,680 Ja ću početi tako da odete na graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 koji je moj jedinstveni naziv računa i naziv računa ili će biti 277 00:16:38,430 --> 00:16:43,710 neka vrsta riječi ako ste ga izabrali, ili to može biti samo niz brojeva. 278 00:16:43,710 --> 00:16:46,360 Ono što smo dobili natrag je prilično osnovne informacije. 279 00:16:46,360 --> 00:16:50,460 Vidimo da imam ime, koje je Billy, prezime, što je Janitsch. 280 00:16:50,460 --> 00:16:53,370 Tu je jedinstveni ID koji Facebook imam. 281 00:16:53,370 --> 00:16:57,920 Možete vidjeti da sam muško i da imam postavku jezika 282 00:16:57,920 --> 00:17:01,290 britanski engleski. 283 00:17:01,290 --> 00:17:03,490 Drugim riječima, mi smo vidjeli vrlo osnovne informacije ovdje. 284 00:17:03,490 --> 00:17:08,670 To je ne previše, ali to ne daje nam predodžbu o tome što je tamo. 285 00:17:08,670 --> 00:17:10,849 >> Mi možemo učiniti istu stvar za Davida Malan, na primjer. 286 00:17:10,849 --> 00:17:13,599 Mislim njegovo ime je dmalan. 287 00:17:13,599 --> 00:17:16,369 Vidimo David Malan ima jedinstveni ID. 288 00:17:16,369 --> 00:17:19,300 On ima ime, prezime, srednje ime, prezime. 289 00:17:19,300 --> 00:17:24,210 Također smo vidjeli da je on muškarac i ima svoj jezik skup na američkom engleskom. 290 00:17:24,210 --> 00:17:26,869 Drugim riječima, mi smo vidjeli prilično osnovne informacije ovdje. 291 00:17:26,869 --> 00:17:28,860 Sada, što se događa ako ćemo pokušati provjeriti nešto drugo? 292 00:17:28,860 --> 00:17:33,060 Ajmo reći da sam zainteresiran za ono što je David Malan je volio na Facebooku. 293 00:17:33,060 --> 00:17:36,860 Ja mogu učiniti / voli. Sada smo izvoditi u problem. 294 00:17:36,860 --> 00:17:39,280 Imamo neku pogrešku koja kaže pristupni token 295 00:17:39,280 --> 00:17:41,660 potrebno je zatražiti taj izvor. 296 00:17:41,660 --> 00:17:44,730 No, ako mislite o tome, da zapravo ima smisla, jer bi to bilo čudno 297 00:17:44,730 --> 00:17:47,830 ako bi mogli pristupiti svaki pojedini dio Facebookov baze podataka 298 00:17:47,830 --> 00:17:50,170 Upravo iz neke vrste jednostavnog API, zar ne? 299 00:17:50,170 --> 00:17:56,040 Drugim riječima, vjerojatno vaši podaci se ne može pristupiti svatko tko ga želi. 300 00:17:56,040 --> 00:17:58,330 >> Ova se pogreška je upravo ono što to znači. 301 00:17:58,330 --> 00:18:03,630 Neki API zahtijevaju određene dozvole kako bi pristupili svoje podatke. 302 00:18:03,630 --> 00:18:06,940 A čak i više naprednih API-ja, kao jedan Facebooku, 303 00:18:06,940 --> 00:18:09,840 zahtijevat će određene dozvole učiniti određene stvari. 304 00:18:09,840 --> 00:18:12,650 Ja mogu vidjeti ovaj osnovne informacije o Davida Malan. 305 00:18:12,650 --> 00:18:15,950 Vidim da je on muškarac i da on živi u SAD-u, 306 00:18:15,950 --> 00:18:19,270 ali ja stvarno ne mogu vidjeti ništa prošlosti da. 307 00:18:19,270 --> 00:18:23,050 Da biste dobili okolo ovaj, za sada, Facebook ima ovu lijepu alat 308 00:18:23,050 --> 00:18:27,690 koji je graf API istraživač, a ideja da je možete sortirati od 309 00:18:27,690 --> 00:18:31,880 make up dozvole za sebe na temelju vlastitog računa 310 00:18:31,880 --> 00:18:35,680 i onda vidjeti stvari koje posebno računa možete pogledati. 311 00:18:35,680 --> 00:18:45,120 Na primjer, ako mi je činiti graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 ups, valjda sam ponovno provjeriti moju token ovdje. 313 00:18:53,510 --> 00:18:55,950 Ok. 314 00:18:55,950 --> 00:19:01,740 Ako sam to učiniti opet, super, sad vidim da se ovaj objekt natrag 315 00:19:01,740 --> 00:19:06,300 koji kaže da mi se sviđa bazen rezanci, koji su u kategoriji Igre i igračke. 316 00:19:06,300 --> 00:19:08,620 Volim morževe, koji su u kategoriji životinja. 317 00:19:08,620 --> 00:19:10,180 To su moja stvarna Facebook sviđa. 318 00:19:10,180 --> 00:19:13,280 Oni su vrsta neugodno. 319 00:19:13,280 --> 00:19:16,090 >> No, možemo vidjeti taj podatak se sve vraća u JSON. 320 00:19:16,090 --> 00:19:18,160 To je prilično čitljiv. 321 00:19:18,160 --> 00:19:20,970 Drugim riječima, mi imamo tu mapiranje podataka na nekakvoj niz, 322 00:19:20,970 --> 00:19:25,220 i svaki element ovog niza je hashmap koja mapira 323 00:19:25,220 --> 00:19:28,530 ime kao i kategorija kao što su. 324 00:19:28,530 --> 00:19:31,240 Svaki poput ima jedinstveni ID. 325 00:19:31,240 --> 00:19:34,510 Tu su sve vrste različitih stvari podataka koje možemo dobiti, 326 00:19:34,510 --> 00:19:37,980 a ako ste zainteresirani za korištenje Facebook API za CS50 konačni projekt 327 00:19:37,980 --> 00:19:40,720 ili za nešto kao da je to zapravo sasvim izvodljiv. 328 00:19:40,720 --> 00:19:44,260 Uglavnom kako ste dobili oko autentičnosti stvar je Facebook 329 00:19:44,260 --> 00:19:48,030 koristi sustav koji se zove OAuth, ili otvoriti autentifikaciju, 330 00:19:48,030 --> 00:19:52,870 i ne želim da se u njoj sada, jer OAuth ili druga vrsta 331 00:19:52,870 --> 00:19:56,060 autentikacije sklon varirati puno između različitih API-ja, 332 00:19:56,060 --> 00:19:58,320 tako da sam mogao provesti dugo vremena ide preko svake jedne, 333 00:19:58,320 --> 00:20:01,170 ali oni su zapravo prilično samorazumljivo. 334 00:20:01,170 --> 00:20:04,050 >> Ako Google Facebook API je vrlo čitljiva. 335 00:20:04,050 --> 00:20:06,670 Tu je cijeli spec.. 336 00:20:06,670 --> 00:20:10,210 Na primjer, ovo je dokumentacija za Facebook API, 337 00:20:10,210 --> 00:20:14,170 i možete vidjeti da sam na stranici User, tako da ja mogu naučiti sve o različitim vrstama stvari 338 00:20:14,170 --> 00:20:17,170 koji su dostupni da se što se tiče podataka 339 00:20:17,170 --> 00:20:21,550 i, također, različite dozvole koje trebam da bi im pristupili. 340 00:20:21,550 --> 00:20:25,470 Kao što smo vidjeli, ne trebamo dozvolu za pristup ime ili spol, 341 00:20:25,470 --> 00:20:29,380 ali izvan toga trebamo dozvole za većinu stvari. 342 00:20:29,380 --> 00:20:33,040 Ova stranica, ili bolje rečeno, ova web stranica također će vam reći kako doći 343 00:20:33,040 --> 00:20:35,640 Token biti u mogućnosti da se provjeri. 344 00:20:35,640 --> 00:20:39,290 Većina autentičnosti sustava koristiti neku vrstu tokena 345 00:20:39,290 --> 00:20:42,880 gdje ćete dobiti ovu jedinstvenu vrijednost, što je jako dugo i slučajni niz, 346 00:20:42,880 --> 00:20:46,240 i na taj način oni mogu povezati zahtjev da ste čineći s vama. 347 00:20:46,240 --> 00:20:50,560 Drugim riječima, oni znaju da ne radite ništa sumnjivo sa svojim podacima. 348 00:20:50,560 --> 00:20:53,340 Oni znaju točno što ste uzimajući. 349 00:20:53,340 --> 00:20:56,180 Oni također znaju da imate dozvolu za pregled tu informaciju. 350 00:20:56,180 --> 00:20:59,110 >> Ako ste napravili Facebook app i vaš app ima određene korisnike, 351 00:20:59,110 --> 00:21:03,380 i onim korisnicima omogućili da aplikaciji pristup određenim dijelovima svog profila, 352 00:21:03,380 --> 00:21:07,790 onda ono što API ključ ili tokena da je aplikacija pomoću 353 00:21:07,790 --> 00:21:11,090 će moći pristupiti podacima za one korisnike. 354 00:21:11,090 --> 00:21:13,780 To možda zvuči komplicirano, ali to nije previše loše, 355 00:21:13,780 --> 00:21:16,810 i ako želite koristiti Facebook ja bih visoko preporučiti da 356 00:21:16,810 --> 00:21:18,990 razmislite igranje okolo sa svojim API. 357 00:21:18,990 --> 00:21:21,610 To je vrlo cool, a vi možete učiniti mnogo različitih stvari s njim. 358 00:21:21,610 --> 00:21:24,880 Ako korisnik daje vam te dozvole čak možete vratiti na API 359 00:21:24,880 --> 00:21:28,820 i reći želim da se zapravo post na ovom korisničkom zidu, ili želim ih objaviti fotografiju, 360 00:21:28,820 --> 00:21:32,390 i to je razlog zašto na feed ponekad ćete dobiti one dosadne stvari 361 00:21:32,390 --> 00:21:37,840 Rečenica tvoj prijatelj je gledao ovaj video na nekakvoj čudan stranice ili nešto slično. 362 00:21:37,840 --> 00:21:43,120 To je zato da app je odobren pristup na post o toj osobi zidu. 363 00:21:43,120 --> 00:21:48,350 Ideja ukupnom poretku, Facebook API prilično je komplicirano, ali također jako korisno. 364 00:21:48,350 --> 00:21:53,220 Definitivno vrijedno checking out ako ste još uvijek u potrazi za konačni projekt. 365 00:21:53,220 --> 00:21:57,930 >> Drugi paket API da ću ići preko je CS50 API. 366 00:21:57,930 --> 00:22:00,070 Dopustite mi povećali ovdje. 367 00:22:00,070 --> 00:22:03,390 CS50 zapravo je staviti zajedno cijeli niz API-ja 368 00:22:03,390 --> 00:22:07,080 koje možete koristiti za konačni projekt ili samo za ono što ste odluka. 369 00:22:07,080 --> 00:22:12,830 I oni su uglavnom vezane Harvarda, i oni se razlikuju od HUDS izbornika, 370 00:22:12,830 --> 00:22:17,780 na primjer, na ovom Harvard Događanja API, koji će vam pristup popis 371 00:22:17,780 --> 00:22:21,290 različitih događaja koji se događa na Harvardu i takve stvari. 372 00:22:21,290 --> 00:22:24,510 I tako možemo kliknuti na bilo kojem od tih i dobiti spec. za njega, 373 00:22:24,510 --> 00:22:28,090 koje ćete moći pronaći za bilo API, a ideja je 374 00:22:28,090 --> 00:22:33,920 to vam omogućuje da znate,, posebno što se zatražiti od API i kako ga tražiti. 375 00:22:33,920 --> 00:22:37,370 Drugim riječima, ako želim sve događaje koji se događaju sutra 376 00:22:37,370 --> 00:22:42,550 onda moram očito da je to taj datum da želim u određenom formatu, 377 00:22:42,550 --> 00:22:46,030 i B, to će mi reći točno ono što se događa dati natrag na mene. 378 00:22:46,030 --> 00:22:48,590 To će reći da ću se vratiti vam ovaj JSON objekt, 379 00:22:48,590 --> 00:22:50,960 ili kao što možete vidjeti, postoje različiti oblici. 380 00:22:50,960 --> 00:22:54,050 >> Također možete vratiti podatke kao CSV, na primjer. 381 00:22:54,050 --> 00:22:57,620 Ali znate kako je točno da su podaci će izgledati kada ga vratiti 382 00:22:57,620 --> 00:23:00,610 tako da možete očekivati ​​da će učiniti određene stvari s njim. 383 00:23:00,610 --> 00:23:07,240 Možemo pomaknite se dolje i vidjeti, na primjer, ako želimo da upita API 384 00:23:07,240 --> 00:23:11,500 da biste dobili kalendar, onda možemo koristiti ovaj poseban URL 385 00:23:11,500 --> 00:23:16,480 i dati mu neke parametre koji su idući u biti podaci koje želimo točno. 386 00:23:16,480 --> 00:23:19,540 I tako, ako želimo podatke natrag u određenom formatu, 387 00:23:19,540 --> 00:23:23,790 onda možemo ga pitati za izlaz podataka u CSV, 388 00:23:23,790 --> 00:23:27,700 i to je samo još jedan parametar koji smo prolazi na API. 389 00:23:27,700 --> 00:23:29,210 Mnogo cool stvari koje treba učiniti tamo. 390 00:23:29,210 --> 00:23:32,550 Ja bi svakako preporučujemo checking out CS50 API. 391 00:23:32,550 --> 00:23:36,000 >> Idem pogledati ovaj API Harvard Prehrambeno posebno za malo. 392 00:23:36,000 --> 00:23:39,870 Jedna stvar sam zapravo osmišljen je ova web stranica Harvard Noms, 393 00:23:39,870 --> 00:23:44,930 koja koristi CS50 Hrana API za preuzimanje HUDS izbornik za taj dan. 394 00:23:44,930 --> 00:23:50,400 A za proširenje školskih ljudi, HUDS je blagovaonica usluga na Harvardu. 395 00:23:50,400 --> 00:23:55,130 Ono što dobivate je ovo stranica koja sadrži sve obroke za taj dan, pa ćemo vidjeti ručak. 396 00:23:55,130 --> 00:23:58,130 Imamo nekoliko različitih kategorija. Imamo grah i cijela zrna stanicu. 397 00:23:58,130 --> 00:24:00,340 Imamo smeđa riža stanicu. 398 00:24:00,340 --> 00:24:03,360 Možemo vidjeti za marendu smo ovih nekoliko prehrambenih artikala. 399 00:24:03,360 --> 00:24:07,030 Ako kliknete na njih, onda smo dobili informaciju prehrane. 400 00:24:07,030 --> 00:24:12,240 Vidite ovo je prehrana informacije za grejpa, u slučaju da se pitate. 401 00:24:12,240 --> 00:24:14,870 I tako opet, idemo na peer u leđa kraj ovdje malo 402 00:24:14,870 --> 00:24:18,530 i vidjeti što se točno to radi kako bi dobili ove podatke. 403 00:24:18,530 --> 00:24:21,710 A što se ispostavilo da nije zapravo biti vrlo složen na sve. 404 00:24:21,710 --> 00:24:28,720 Ova datoteka izgleda malo neuredan, ali imajte na umu da je to rukovanje cijelu web stranicu, 405 00:24:28,720 --> 00:24:34,130 i ako sam se pomaknite prema dolje vidimo tu funkciju podataka promjena. 406 00:24:34,130 --> 00:24:36,630 >> Sada, samo da bude jasno, to je zapisano u CoffeeScript, 407 00:24:36,630 --> 00:24:39,570 koji je jezik koji vjerojatno nisu vidjeli prije. 408 00:24:39,570 --> 00:24:44,810 No, to je prilično čitljiv, tako da ću proći kroz njega kao da je pseudocode. 409 00:24:44,810 --> 00:24:49,080 Promijeni datum je funkcija koja će se u ovom datumu vrijednosti, 410 00:24:49,080 --> 00:24:51,740 a također će se uzeti u prvi, koji mi nije stalo koliko. 411 00:24:51,740 --> 00:24:54,110 No, važna stvar je da je taj datum, 412 00:24:54,110 --> 00:25:00,080 i taj datum je dan koji želimo zatražiti sve prehrambene proizvode za. 413 00:25:00,080 --> 00:25:04,030 I onda vidite da imamo malo sintaksu ovdje, 414 00:25:04,030 --> 00:25:09,000 koja je u osnovi parsiranje taj datum u čitljivom obliku. 415 00:25:09,000 --> 00:25:11,920 Drugim riječima, API zahtijeva datum u određenom formatu. 416 00:25:11,920 --> 00:25:17,390 Ne možete samo reći 16. studenoga 2012 AD. 417 00:25:17,390 --> 00:25:20,320 To ne će znati što učiniti s tim. Ona želi datuma u određenom obliku. 418 00:25:20,320 --> 00:25:23,230 Svi mi radimo ovdje se to daje točno taj format, 419 00:25:23,230 --> 00:25:26,520 koja je godina vrijednost, a zatim crtica, mjesec vrijednost, 420 00:25:26,520 --> 00:25:29,420 druga crtica i datum vrijednost. 421 00:25:29,420 --> 00:25:34,910 I mi također kažu mi želimo da podaci budu izlaz u JSON. 422 00:25:34,910 --> 00:25:37,560 >> Sada činimo ovu AJAX zahtjev, a kao što sam spomenuo ranije, 423 00:25:37,560 --> 00:25:41,680 jQuery ima ovu super korisnu funkciju koja AJAX sve što trebate učiniti je odrediti 424 00:25:41,680 --> 00:25:45,780 nekoliko parametara ovdje dolje, i ona će vam vratiti upravo ono što želite. 425 00:25:45,780 --> 00:25:50,490 Mi smo ga reći da URL želimo da ide na ovo CS50 Hrana API 426 00:25:50,490 --> 00:25:52,270 koje smo dobili od spec.. 427 00:25:52,270 --> 00:25:56,730 Mi kažemo da želimo podatke u JSON i da 428 00:25:56,730 --> 00:25:59,490 idemo dati ove podatke koje smo definirane ovdje. 429 00:25:59,490 --> 00:26:02,670 Ovo je dan želimo namirnica za. 430 00:26:02,670 --> 00:26:07,790 I onda sve što morate učiniti je definirati nekakav uspjeh funkcije, 431 00:26:07,790 --> 00:26:11,980 koja je u osnovi ono što se događa kada API vraća te podatke. 432 00:26:11,980 --> 00:26:15,490 Drugim riječima, mi smo pakiran do svih parametara koje želimo, 433 00:26:15,490 --> 00:26:20,530 koja je u ovom slučaju je dan da ga želimo i činjenica da ga želimo u JSON, 434 00:26:20,530 --> 00:26:23,840 , a mi ga poslao na API-ja, tako da sada API govori, ok, 435 00:26:23,840 --> 00:26:26,350 Ovdje se vaši podaci, ja sam ga dobio natrag za vas. 436 00:26:26,350 --> 00:26:29,930 Imamo uspjeh funkciju, što znači s obzirom da je API 437 00:26:29,930 --> 00:26:32,230 uspješno vraća neke podatke, što ćemo učiniti s njim? 438 00:26:32,230 --> 00:26:35,980 >> I ispada da je sve što učiniti je nazvati ova funkcija ažuriranje izbornik 439 00:26:35,980 --> 00:26:42,680 s bilo API se vratio, tako da možemo tražiti da 440 00:26:42,680 --> 00:26:47,970 i vidjeti da je sve što radimo je korištenjem hrpa nove sintakse ovdje 441 00:26:47,970 --> 00:26:52,220 ažurirati HTML i umetnite ove nove podatke. 442 00:26:52,220 --> 00:26:56,580 Što to omogućuje je imamo ove strelice na obje strane, a možemo kliknuti, 443 00:26:56,580 --> 00:27:01,060 i sada gledamo podatke za sljedeći dan i opet za sljedeći dan, 444 00:27:01,060 --> 00:27:04,820 i svaki put kad se ažuriranje tu vrijednost datuma i upite API, 445 00:27:04,820 --> 00:27:07,510 dobivanje natrag neke podatke i stavljajući ga u mjestu. 446 00:27:07,510 --> 00:27:10,590 Opet, što možete vidjeti, super, super koristan. 447 00:27:10,590 --> 00:27:14,410 Ovaj app Trebalo mi je nekoliko sati da hack zajedno, 448 00:27:14,410 --> 00:27:20,140 i imam malo više iskustva, očito, ali vaš CS50 konačni projekt 449 00:27:20,140 --> 00:27:22,870 Možete pogledati nešto vrlo slično ovome. 450 00:27:22,870 --> 00:27:29,540 >> API su super moćan za iznos od napora da oni uzimaju. 451 00:27:29,540 --> 00:27:32,800 Posljednja stvar ću ići preko je malo više API šire. 452 00:27:32,800 --> 00:27:35,480 Neću se koliko u njima što se tiče onoga što im je činiti posebno, 453 00:27:35,480 --> 00:27:38,740 ali ja ću vam dati ideju o tome što je vani. 454 00:27:38,740 --> 00:27:42,700 2 stvarno korisni one, ako ste zainteresirani u analizi podataka ili vizualizaciju 455 00:27:42,700 --> 00:27:45,960 ili bilo što slično, su Freebase i Wikipedia. 456 00:27:45,960 --> 00:27:49,800 Wikipedia-vjerojatno svi znate, je besplatna online enciklopedija, 457 00:27:49,800 --> 00:27:53,230 i to je zapravo API, pa ako želite, na primjer, 458 00:27:53,230 --> 00:27:56,250 dobiti sve tekstove i članke za hobotnicom 459 00:27:56,250 --> 00:27:58,030 možete vrlo lako učiniti. 460 00:27:58,030 --> 00:28:02,300 Dovoljno je reći hej, Wikipedia API, ja bih podatke vratio kao ovaj, 461 00:28:02,300 --> 00:28:07,010 i ja bih se sviđa u ovom formatu, a članak Htio bih je hobotnica, 462 00:28:07,010 --> 00:28:09,820 i vrlo brzo će vam vratiti tu informaciju. 463 00:28:09,820 --> 00:28:12,230 To može biti jako korisno ako želite napraviti nekakvu stranice 464 00:28:12,230 --> 00:28:16,200 da je bolje preglednik za Wikipediji ili nešto slično. 465 00:28:16,200 --> 00:28:21,350 >> Slobodna baza je vrsta slična, iako je to malo teže što se tiče API. 466 00:28:21,350 --> 00:28:24,390 Slobodna baza je poput Wikipedije u smislu da je online enciklopedija 467 00:28:24,390 --> 00:28:29,050 koji sadrži puno i puno različitih podataka o svim vrstama različitim temama, 468 00:28:29,050 --> 00:28:33,150 ali to je pohranjen u relacijsku bazu podataka, što je malo drugačiji od Wikipedije. 469 00:28:33,150 --> 00:28:36,410 Wikipedija ima svoje članke i članke vezane za drugim člancima, 470 00:28:36,410 --> 00:28:38,860 ali za najveći dio, ako želite podatke za hobotnice, 471 00:28:38,860 --> 00:28:41,990 idete na hobotnice članka, dobiti te podatke, i imate gomilu teksta 472 00:28:41,990 --> 00:28:43,830 o hobotnicama, tako da je super. 473 00:28:43,830 --> 00:28:46,870 Freebase radi u malo više komplicirano način u to 474 00:28:46,870 --> 00:28:48,930 sve povezane jedna s drugom. 475 00:28:48,930 --> 00:28:52,620 Drugim riječima, ako smo u potrazi za hobotnicom 476 00:28:52,620 --> 00:28:54,940 onda ima hrpa kategorija povezane s njom. 477 00:28:54,940 --> 00:28:57,920 >> Na primjer, to je životinja, ona živi pod vodom, 478 00:28:57,920 --> 00:28:59,710 ona ima određenu tjelesnu temperaturu. 479 00:28:59,710 --> 00:29:01,210 Ne znam. 480 00:29:01,210 --> 00:29:04,230 I sve ove kategorije su linkovi na drugim mjestima gdje možete otići 481 00:29:04,230 --> 00:29:06,640 vidjeti stvari s tim istoj kategoriji. 482 00:29:06,640 --> 00:29:13,450 Drugim riječima, skup podataka hobotnica će sadržavati link na skup podataka za sve životinje, 483 00:29:13,450 --> 00:29:16,790 i da bi me pustiti kretati u bazi podataka jako brzo. 484 00:29:16,790 --> 00:29:21,740 To može biti vrlo korisno ako radite nešto poput usporedbe. 485 00:29:21,740 --> 00:29:24,490 Drugim riječima, s obzirom na određena stvar, želite vidjeti 486 00:29:24,490 --> 00:29:27,890 što drugo što je povezano i vidjeti što drugi to nije u rodu. 487 00:29:27,890 --> 00:29:30,700 To je vrsta stvar. To može biti korisno u brojne načine. 488 00:29:30,700 --> 00:29:34,250 Ako ste u potrazi za više od izazov i da bi mogli napraviti neke složenije stvari 489 00:29:34,250 --> 00:29:38,740 Ja bi uzeti u obzir uzimanje pogledati Freebase API. 490 00:29:38,740 --> 00:29:44,670 No, uglavnom, Wikipedija je vrlo jednostavna mjesto da ide što se tiče dobivanja informacija. 491 00:29:44,670 --> 00:29:48,340 Drugo mjesto koje ću pogledati je Last.fm, a ja zapravo idem na licu mjesta 492 00:29:48,340 --> 00:29:53,800 u slučaju neki ljudi nisu upoznati, ali Last.fm je u osnovi glazba 493 00:29:53,800 --> 00:29:57,220 okusa i preporuke web stranice. 494 00:29:57,220 --> 00:29:59,000 Možete napraviti račun. 495 00:29:59,000 --> 00:30:04,250 Možete početi upload glazbu iz music playera 496 00:30:04,250 --> 00:30:08,020 na web stranici, a zapravo će početi dajući vam glazbene preporuke 497 00:30:08,020 --> 00:30:10,030 na temelju onoga što slušati. 498 00:30:10,030 --> 00:30:14,270 >> Na primjer, ako idete na svoj profil stranica-to je moje- 499 00:30:14,270 --> 00:30:18,180 možete vidjeti imate popis nedavno slušao pjesme. 500 00:30:18,180 --> 00:30:22,550 Možete vidjeti ukupni omiljene umjetnike, sve takve stvari, 501 00:30:22,550 --> 00:30:25,280 i opet, tu je velika API iza Last.fm, 502 00:30:25,280 --> 00:30:29,360  i možete ga koristiti za napraviti puno i puno stvarno cool stvari. 503 00:30:29,360 --> 00:30:38,870 Na primjer, ja ću otići kod prijatelja stranici koja ima ove stranice Last.fm Alati. 504 00:30:38,870 --> 00:30:42,380 To je zapravo drugi platforma koja je izgrađena na Last.fm API, 505 00:30:42,380 --> 00:30:45,420 i to nekoliko lijepih zanimljivih stvari. 506 00:30:45,420 --> 00:30:50,260 Ako sam se prijaviti sa svojim korisničkim imenom, na primjer, 507 00:30:50,260 --> 00:30:53,110 Mogu ga pitati za generiranje tag oblak, primjerice, 508 00:30:53,110 --> 00:30:56,480 i ono što se događa učiniti je dati mi vratiti sliku 509 00:30:56,480 --> 00:30:59,850 svi različiti žanrovi i takve stvari koje volim slušati. 510 00:30:59,850 --> 00:31:01,410 Kako se to radi? 511 00:31:01,410 --> 00:31:05,670 Vrlo osnovi to je govoreći na Last.fm API evo ovaj korisnik. 512 00:31:05,670 --> 00:31:10,710 Volio bih znati žanr svakoj pjesmi koju su ikada slušali, 513 00:31:10,710 --> 00:31:15,130 i što možete učiniti da što prilično jednostavan AJAX poziv na Last.fm API. 514 00:31:15,130 --> 00:31:18,990 Vi ćete se vratiti veliki popis, a onda očito neke druge stvari se radi 515 00:31:18,990 --> 00:31:22,280 da se to pretvorilo u riječi oblak, ali možete vidjeti ukupni 516 00:31:22,280 --> 00:31:25,850 to je vrlo lako pristupiti i vrlo jednostavan za korištenje. 517 00:31:25,850 --> 00:31:30,750 Stvarno lijepo za niz stvari. 518 00:31:30,750 --> 00:31:35,940 >> Mislim da je o svemu ću reći u ukupnom poretku. 519 00:31:35,940 --> 00:31:39,040 Jedna posljednja stvar ću spomenuti o API-u općenito je da 520 00:31:39,040 --> 00:31:41,840 ponekad ćete naići na nešto što se zove stopa ograničava, 521 00:31:41,840 --> 00:31:44,940 i ideja stopa ograničavajući se vi ne želite da zlostavljaju API. 522 00:31:44,940 --> 00:31:48,130 Drugim riječima, to je stvarno lijepo da puno tih stranica imaju API 523 00:31:48,130 --> 00:31:51,070 da možete otići i koristiti besplatno. 524 00:31:51,070 --> 00:31:54,460 Međutim, ako radite milijune ili milijarde zahtjeva po danu, 525 00:31:54,460 --> 00:31:57,610 Primjerice, ako ste zaglavili u beskonačnu petlju da beskrajno je upite 526 00:31:57,610 --> 00:32:00,680 nekakav API i dobivanje natrag veliku količinu podataka, 527 00:32:00,680 --> 00:32:04,570 očito da to nije dobro, pa što puno API učiniti je imati ova stopa ograničavanja značajku 528 00:32:04,570 --> 00:32:09,970 da kaže da može napraviti samo 1.000 zahtjeva dnevno po IP adresi ili nešto slično. 529 00:32:09,970 --> 00:32:12,540 A ako radite puno testiranja i takve stvari, 530 00:32:12,540 --> 00:32:14,890 ponekad ćete naići na to, i odjednom to će vas isključiti 531 00:32:14,890 --> 00:32:18,280 i reći ne, ja ne dajući vam bilo više podataka. 532 00:32:18,280 --> 00:32:20,000 >> Što želite učiniti je igrati po pravilima. 533 00:32:20,000 --> 00:32:22,950 Vi želite da biste bili sigurni da ste pročitali API spec. pažljivo. 534 00:32:22,950 --> 00:32:26,330 Ako on ima određena pravila priključen na njega, kao da samo može napraviti X upita dnevno 535 00:32:26,330 --> 00:32:30,000 ili možete pristupiti jedino dio baze podataka određeni broj puta 536 00:32:30,000 --> 00:32:32,900 ili nešto slično što želite da biste bili sigurni da se držati toga. 537 00:32:32,900 --> 00:32:38,360 Dokle god igrati unutar tih pravila, vjerojatno ćete imati jako lijepo vrijeme koristeći API. 538 00:32:38,360 --> 00:32:42,030 Vaš ukupni takeaway je API-ovi su jako, jako korisno. 539 00:32:42,030 --> 00:32:45,610 >> Tu je API za gotovo bilo velikih web servis vani. 540 00:32:45,610 --> 00:32:50,700 Prilično mnogo bilo koji dio Google Alati Suite, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 Gmail, Google Kalendar, sve te stvari imaju API. 542 00:32:54,390 --> 00:32:58,280 Možete ih koristiti za obje dobiti podatke od poslužitelja i slati podatke na server. 543 00:32:58,280 --> 00:33:00,870 Drugim riječima, ako ste htjeli napraviti kalendar app koji može ažurirati 544 00:33:00,870 --> 00:33:04,190 nečija Google Kalendar, tu je API za to. 545 00:33:04,190 --> 00:33:07,810 Ako želite napraviti nešto što će vam reći gdje 546 00:33:07,810 --> 00:33:12,530 položaj određene adrese je možete koristiti Google Maps API za to. 547 00:33:12,530 --> 00:33:15,860 API su fantastično korisno, a oni su posvuda. 548 00:33:15,860 --> 00:33:18,700 Ako ste zainteresirani za nekakvu ideju, 549 00:33:18,700 --> 00:33:22,170 tu je vjerojatno povezano API koje možete koristiti da biste dobili puno podataka 550 00:33:22,170 --> 00:33:25,060 vrlo brzo i vrlo jednostavno. 551 00:33:25,060 --> 00:33:28,140 >> Ako ste još uvijek u potrazi za projekt ili ako baš želite poigrati 552 00:33:28,140 --> 00:33:31,820 s nečim u cjelini, API-ovi su definitivno isplati raditi. 553 00:33:31,820 --> 00:33:37,200 Hvala, i ja sam rado odgovoriti na sva pitanja koja ste vi svibanj imati. 554 00:33:37,200 --> 00:33:44,900 Ok, hvala puno. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]