1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Seminar] [un programator de Introducere în API-uri] 2 00:00:02,480 --> 00:00:04,059 [Billy Janitsch] [Universitatea Harvard] [Tommy MacWilliam] 3 00:00:04,059 --> 00:00:08,220 [Acest lucru este CS50.] [CS50.TV] 4 00:00:08,220 --> 00:00:12,100 >> Bună, toata lumea, eu sunt Billy, iar astăzi am de gând să fie vorba despre API-uri, 5 00:00:12,100 --> 00:00:15,220 sau interfețe de programare a aplicațiilor, 6 00:00:15,220 --> 00:00:20,040 în special în contextul CS50 proiectelor finale și chestii din astea. 7 00:00:20,040 --> 00:00:22,490 În general, ceea ce este un API? 8 00:00:22,490 --> 00:00:25,530 În termeni foarte generali, e un fel de om de mijloc care permite 2 bucati 9 00:00:25,530 --> 00:00:28,610 de software pentru a comunica unul cu altul. 10 00:00:28,610 --> 00:00:32,530 Asta e un fel de definiție foarte largă și nu este relevantă pentru că ceea ce căutăm la. 11 00:00:32,530 --> 00:00:35,450 Ceea ce ne dorim cu adevarat este un fel de cale de mijloc util 12 00:00:35,450 --> 00:00:40,570 pentru a comunica cu un fel de baze de date pe undeva. 13 00:00:40,570 --> 00:00:43,310 >> Iată o diagramă, și practic ideea este că 14 00:00:43,310 --> 00:00:46,790 suntem o cerere, și dorim pentru a obține date dintr-o bază de date, 15 00:00:46,790 --> 00:00:49,570 dar nu vrem pentru a interoga baza de date în mod direct. 16 00:00:49,570 --> 00:00:52,710 În schimb vrem să trecem prin acest tip de om de mijloc, API. 17 00:00:52,710 --> 00:00:55,440 Ideea din spatele care este numărul 2 și 3 de pe diagramă 18 00:00:55,440 --> 00:00:57,750 sunt atât de gând să fie foarte complicat și murdar. 19 00:00:57,750 --> 00:00:59,960 Cu alte cuvinte, atunci când API este interogarea bazei de date, 20 00:00:59,960 --> 00:01:03,300 este, probabil, va fi cu ajutorul tabelelor SQL și toate de acest gen de lucruri, 21 00:01:03,300 --> 00:01:05,489 și am învățat un pic despre asta în CS50, dar, în general, 22 00:01:05,489 --> 00:01:07,590 ați observat că este un pic de o durere. 23 00:01:07,590 --> 00:01:10,590 Aceasta devine foarte, foarte complicat și murdar, mai ales atunci când faci 24 00:01:10,590 --> 00:01:12,530 interogări complexe și că astfel de lucruri. 25 00:01:12,530 --> 00:01:15,960 >> Ceea ce ne dorim cu adevarat este un fel de mod util și simplu 26 00:01:15,960 --> 00:01:19,780 pentru a obține aceste date, și asta e ideea din spatele numerelor 1 și 4 de pe diagramă. 27 00:01:19,780 --> 00:01:23,600 Cu alte cuvinte, ne dorim un mod foarte simplu de a spune ceea ce API pentru a obține pentru noi 28 00:01:23,600 --> 00:01:27,760 și un mod foarte simplu de a obține aceste date înapoi. 29 00:01:27,760 --> 00:01:33,020 Există o singură cale principală că datele sunt, de obicei, trimise și primite, 30 00:01:33,020 --> 00:01:36,490 care este JSON, sau obiect Notații JavaScript. 31 00:01:36,490 --> 00:01:40,370 Asta poate varia un pic în ceea ce privește modul în care trimiteți cererea API. 32 00:01:40,370 --> 00:01:43,210 Cu alte cuvinte, daca vrei ceva anumită cantitate de date, 33 00:01:43,210 --> 00:01:46,670 cum să vă spun API pentru a obține că datele pot varia un pic. 34 00:01:46,670 --> 00:01:49,210 De obicei, este vorba de a face un fel de cerere de rețea. 35 00:01:49,210 --> 00:01:53,130 Cu alte cuvinte, accesul la un fel de URL-ul care va spune API 36 00:01:53,130 --> 00:01:56,190 exact ceea ce vrei, dar datele sunt aproape întotdeauna trimis înapoi, 37 00:01:56,190 --> 00:01:59,530 cu alte cuvinte, numărul 4 în JSON. 38 00:01:59,530 --> 00:02:01,030 >> Ce este mai exact JSON? 39 00:02:01,030 --> 00:02:03,030 Așa cum am spus, JavaScript Object Notation. 40 00:02:03,030 --> 00:02:07,090 E practic universal standard pentru transmiterea și primirea de date. 41 00:02:07,090 --> 00:02:11,410 Ideea este că aveți aceste 3 categorii de lucruri. 42 00:02:11,410 --> 00:02:13,540 Ai tablouri, hashmaps, si a primitivelor. 43 00:02:13,540 --> 00:02:16,580 Matrice și hashmaps te-am uitat la un pic în CS50, 44 00:02:16,580 --> 00:02:19,870 dar ai un fel de ajuns un sentiment foarte strictă a ceea ce sunt. 45 00:02:19,870 --> 00:02:22,780 Cu alte cuvinte, cu tablouri știi că ești genul legat, 46 00:02:22,780 --> 00:02:26,560 astfel încât să aveți doar un singur fel de tip care merge de-a lungul întregii matrice. 47 00:02:26,560 --> 00:02:29,310 JSON este mult mai indulgent cu chestii din astea. 48 00:02:29,310 --> 00:02:33,590 Practic ideea este să construiți acest obiect, 49 00:02:33,590 --> 00:02:36,270 care pot fi compuse din oricare dintre aceste 3 lucruri 50 00:02:36,270 --> 00:02:39,470 și poate fi compus din cele mai multe dintre ele, și ele pot fi imbricate. 51 00:02:39,470 --> 00:02:42,110 >> Aici e un fel de exemplu de JSON, 52 00:02:42,110 --> 00:02:47,910 care este aceste acolade aici reprezinta HashMap ta, 53 00:02:47,910 --> 00:02:51,400 și un HashMap este de fapt o mapare de la un fel de cheie 54 00:02:51,400 --> 00:02:53,340 la un fel de valoare. 55 00:02:53,340 --> 00:02:56,440 Veți vedea aici că avem cheia proprietăți, 56 00:02:56,440 --> 00:02:59,600 și că este de cartografiere pe o matrice, care este toată chestia asta. 57 00:02:59,600 --> 00:03:04,120 Vedem un alt element al HashMap, care este această isAwesome cheie, 58 00:03:04,120 --> 00:03:07,370 care hărțile la o valoare de primitiv adevărat, cu alte cuvinte, un boolean. 59 00:03:07,370 --> 00:03:09,420 Primitive pot fi siruri de caractere. Ele pot fi numere întregi. 60 00:03:09,420 --> 00:03:11,960 Ele pot fi bools, ceva de genul asta. 61 00:03:11,960 --> 00:03:18,410 Și veți vedea conținutul acestei matrice că punctele de proprietati pentru a dispune de 2 siruri de caractere în ea, 62 00:03:18,410 --> 00:03:20,050 auto-similar și minunat. 63 00:03:20,050 --> 00:03:27,410 Acestea sunt 2 proprietăți de JSON, și vedem că JSON este minunat. 64 00:03:27,410 --> 00:03:30,060 Pentru a uita-te la faptul că un pic mai atent am de gând să construiască 65 00:03:30,060 --> 00:03:32,870 un exemplu mai complex de JSON aici. 66 00:03:32,870 --> 00:03:37,000 >> Să începem cu o matrice, de exemplu, doar un array gol. 67 00:03:37,000 --> 00:03:39,180 Dar asta e un fel de plictisitor, așa că o să-l umple un pic, 68 00:03:39,180 --> 00:03:43,420 și așa cum am spus, tablouri in JSON sunt de tip legat, 69 00:03:43,420 --> 00:03:46,400 asa ca am putea avea, de asemenea, un șir de aici, care este hi, 70 00:03:46,400 --> 00:03:49,330 și că este un alt element de care matrice. 71 00:03:49,330 --> 00:03:53,450 Si de asemenea, am putea adauga un hashmapping aici, care se întâmplă să aibă o mapări câteva. 72 00:03:53,450 --> 00:04:00,470 O să aibă o mapare de la nume Billy șir. 73 00:04:00,470 --> 00:04:04,590 Avem o mapare de la numele lui Billy, și avem o cartografiere a 74 00:04:04,590 --> 00:04:10,860 culoarea preferata la albastru. 75 00:04:10,860 --> 00:04:12,700 Asta e practic un bun exemplu de JSON. 76 00:04:12,700 --> 00:04:18,160 Este un fel de devine în-Ups, au nevoie de o virgulă acolo-toate diferite părți ale acesteia. 77 00:04:18,160 --> 00:04:21,140 Din nou, nu e genul obligat la toate, astfel încât să puteți avea orice fel de tipuri de 78 00:04:21,140 --> 00:04:24,710 în interiorul tot ce vrei, iar ideea este că e auto-similara. 79 00:04:24,710 --> 00:04:28,830 Cu alte cuvinte, acest drept aici este un obiect JSON, cum este toată chestia asta, 80 00:04:28,830 --> 00:04:33,200 ca este doar asta, astfel încât să puteți avea un primitiv fi un obiect, 81 00:04:33,200 --> 00:04:35,680 o matrice să fie un obiect sau o HashMap fi un obiect. 82 00:04:35,680 --> 00:04:40,270 >> După cum puteți vedea un fel de, JSON este foarte, foarte util în măsura în care e atât de versatil. 83 00:04:40,270 --> 00:04:45,860 Puteți avea orice date posibile pe care le poate concepe stocate în JSON. 84 00:04:45,860 --> 00:04:47,900 Asta îl face un limbaj foarte frumos pentru a utiliza cu API-uri 85 00:04:47,900 --> 00:04:50,770 pentru că destul de mult înseamnă că indiferent de ceea ce datele pe care doriți 86 00:04:50,770 --> 00:04:54,270 acolo va fi o cale să-l înapoi în JSON. 87 00:04:54,270 --> 00:04:58,600 Câteva proprietăți care fac JSON deosebit de bun pentru acest fel de lucruri. 88 00:04:58,600 --> 00:05:02,270 După cum puteți vedea, în comparație cu o mulțime de lucruri pe care le-ați fost de lucru cu în CS50 89 00:05:02,270 --> 00:05:06,040 e relativ foarte ușor de citit și, de asemenea, foarte usor de a scrie. 90 00:05:06,040 --> 00:05:09,700 Puteți să-l liniuță daca vrei, ca și cum am facut in acest exemplu, 91 00:05:09,700 --> 00:05:12,990 care vă oferă o versiune frumos, destul de pe care puteți vedea foarte bine. 92 00:05:12,990 --> 00:05:17,150 Dar mai mult decât atât, este, de asemenea, ușor de citit și să scrie pentru un calculator. 93 00:05:17,150 --> 00:05:19,870 Cu alte cuvinte, este ușor pentru a analiza și ușor pentru a codifica, 94 00:05:19,870 --> 00:05:23,820 ceea ce înseamnă că e destul de rapid în ceea ce privește citirea datelor în cauză, 95 00:05:23,820 --> 00:05:26,460 și JSON pot fi generate foarte repede. 96 00:05:26,460 --> 00:05:30,300 >> Este, de asemenea, foarte usor de a accesa diferite părți ale JSON și chestii din astea. 97 00:05:30,300 --> 00:05:33,320 Asta e frumos, și, în plus, faptul că e auto-similare, 98 00:05:33,320 --> 00:05:36,090 cu alte cuvinte, faptul că puteți avea JSON JSON în cadrul JSON 99 00:05:36,090 --> 00:05:40,040 este foarte frumos pentru stocarea de date. 100 00:05:40,040 --> 00:05:45,490 O altă parte faptul că, în general, este foarte util in lucrul cu API-uri este jQuery. 101 00:05:45,490 --> 00:05:49,290 Ati invatat un pic de JavaScript, care este un mod frumos de 102 00:05:49,290 --> 00:05:53,710 pentru a manipula HTML și CSS într-un site web. 103 00:05:53,710 --> 00:05:57,190 Dar se poate să fie un fel de o durere la codul JavaScript în câmpie, 104 00:05:57,190 --> 00:05:59,810 în mare parte, deoarece JavaScript este un limbaj foarte detaliat. 105 00:05:59,810 --> 00:06:03,020 Trebuie să înveți o mulțime de sintaxă, și doar pentru a face lucruri foarte simple 106 00:06:03,020 --> 00:06:07,590 este nevoie de o mulțime de cod, astfel încât jQuery este o bibliotecă pentru JavaScript. 107 00:06:07,590 --> 00:06:09,800 Cu alte cuvinte, e un fișier JavaScript pe care le puteți încărca 108 00:06:09,800 --> 00:06:12,730 și de a folosi apoi funcțiile jQuery pentru a face anumite lucruri. 109 00:06:12,730 --> 00:06:15,670 Și jQuery practic face viața un întreg lot mai ușor. 110 00:06:15,670 --> 00:06:20,390 Aceasta simplifică ce s-ar lua sute de linii în JavaScript jos câteva rânduri în jQuery. 111 00:06:20,390 --> 00:06:24,430 >> E deosebit de util dacă utilizați API-uri, deoarece, în general, 112 00:06:24,430 --> 00:06:27,600 Cum veți fi accesarea API-uri este de a face cereri AJAX, 113 00:06:27,600 --> 00:06:30,130 și cred că David a menționat că în prelegerea AJAX cereri 114 00:06:30,130 --> 00:06:33,120 sunt, în general, atunci când faci o solicitare în rețea la un fel de server 115 00:06:33,120 --> 00:06:37,760 și obținerea înapoi un fel de date și actualizarea unei pagini instantaneu. 116 00:06:37,760 --> 00:06:41,840 Întrucât în ​​JavaScript clar că ar avea numere nebun de linii 117 00:06:41,840 --> 00:06:44,620 pentru a valida toate anteturile și de a face tot de acest gen de lucruri, 118 00:06:44,620 --> 00:06:46,810 jQuery are o funcție foarte simplu numit AJAX, 119 00:06:46,810 --> 00:06:51,760 și tot ce trebuie să faceți în AJAX este da parametrii pe care doriți să le dea API, 120 00:06:51,760 --> 00:06:56,830 locația de API și orice fel suplimentar de opțiunile pe care doriți să le configurați. 121 00:06:56,830 --> 00:07:02,480 E foarte, foarte frumos și foarte util pentru acest tip de lucru. 122 00:07:02,480 --> 00:07:06,970 Asta e tot ce avem nevoie pentru a începe să obtinerea mâinile noastre murdare în API-uri. 123 00:07:06,970 --> 00:07:10,220 >> Am de gând să aduc câteva exemple și de a explora proprietățile lor diferite 124 00:07:10,220 --> 00:07:13,150 și de ce acestea sunt utile pentru diferite tipuri de lucruri. 125 00:07:13,150 --> 00:07:15,570 Primul lucru pe care am să-ți arăt de fapt tine este ceva ce eu sunt de lucru pe 126 00:07:15,570 --> 00:07:18,310 la laborator de cercetare mea, care este o Viewer Ngram, 127 00:07:18,310 --> 00:07:23,270 și practic ideea unei Viewer este Ngram puteți căuta un fel de cuvânt 128 00:07:23,270 --> 00:07:28,840 sau o expresie și a vedea cât de des se apărut într-un anumit set de text-a lungul timpului. 129 00:07:28,840 --> 00:07:33,160 Acest exemplu aici este acest set de date de copii 130 00:07:33,160 --> 00:07:36,480 care s-au născut în New York, între 1920 și 2000. 131 00:07:36,480 --> 00:07:40,090 Noi putem căuta, de exemplu, pentru Jennifer nume, 132 00:07:40,090 --> 00:07:44,400 și vedem că de pre-1960 este într-adevăr nu a fost folosit tot atât de mult, 133 00:07:44,400 --> 00:07:48,900 și apoi ca vom intra in ani mai târziu este folosit mai mult devenind și mai mult. 134 00:07:48,900 --> 00:07:53,680 Putem face, de asemenea, comparații, așa că, dacă vom compara Jennifer, de exemplu, Thomas, 135 00:07:53,680 --> 00:07:56,520 putem vedea Thomas a fost destul de raspandita de-a lungul istoriei, 136 00:07:56,520 --> 00:07:58,780 întrucât Jennifer este un nume mult mai recenta. 137 00:07:58,780 --> 00:08:00,590 Putem face astfel de lucruri. 138 00:08:00,590 --> 00:08:02,460 >> Cum face acest lucru aplicație? 139 00:08:02,460 --> 00:08:06,030 Practic, acesta funcționează prin intermediul unui API. 140 00:08:06,030 --> 00:08:08,660 Cu alte cuvinte, avem anumiți parametri aici. 141 00:08:08,660 --> 00:08:11,360 Avem parametrii a ceea ce suntem de fapt, în căutarea, 142 00:08:11,360 --> 00:08:13,720 care sunt aceste nume, și apoi avem câteva proprietăți de alte, 143 00:08:13,720 --> 00:08:16,570 cum ar fi axa Y și axa X. 144 00:08:16,570 --> 00:08:18,440 Puteti vedea, avem câteva opțiuni diferite în ceea ce privește 145 00:08:18,440 --> 00:08:20,860 Rezoluția de timp pentru a utiliza și chestii din astea. 146 00:08:20,860 --> 00:08:26,700 Avem aceste opțiuni în ceea ce privește ceea ce doresc de fapt datele pe care le de baza de date, 147 00:08:26,700 --> 00:08:29,400 și vrem să ajungem ca date înapoi într-un mod util. 148 00:08:29,400 --> 00:08:34,020 De obicei, în cazul în care am fost interogarea bazei de date în mod direct că ar fi cumva o durere de a face 149 00:08:34,020 --> 00:08:38,970 deoarece se presupune ca aceste date despre nume de copii locuiește într-o bază de date pe undeva, 150 00:08:38,970 --> 00:08:42,789 și ar fi foarte complicat să trebuiască să-l interoga manual 151 00:08:42,789 --> 00:08:45,830 și decide exact ce date să se întoarcă. 152 00:08:45,830 --> 00:08:49,300 Cu alte cuvinte, ne pasă doar despre Jennifer Thomas și, în acest caz, 153 00:08:49,300 --> 00:08:53,410 și ne pasă doar de pe o anumită axă și toate acest gen de lucruri. 154 00:08:53,410 --> 00:08:55,720 >> Cum ajungem în jurul valorii de asta? 155 00:08:55,720 --> 00:09:01,200 Pentru a săpa în acest API un pic mai mult să vă arăt un alt exemplu al acestei platforme 156 00:09:01,200 --> 00:09:04,490 care utilizează un set de date ușor diferită. 157 00:09:04,490 --> 00:09:09,950 Acest set de date, în loc de a fi nume de copii, este de fapt doar întregul 158 00:09:09,950 --> 00:09:12,460 imprima baza de date a Bibliotecii publicarea Open, 159 00:09:12,460 --> 00:09:18,410 care este o sursă uriașă de texte publicate de-a lungul ultimilor 100 sau cam asa ceva de ani. 160 00:09:18,410 --> 00:09:23,540 Ideea este că avem această compository de milioane și milioane de text, 161 00:09:23,540 --> 00:09:27,420 pe care le pot căuta acum pentru diferite cuvinte și expresii inch 162 00:09:27,420 --> 00:09:30,840 Iată un exemplu care variază un pic diferit de la exemplul anterior 163 00:09:30,840 --> 00:09:33,350 Ți-am arătat, care este avem aceste 3 interogări de căutare, 164 00:09:33,350 --> 00:09:36,290 de război, război, și cuvântul francez pentru război, care este Guerre. 165 00:09:36,290 --> 00:09:40,380 Și suntem căutați în termen de 3 secțiuni diferite ale bazei de date totală. 166 00:09:40,380 --> 00:09:45,080 Cu alte cuvinte, în acest interogare primul suntem doar căutarea în Statele Unite ale Americii, 167 00:09:45,080 --> 00:09:51,150 în cea de a doua numai in Marea Britanie, iar a treia numai din lucrările publicate în Franța. 168 00:09:51,150 --> 00:09:53,120 Vedem unele modele interesante emerge. 169 00:09:53,120 --> 00:09:58,180 De exemplu, putem vedea chiar în jurul valorii de aici, care- 170 00:09:58,180 --> 00:10:02,410 Hopa, am incurcat axa un pic, dar puteți vedea chiar în acest interval de aici 171 00:10:02,410 --> 00:10:05,730 în jurul valorii de Războiul Civil există un vârf mare în ediția americană 172 00:10:05,730 --> 00:10:08,340 dar nu un astfel de vârf mare în celelalte două, și asta pentru că, evident, 173 00:10:08,340 --> 00:10:10,880 Războiul Civil american a fost întâmplă în acel moment. 174 00:10:10,880 --> 00:10:13,890 >> Putem vedea unele chestii misto acolo, 175 00:10:13,890 --> 00:10:17,070 dar ceea ce ne pasă cu adevărat despre este modul în care ne-am aceste date. 176 00:10:17,070 --> 00:10:21,320 Te voi duce în spatele scenei, în această aplicație într-un pic. 177 00:10:21,320 --> 00:10:24,540 Un truc este dacă lucrați cu site-ul si tipul de vrei sa stii 178 00:10:24,540 --> 00:10:27,430 ceea ce se întâmplă în spatele scenei, puteți deschide instrumentele de dezvoltare. 179 00:10:27,430 --> 00:10:30,200 Am de gând să fie utilizând instrumente Chrome pentru dezvoltatori, precum și pentru a ajunge la cele 180 00:10:30,200 --> 00:10:35,160 poti sa faci un control, shift, J, și că duce la consola JavaScript. 181 00:10:35,160 --> 00:10:37,420 Există câteva file aici. 182 00:10:37,420 --> 00:10:39,680 Ele pot fi destul de util în situații diferite, dar îmi pasă de rețea 183 00:10:39,680 --> 00:10:44,150 fila chiar acum, și am de fapt, trebuie să reîmprospăta pentru a obține că de lucru. 184 00:10:44,150 --> 00:10:50,180 Oh, scuze. 185 00:10:50,180 --> 00:10:52,320 Ea îi place să dea un exemplu aleator. 186 00:10:52,320 --> 00:10:54,700 Bine, vom folosi acest exemplu, atunci în loc. 187 00:10:54,700 --> 00:11:01,330 >> Ideea este că e aici API, 188 00:11:01,330 --> 00:11:05,330 și puteți vedea exact ceea ce API-ul se întoarce. 189 00:11:05,330 --> 00:11:10,220 Aceasta este ceea ce cererea este obtinerea înapoi de la API au trimis această cerere. 190 00:11:10,220 --> 00:11:13,680 Lasă-mă să măriți un pic, 191 00:11:13,680 --> 00:11:18,340 și putem vedea practic e doar o serie de perechi de valori-cheie în JSON. 192 00:11:18,340 --> 00:11:23,220 Cu alte cuvinte, avem acest HashMap aici care e de cartografiere valori. 193 00:11:23,220 --> 00:11:26,440 Cu alte cuvinte, e de cartografiere ani la valorile. 194 00:11:26,440 --> 00:11:32,600 În 1765 orice cuvant pe care il inițial cautat este folosit de 90 de ori 195 00:11:32,600 --> 00:11:35,810 din 1 milioane de euro, așa că mă întorc la acest rezultat. 196 00:11:35,810 --> 00:11:40,280 Nu e exact JSON, deoarece avem acest rezultat antet mic aici, 197 00:11:40,280 --> 00:11:45,630 dar observați că acest obiect aici totul este doar o mare pată de cerneală de mare JSON. 198 00:11:45,630 --> 00:11:51,070 Avem o gamă aici care conține acest element întreg, 199 00:11:51,070 --> 00:11:55,590 și puteți vedea că elementul întreg se termină acolo, și apoi avem un alt element de mare 200 00:11:55,590 --> 00:11:59,430 care merge tot drumul până la sfârșit, și care se termină aici. 201 00:11:59,430 --> 00:12:02,200 Avem o gamă foarte mare, cu 2 obiecte în ea, 202 00:12:02,200 --> 00:12:04,630 și fiecare dintre aceste obiecte este un HashMap. 203 00:12:04,630 --> 00:12:07,340 Puteți vedea în fiecare din aceste hashmaps avem o mapare 204 00:12:07,340 --> 00:12:12,700 din această valoare indice la 0 și valoarea această valoare la un alt HashMap, 205 00:12:12,700 --> 00:12:18,360 care din nou este de cartografiere valorile pe axa X la valorile axa y. 206 00:12:18,360 --> 00:12:20,970 >> Puteți vedea JSON devine un pic complicat, dar, în general, 207 00:12:20,970 --> 00:12:24,190 de fapt e foarte util, și este foarte ușor de accesat, comparativ cu 208 00:12:24,190 --> 00:12:27,390 alte forme diferite de notație. 209 00:12:27,390 --> 00:12:30,550 În ceea ce privește ceea ce ne trimite, de fapt date API pentru a obține, 210 00:12:30,550 --> 00:12:34,690 Am de gând să merg în capătul din spate un pic aici. 211 00:12:34,690 --> 00:12:39,850 Aceasta este marea fișier JavaScript care este manipularea toate interacțiunile din aplicația web, 212 00:12:39,850 --> 00:12:44,810 și astfel nu ne pasă de cea mai mare de acest lucru, dar ne pasă de o parte din ea. 213 00:12:44,810 --> 00:12:47,410 De exemplu, ne pasă de această funcție buildQuery, 214 00:12:47,410 --> 00:12:50,670 și ideea acestei funcții este de fapt se uită în jurul valorii de pagină, 215 00:12:50,670 --> 00:12:53,750 imaginind ceea ce utilizatorul dorește să interoga, cu alte cuvinte, 216 00:12:53,750 --> 00:12:57,090 verificarea acele cutii în cazul în care le-am intrare termenii lor de căutare, 217 00:12:57,090 --> 00:13:01,380 verificarea Y diferit și valorile pe axa X pe care le-am ales și tot de acest gen de lucruri, 218 00:13:01,380 --> 00:13:06,650 și o să scuipe această valoare de interogare, care pot trimite apoi oprit la API. 219 00:13:06,650 --> 00:13:09,180 >> Acest lucru pare complicat, si este destul de complicat 220 00:13:09,180 --> 00:13:18,090 dar ceea ce am de gând să fac, de fapt, fac deja acest lucru, ceea ce este o mare- 221 00:13:18,090 --> 00:13:21,640 este că am de gând pentru a obține consola pentru a imprima exact ca valoarea de interogare 222 00:13:21,640 --> 00:13:28,110 că este trimit la API. 223 00:13:28,110 --> 00:13:30,870 Asta este de fapt chiar aici. Ne pare rău, să emită o mulțime de lucruri. 224 00:13:30,870 --> 00:13:33,690 Dar asta este ceea ce ne pasă, acest obiect chiar aici. 225 00:13:33,690 --> 00:13:35,300 Acesta este obiectul interogare. 226 00:13:35,300 --> 00:13:40,670 Cu alte cuvinte, aceasta este exact ceea ce aplicație web este de a trimite la API, 227 00:13:40,670 --> 00:13:45,730 și deci să privim în interiorul un pic, și vom vedea, avem câteva valori aici. 228 00:13:45,730 --> 00:13:48,710 Vedem avem acest tip de număr, care este apariții la un milion de cuvinte, 229 00:13:48,710 --> 00:13:51,460 care este exact ceea ce ne-am ales pe axa Y. aici. 230 00:13:51,460 --> 00:13:53,740 Asta e în cazul în care vine de la. 231 00:13:53,740 --> 00:13:58,010 Avem o bază de date valoare, ceea ce înseamnă că există unele baze de date sigur 232 00:13:58,010 --> 00:14:01,610 faptul că aceste date sunt locuiește în, și vrem să acceseze aceste date în mod specific 233 00:14:01,610 --> 00:14:04,950 spre deosebire de copii nume de date, de exemplu. 234 00:14:04,950 --> 00:14:08,320 Apoi vom avea această valoare grupuri, 235 00:14:08,320 --> 00:14:12,090 care se spune că ne-o dorim pentru a căuta după an, spre deosebire de 236 00:14:12,090 --> 00:14:16,030 orice altă axa X valoare. 237 00:14:16,030 --> 00:14:19,040 Apoi, avem o metodă, pe care unii API-urile vor face mai multe lucruri. 238 00:14:19,040 --> 00:14:22,360 Cu alte cuvinte, acest API pot reveni, de asemenea, alte tipuri de date, 239 00:14:22,360 --> 00:14:27,740 dar, în acest caz, vrem ca cartografiere a valorilor axei X la valorile axa y. 240 00:14:27,740 --> 00:14:30,730 Asta e ceea ce se spune că este de a face acolo, 241 00:14:30,730 --> 00:14:35,020 și avem această matrice căutare limite, care conține 2 valori. 242 00:14:35,020 --> 00:14:40,720 Prima dintre ele este ceea ce vedem aici, care este tot din valorile 243 00:14:40,720 --> 00:14:43,020 conținute în cutia aia mica primul la partea de sus. 244 00:14:43,020 --> 00:14:47,570 >> Cu alte cuvinte, dorim să caute pentru lupta cuvântul, și vrem să-l filtrați 245 00:14:47,570 --> 00:14:51,920 de textele în limba engleză în cadrul literaturii americane. 246 00:14:51,920 --> 00:14:54,590 Avem această țară, care este Statele Unite ale Americii. 247 00:14:54,590 --> 00:14:59,130 Avem o limbă, care este engleza, deci avem toate aceste diferite părți 248 00:14:59,130 --> 00:15:02,690 care spun toate API-ul exact ceea ce ne dorim. 249 00:15:02,690 --> 00:15:04,940 Noi nu știm ce datele pe care le primim din spate este încă, 250 00:15:04,940 --> 00:15:10,970 dar știm că datele sunt de gând să ia o anumită formă. 251 00:15:10,970 --> 00:15:13,650 Acest exemplu este un fel de pe partea complicat, 252 00:15:13,650 --> 00:15:16,180 și nu ar fi în mod necesar cu ajutorul unui API acestui complex, 253 00:15:16,180 --> 00:15:20,600 dar acest lucru este pentru a vă arăta și gama de putere de API-uri ce pot face. 254 00:15:20,600 --> 00:15:24,980 Cu alte cuvinte, folosind un sistem de interogare relativ simplu, vom avea practic o casetă de intrare 255 00:15:24,980 --> 00:15:29,490 cu un selectoare alte câteva în locuri diferite. 256 00:15:29,490 --> 00:15:32,010 >> Lasă-mă să zoom înapoi aici. 257 00:15:32,010 --> 00:15:37,720 Avem o casetă de intrare cu un selecții puține metadate diferite, 258 00:15:37,720 --> 00:15:40,610 și ne-am axa Y și selecțiile axa x. 259 00:15:40,610 --> 00:15:42,830 Noi nu avem de fapt mai multe domenii care, 260 00:15:42,830 --> 00:15:46,210 și putem vedea foarte usor suntem capabili de a interoga un fel de API 261 00:15:46,210 --> 00:15:48,510 și obțineți date înapoi și apoi a pus-o în această diagramă, 262 00:15:48,510 --> 00:15:52,080 care este apoi de gând să-l afișeze într-un mod util. 263 00:15:52,080 --> 00:15:54,970 Pentru a uita-te la un alt exemplu care ar putea fi un pic mai familiar pentru voi 264 00:15:54,970 --> 00:15:56,510 am de gând să apeleze la Facebook. 265 00:15:56,510 --> 00:15:59,440 API Facebook este numit Graph Facebook, 266 00:15:59,440 --> 00:16:04,390 și, practic ceea ce înseamnă că este pe Facebook se vede pe sine ca această bază de date masiv 267 00:16:04,390 --> 00:16:08,000 de o mulțime de piese diferite, care toate au anumite relații pentru fiecare alte. 268 00:16:08,000 --> 00:16:11,070 Cu alte cuvinte, eu sunt un utilizator pe Facebook, așa că am avea un profil, 269 00:16:11,070 --> 00:16:14,310 si am, de asemenea, prieteni anumite, și fiecare dintre ele are un profil, 270 00:16:14,310 --> 00:16:17,580 și fiecare dintre prietenii mei are un perete, care are diverse comentarii pe ea, 271 00:16:17,580 --> 00:16:20,800 și fiecare dintre aceste observații are place și toate chestiile astea. 272 00:16:20,800 --> 00:16:23,100 >> Există o mulțime de piese diferite pe Facebook. 273 00:16:23,100 --> 00:16:26,670 E un API extrem de complex, și nu există de tone care le puteți face cu ea, 274 00:16:26,670 --> 00:16:28,450 dar este de fapt destul de simplu de utilizat. 275 00:16:28,450 --> 00:16:33,680 Am de gând să încep prin a merge la graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 care este numele meu de cont unic, precum și numele contului dvs. va fi 277 00:16:38,430 --> 00:16:43,710 un fel de cuvânt, dacă l-ați ales, sau poate fi doar un șir de numere. 278 00:16:43,710 --> 00:16:46,360 Ceea ce ne întoarcem este destul de informații de bază. 279 00:16:46,360 --> 00:16:50,460 Vedem că am un nume în primul rând, care este Billy, un nume de familie, care este Janitsch. 280 00:16:50,460 --> 00:16:53,370 E un ID unic pe Facebook pe care am. 281 00:16:53,370 --> 00:16:57,920 Puteți vedea că eu sunt de sex masculin și că am setare limba mea 282 00:16:57,920 --> 00:17:01,290 la engleza britanică. 283 00:17:01,290 --> 00:17:03,490 Cu alte cuvinte, vedem informații foarte de bază aici. 284 00:17:03,490 --> 00:17:08,670 Nu e prea mult, dar aceasta nu ne da o idee de ce e acolo. 285 00:17:08,670 --> 00:17:10,849 >> Putem face același lucru cu David Malan, de exemplu. 286 00:17:10,849 --> 00:17:13,599 Cred că numele lui este dmalan. 287 00:17:13,599 --> 00:17:16,369 Ne vedem pe David Malan are un ID unic. 288 00:17:16,369 --> 00:17:19,300 El are un nume, prenume, nume de mijloc, numele de familie. 289 00:17:19,300 --> 00:17:24,210 Vedem, de asemenea, că el e bărbat și are setul său limbă engleză SUA. 290 00:17:24,210 --> 00:17:26,869 Cu alte cuvinte, ne vedem destul de informații de bază aici. 291 00:17:26,869 --> 00:17:28,860 Acum, ce se întâmplă dacă încercăm să verificați altceva? 292 00:17:28,860 --> 00:17:33,060 Să zicem că sunt interesați de ceea ce David Malan a plăcut pe Facebook. 293 00:17:33,060 --> 00:17:36,860 Eu pot face / place. Acum ne-am alerga într-o problemă. 294 00:17:36,860 --> 00:17:39,280 Avem un fel de eroare care spune că un indicativ de acces 295 00:17:39,280 --> 00:17:41,660 este necesar să solicite această resursă. 296 00:17:41,660 --> 00:17:44,730 Dar, dacă te gândești la asta, care face de fapt sens, deoarece ar fi ciudat 297 00:17:44,730 --> 00:17:47,830 dacă ai putea accesa fiecare parte a bazei de date Facebook 298 00:17:47,830 --> 00:17:50,170 doar de la un fel de API simplu, nu? 299 00:17:50,170 --> 00:17:56,040 Cu alte cuvinte, probabil informațiile dumneavoastră nu pot fi accesate de oricine vrea. 300 00:17:56,040 --> 00:17:58,330 >> Această eroare este exact ce înseamnă. 301 00:17:58,330 --> 00:18:03,630 Unii API-uri necesită permisiuni anumitor pentru a accesa datele lor. 302 00:18:03,630 --> 00:18:06,940 API-uri și chiar mai avansate, cum ar fi Facebook unul, 303 00:18:06,940 --> 00:18:09,840 va necesita anumite permisiuni de a face anumite lucruri. 304 00:18:09,840 --> 00:18:12,650 Eu pot vedea aceste informații de bază despre David Malan. 305 00:18:12,650 --> 00:18:15,950 Eu pot vedea că e bărbat și că el trăiește în Statele Unite, 306 00:18:15,950 --> 00:18:19,270 dar eu nu pot vedea nimic din trecut care. 307 00:18:19,270 --> 00:18:23,050 Pentru a obține în jurul valorii de acest lucru pentru acum, Facebook are acest instrument de frumos 308 00:18:23,050 --> 00:18:27,690 care este API Graficul explorator, și ideea de care este aveți posibilitatea să sortați de 309 00:18:27,690 --> 00:18:31,880 se completează până permisiunile pentru tine bazează pe cont propriu 310 00:18:31,880 --> 00:18:35,680 și apoi vizualizați lucruri pe care în mod specific contul dvs. poate vizualiza. 311 00:18:35,680 --> 00:18:45,120 De exemplu, dacă fac graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 Ne pare rău, cred că trebuie să revalideze tokenul meu aici. 313 00:18:53,510 --> 00:18:55,950 Bine. 314 00:18:55,950 --> 00:19:01,740 Dacă aș face asta din nou, grozav, acum văd că am obține acest obiect înapoi 315 00:19:01,740 --> 00:19:06,300 care spune că-mi place fidea pool, care sunt în categoria Jocuri și Jucării. 316 00:19:06,300 --> 00:19:08,620 Îmi place morse, care se află în categoria animalelor. 317 00:19:08,620 --> 00:19:10,180 Acestea sunt reale meu pe Facebook place. 318 00:19:10,180 --> 00:19:13,280 Sunt un fel de jenant. 319 00:19:13,280 --> 00:19:16,090 >> Dar putem vedea aceste date este tot întors în JSON. 320 00:19:16,090 --> 00:19:18,160 E destul de ușor de citit. 321 00:19:18,160 --> 00:19:20,970 Cu alte cuvinte, avem această cartografiere de date la un fel de matrice, 322 00:19:20,970 --> 00:19:25,220 și fiecare element al acestei matrice este un HashMap care mapează 323 00:19:25,220 --> 00:19:28,530 numele unui fel ca și categoria de ca. 324 00:19:28,530 --> 00:19:31,240 Fiecare are ca un ID unic. 325 00:19:31,240 --> 00:19:34,510 Există tot felul de lucruri diferite de date pe care le putem obține, 326 00:19:34,510 --> 00:19:37,980 și dacă sunteți interesat în utilizarea API-ul Facebook pentru un proiect final CS50 327 00:19:37,980 --> 00:19:40,720 sau pentru ceva de genul asta e de fapt destul de greu de realizat. 328 00:19:40,720 --> 00:19:44,260 Practic cum ai ajuns în jurul valorii de lucru este de autentificare pe Facebook 329 00:19:44,260 --> 00:19:48,030 folosește un sistem numit OAuth, sau autentificare Open, 330 00:19:48,030 --> 00:19:52,870 și nu vreau să intru în ea acum pentru ca OAuth sau alt tip 331 00:19:52,870 --> 00:19:56,060 de autentificare tinde să varieze foarte mult între diferite API-uri, 332 00:19:56,060 --> 00:19:58,320 așa că am putea petrece o lungă perioadă de timp să treacă de fiecare, 333 00:19:58,320 --> 00:20:01,170 dar de fapt ele sunt destul de auto-explicativ. 334 00:20:01,170 --> 00:20:04,050 >> Dacă aveți Google Facebook API-ul e foarte ușor de citit. 335 00:20:04,050 --> 00:20:06,670 E o întreagă spec.. 336 00:20:06,670 --> 00:20:10,210 De exemplu, aceasta este documentația pentru API Facebook, 337 00:20:10,210 --> 00:20:14,170 și puteți vedea că sunt pe pagina de utilizare, așa că am putea afla totul despre diferitele tipuri de lucruri 338 00:20:14,170 --> 00:20:17,170 care sunt disponibile pentru a obține date în măsura în care 339 00:20:17,170 --> 00:20:21,550 și, de asemenea permisiuni diferite care am nevoie, în scopul de a le accesa. 340 00:20:21,550 --> 00:20:25,470 După cum am văzut, nu avem nevoie de permisiuni pentru a accesa numele sau de gen, 341 00:20:25,470 --> 00:20:29,380 dar dincolo de asta avem nevoie de permisiuni pentru cele mai multe lucruri. 342 00:20:29,380 --> 00:20:33,040 Această pagină, sau, mai degrabă, acest site va spune, de asemenea, cum să obțineți 343 00:20:33,040 --> 00:20:35,640 un simbol pentru a putea să te autentifica. 344 00:20:35,640 --> 00:20:39,290 Cele mai multe sisteme de autentificare folosesc un fel de simbolică 345 00:20:39,290 --> 00:20:42,880 în cazul în care veți obține această valoare unică, care este un șir foarte lung și aleatorie, 346 00:20:42,880 --> 00:20:46,240 și că modul în care acestea se pot asocia cererea pe care îl faci cu tine. 347 00:20:46,240 --> 00:20:50,560 Cu alte cuvinte, ei știu că tu nu faci nimic suspect cu datele lor. 348 00:20:50,560 --> 00:20:53,340 Ei știu exact ce vei primi. 349 00:20:53,340 --> 00:20:56,180 Ei, de asemenea, știu că aveți permisiunea de a vizualiza această informație. 350 00:20:56,180 --> 00:20:59,110 >> Dacă ați făcut o aplicație Facebook și aplicația dvs. are anumitor utilizatori, 351 00:20:59,110 --> 00:21:03,380 și acelor utilizatori care au permis aplicației să acceseze anumite părți ale profilului lor, 352 00:21:03,380 --> 00:21:07,790 atunci orice API-cheie sau simbolică că aplicația utilizează 353 00:21:07,790 --> 00:21:11,090 va putea accesa datele pentru acele utilizatori. 354 00:21:11,090 --> 00:21:13,780 Acest lucru ar putea suna complicat, dar nu e prea rău, 355 00:21:13,780 --> 00:21:16,810 și, dacă doriți să utilizați Facebook Mi-ar recomanda foarte care le 356 00:21:16,810 --> 00:21:18,990 ia în considerare în jurul valorii de joc cu API-ul lor. 357 00:21:18,990 --> 00:21:21,610 E foarte misto, și puteți face o mulțime de lucruri diferite cu ea. 358 00:21:21,610 --> 00:21:24,880 Dacă utilizatorul vă acordă aceste permisiuni poti sa te duci chiar înapoi la API 359 00:21:24,880 --> 00:21:28,820 si spun vreau să posta de fapt, la perete acestui utilizator, sau vreau să le postați o fotografie, 360 00:21:28,820 --> 00:21:32,390 și de aceea pe hrana pentru animale de știri veți ajunge, uneori, aceste lucruri enervante 361 00:21:32,390 --> 00:21:37,840 spunând prietenul tau a vizionat acest film pe un fel de site-ul ciudat, sau ceva de genul asta. 362 00:21:37,840 --> 00:21:43,120 Asta e pentru că aplicația a fost acordat accesul la posta pe peretele acelei persoane. 363 00:21:43,120 --> 00:21:48,350 Ideea generală, API-ul Facebook este destul de complicată, dar, de asemenea, foarte util. 364 00:21:48,350 --> 00:21:53,220 Cu siguranta merită verificat dacă sunteți încă în căutarea pentru un proiect final. 365 00:21:53,220 --> 00:21:57,930 >> O altă suită de API-uri pe care am de gând să merg peste CS50 este API-uri. 366 00:21:57,930 --> 00:22:00,070 Lasă-mă să mări aici. 367 00:22:00,070 --> 00:22:03,390 CS50-a pus de fapt împreună o serie întreagă de API-uri 368 00:22:03,390 --> 00:22:07,080 pe care le puteți folosi pentru un proiect final sau doar pentru ceva care-l faci. 369 00:22:07,080 --> 00:22:12,830 Și ei sunt cea mai mare parte legate de Harvard, și ele variază de la meniul Huds, 370 00:22:12,830 --> 00:22:17,780 de exemplu, la această Harvard Evenimente API, care vă va permite să accesați o listă de 371 00:22:17,780 --> 00:22:21,290 diferite evenimente care au loc pe la Harvard și chestii din astea. 372 00:22:21,290 --> 00:22:24,510 Și astfel putem să faceți clic pe oricare dintre acestea și a obține un spec. pentru ea, 373 00:22:24,510 --> 00:22:28,090 care vei fi capabil de a găsi pentru orice API, iar ideea este 374 00:22:28,090 --> 00:22:33,920 aceasta vă permite să știi, A, exact ceea ce a solicita de la API și cum să-l solicite. 375 00:22:33,920 --> 00:22:37,370 Cu alte cuvinte, dacă vreau toate evenimentele care au loc mâine 376 00:22:37,370 --> 00:22:42,550 atunci am să dau, evident, la acea dată că vreau într-un anumit format, 377 00:22:42,550 --> 00:22:46,030 și B, se va spune-mi exact ce se va da înapoi la mine. 378 00:22:46,030 --> 00:22:48,590 Acesta va spun am de gând să se întoarcă tine acest obiect JSON, 379 00:22:48,590 --> 00:22:50,960 sau ca tine se poate vedea, există diferite formate. 380 00:22:50,960 --> 00:22:54,050 >> Puteți reveni, de asemenea, date în format CSV, de exemplu. 381 00:22:54,050 --> 00:22:57,620 Dar știți exact modul în care datele sunt de gând să caute atunci când luați înapoi 382 00:22:57,620 --> 00:23:00,610 astfel încât vă puteți aștepta să faci anumite lucruri cu ea. 383 00:23:00,610 --> 00:23:07,240 Ne putem derula în jos și a vedea, de exemplu, dacă vrem să interoga API 384 00:23:07,240 --> 00:23:11,500 pentru a obține un calendar, atunci putem folosi acest URL special, 385 00:23:11,500 --> 00:23:16,480 și dau anumitor parametri care urmează să fie date pe care ne-o dorim exact. 386 00:23:16,480 --> 00:23:19,540 Și de asemenea, dacă vrem datele înapoi într-un anumit format, 387 00:23:19,540 --> 00:23:23,790 atunci putem cere la ieșire a datelor dintr-un fișier CSV, 388 00:23:23,790 --> 00:23:27,700 și că e doar un alt parametru pe care suntem trecerea la API. 389 00:23:27,700 --> 00:23:29,210 O mulțime de lucruri interesante de făcut acolo. 390 00:23:29,210 --> 00:23:32,550 Mi-ar recomanda cu siguranta verificarea API-urile CS50. 391 00:23:32,550 --> 00:23:36,000 >> Am de gând să se uite la acest API Food Harvard, în special pentru un pic. 392 00:23:36,000 --> 00:23:39,870 Un lucru pe care l-am creat, de fapt este acest site Harvard nominalizari, 393 00:23:39,870 --> 00:23:44,930 care utilizează API alimentare CS50 pentru a prelua meniul Huds pentru a doua zi. 394 00:23:44,930 --> 00:23:50,400 Și pentru persoanele școlare extensie, Huds este serviciul de mese la Harvard. 395 00:23:50,400 --> 00:23:55,130 Ceea ce veți obține este de această pagină, care conține toate mesele de zi, deci vom vedea masa de prânz. 396 00:23:55,130 --> 00:23:58,130 Avem câteva categorii diferite. Avem fasole și stația de cereale integrale. 397 00:23:58,130 --> 00:24:00,340 Avem stația de orez brun. 398 00:24:00,340 --> 00:24:03,360 Putem vedea pentru brunch avem aceste câteva elemente alimentare. 399 00:24:03,360 --> 00:24:07,030 Dacă ne faceți clic pe ele, atunci vom obține informațiile nutriționale. 400 00:24:07,030 --> 00:24:12,240 Veți vedea acest lucru este informațiile nutriționale pentru grapefruit, în cazul în care ați fost întrebați. 401 00:24:12,240 --> 00:24:14,870 Și astfel, din nou, vom to-peer în capătul din spate aici, un pic 402 00:24:14,870 --> 00:24:18,530 si vezi ce exact acest lucru se face pentru a obține aceste date. 403 00:24:18,530 --> 00:24:21,710 Și se dovedește a nu fi de fapt foarte complexă, la toate. 404 00:24:21,710 --> 00:24:28,720 Acest fișier pare un pic murdar, dar ține cont de faptul că acest lucru este manipularea site-ul întreg, 405 00:24:28,720 --> 00:24:34,130 și dacă am derulați în jos vom vedea această funcție schimbare de date. 406 00:24:34,130 --> 00:24:36,630 >> Acum, doar pentru a fi clar, acest lucru este scris în CoffeeScript, 407 00:24:36,630 --> 00:24:39,570 care este o limbă pe care, probabil, nu s-au văzut înainte. 408 00:24:39,570 --> 00:24:44,810 Dar e destul de ușor de citit, așa că voi merge prin ea ca și cum ar fi fost pseudocod. 409 00:24:44,810 --> 00:24:49,080 Schimbare dată este o funcție care se va lua în această valoare dată, 410 00:24:49,080 --> 00:24:51,740 și este, de asemenea, de gând să ia într-o parte, care nu ne pasă la fel de mult. 411 00:24:51,740 --> 00:24:54,110 Dar cel mai important lucru este că are această dată, 412 00:24:54,110 --> 00:25:00,080 și că data este ziua în care ne-o dorim să solicite toate elementele alimentare pentru. 413 00:25:00,080 --> 00:25:04,030 Si apoi vezi avem un pic de sintaxă aici, 414 00:25:04,030 --> 00:25:09,000 care este parsarea practic de această dată într-un format ușor de citit. 415 00:25:09,000 --> 00:25:11,920 Cu alte cuvinte, API necesită dată într-o anumit format. 416 00:25:11,920 --> 00:25:17,390 Nu poți să spui doar 16 noiembrie 2012 AD. 417 00:25:17,390 --> 00:25:20,320 Ea nu va ști ce să facă cu asta. Ea vrea data într-un format specific. 418 00:25:20,320 --> 00:25:23,230 Tot ce facem aici este exact acesta oferă acest format, 419 00:25:23,230 --> 00:25:26,520 care este o valoare an și apoi o cratimă, o valoare luni, 420 00:25:26,520 --> 00:25:29,420 un alt cratimă și valoarea data. 421 00:25:29,420 --> 00:25:34,910 Și noi, de asemenea, spunem că doriți ca datele să fie ieșire în JSON. 422 00:25:34,910 --> 00:25:37,560 >> Acum facem aceasta cerere AJAX, și după cum am menționat mai devreme, 423 00:25:37,560 --> 00:25:41,680 jQuery are acest super-util funcție AJAX care tot ce trebuie să faceți este să precizeze 424 00:25:41,680 --> 00:25:45,780 câțiva parametri care se aici, și vă va da inapoi exact ceea ce vrei. 425 00:25:45,780 --> 00:25:50,490 Noi îl spune că URL-ul vrem să mergem la acest API este CS50 alimentară, 426 00:25:50,490 --> 00:25:52,270 pe care am primit de la spec.. 427 00:25:52,270 --> 00:25:56,730 Noi spunem că dorim datele din JSON și că 428 00:25:56,730 --> 00:25:59,490 vom da aceste date pe care le-am definit aici. 429 00:25:59,490 --> 00:26:02,670 Aceasta este ziua în care ne dorim ca produse alimentare pentru. 430 00:26:02,670 --> 00:26:07,790 Și apoi tot ce trebuie să faceți este să se definească un fel de funcții de succes, 431 00:26:07,790 --> 00:26:11,980 care este de fapt ceea ce se întâmplă atunci când API-ul returnează că datele. 432 00:26:11,980 --> 00:26:15,490 Cu alte cuvinte, ne-am ambalat la toți parametrii pe care ne-o dorim, 433 00:26:15,490 --> 00:26:20,530 care în acest caz este ziua în care ne-o dorim și faptul că l-am dorit în JSON, 434 00:26:20,530 --> 00:26:23,840 și l-am trimis la API, asa ca acum API spune, bine, 435 00:26:23,840 --> 00:26:26,350 aici se datele dvs., am luat-o înapoi pentru tine. 436 00:26:26,350 --> 00:26:29,930 Avem funcția de succes, ceea ce înseamnă având în vedere că API-ul 437 00:26:29,930 --> 00:26:32,230 returnează cu succes a unor date, ce facem cu ea? 438 00:26:32,230 --> 00:26:35,980 >> Și se pare că tot ce facem este numim acest meniu funcții de actualizare 439 00:26:35,980 --> 00:26:42,680 cu orice API a revenit, astfel încât să putem căuta pentru că 440 00:26:42,680 --> 00:26:47,970 și vezi că tot ce facem este folosind o grămadă de sintaxă noi aici 441 00:26:47,970 --> 00:26:52,220 pentru a actualiza HTML și introduceți aceste date noi. 442 00:26:52,220 --> 00:26:56,580 Ce este acest lucru permite o este ca avem aceste săgeți pe fiecare parte, și putem faceți clic pe, 443 00:26:56,580 --> 00:27:01,060 și acum ne uităm la datele pentru ziua următoare și din nou, pentru a doua zi, 444 00:27:01,060 --> 00:27:04,820 și de fiecare dată când este actualizarea ca valoarea dată și interogarea API, 445 00:27:04,820 --> 00:27:07,510 obținerea unor date înapoi și punerea sa în site-ul. 446 00:27:07,510 --> 00:27:10,590 Din nou, puteți vedea, super, super-util. 447 00:27:10,590 --> 00:27:14,410 Această aplicație mi-a luat câteva ore pentru a hack împreună, 448 00:27:14,410 --> 00:27:20,140 si am experienta un pic mai mult, evident, dar dvs. CS50 final al proiectului, 449 00:27:20,140 --> 00:27:22,870 poate arata ceva de foarte mult ca aceasta. 450 00:27:22,870 --> 00:27:29,540 >> API-uri sunt super puternic pentru cantitatea de efort pe care le iau. 451 00:27:29,540 --> 00:27:32,800 Ultimul lucru pe care am de gând să merg peste câteva API-uri este un sens mai larg. 452 00:27:32,800 --> 00:27:35,480 Eu nu va primi la fel de mult în ele în măsura în care ceea ce fac ei în mod specific, 453 00:27:35,480 --> 00:27:38,740 dar eu voi da o idee de ce e acolo. 454 00:27:38,740 --> 00:27:42,700 2 cele cu adevarat utile, dacă sunteți interesat în analiza datelor sau vizualizarea 455 00:27:42,700 --> 00:27:45,960 sau ceva de genul asta, sunt Freebase și Wikipedia. 456 00:27:45,960 --> 00:27:49,800 Wikipedia-probabil știți, este tot o enciclopedie online gratuite, 457 00:27:49,800 --> 00:27:53,230 si are de fapt un API, deci, dacă doriți, de exemplu, 458 00:27:53,230 --> 00:27:56,250 obține toate textele și articole pentru caracatita 459 00:27:56,250 --> 00:27:58,030 puteți foarte ușor să fac asta. 460 00:27:58,030 --> 00:28:02,300 Doar spune hei, Wikipedia API, aș dori datele returnate ca acest lucru, 461 00:28:02,300 --> 00:28:07,010 și aș place în acest format, precum și articolul aș dori este caracatiță, 462 00:28:07,010 --> 00:28:09,820 și foarte repede vă va da înapoi aceste informații. 463 00:28:09,820 --> 00:28:12,230 Asta poate fi foarte utilă dacă doriți să faceți un fel de site-ului 464 00:28:12,230 --> 00:28:16,200 asta e un vizualizator Wikipedia pentru mai bine sau ceva de genul asta. 465 00:28:16,200 --> 00:28:21,350 >> Freebase este un fel de asemănătoare, deși e un pic mai greu în măsura în care API. 466 00:28:21,350 --> 00:28:24,390 Freebase este ca Wikipedia, în sensul că este o enciclopedie on-line 467 00:28:24,390 --> 00:28:29,050 care conține o mulțime și o mulțime de date diferite despre tot felul de subiecte diferite, 468 00:28:29,050 --> 00:28:33,150 dar este stocat într-o bază de date relațională, care este ușor diferită de la Wikipedia. 469 00:28:33,150 --> 00:28:36,410 Wikipedia are articole sale și articole legate de alte articole, 470 00:28:36,410 --> 00:28:38,860 dar pentru cea mai mare parte, în cazul în care doriți ca datele de caracatiță, 471 00:28:38,860 --> 00:28:41,990 te duci la articolul caracatiță, pentru a primi aceste date, și aveți o grămadă de text 472 00:28:41,990 --> 00:28:43,830 despre caracatițe, așa că e grozav. 473 00:28:43,830 --> 00:28:46,870 Freebase funcționează într-un mod puțin mai complicat, în care 474 00:28:46,870 --> 00:28:48,930 totul este legat de una de alta. 475 00:28:48,930 --> 00:28:52,620 Cu alte cuvinte, dacă suntem în căutarea caracatiță 476 00:28:52,620 --> 00:28:54,940 atunci aceasta are o grămadă de categorii asociate cu aceasta. 477 00:28:54,940 --> 00:28:57,920 >> De exemplu, e un animal, ea trăiește sub apă, 478 00:28:57,920 --> 00:28:59,710 are o anumita temperatura corpului. 479 00:28:59,710 --> 00:29:01,210 Nu știu. 480 00:29:01,210 --> 00:29:04,230 Și toate aceste categorii sunt link-uri către alte locuri unde poti sa te duci 481 00:29:04,230 --> 00:29:06,640 de a vedea lucrurile cu aceeasi categorie. 482 00:29:06,640 --> 00:29:13,450 Cu alte cuvinte, setul de date caracatita ar conține o legătură la datele stabilite pentru toate animalele, 483 00:29:13,450 --> 00:29:16,790 și care ar lasa-ma deplasa în baza de date foarte rapid. 484 00:29:16,790 --> 00:29:21,740 Acest lucru poate fi foarte util dacă faci ceva de genul comparații. 485 00:29:21,740 --> 00:29:24,490 Cu alte cuvinte, având în vedere un anumit lucru, tu vrei sa vezi 486 00:29:24,490 --> 00:29:27,890 Ce altceva este legat de și să vedem ce altceva nu este legat de. 487 00:29:27,890 --> 00:29:30,700 Chestii din astea. Acesta poate fi util într-o serie de moduri. 488 00:29:30,700 --> 00:29:34,250 Dacă sunteți în căutarea pentru mai mult de o provocare și pentru a fi capabil să facă unele lucruri mult mai complexe 489 00:29:34,250 --> 00:29:38,740 Mi-ar lua în considerare a lua o privire la API Freebase. 490 00:29:38,740 --> 00:29:44,670 Dar în mare parte, Wikipedia este un loc foarte simplu pentru a merge atât de departe ca și obținerea de informații. 491 00:29:44,670 --> 00:29:48,340 Un alt loc în care să mă uit la Last.fm este, de fapt, și eu o să merg la site-ul 492 00:29:48,340 --> 00:29:53,800 în cazul în care unele persoane nu sunt familiarizați, dar Last.fm este de fapt o muzică 493 00:29:53,800 --> 00:29:57,220 gusturile și site-ul web recomandări. 494 00:29:57,220 --> 00:29:59,000 Puteți face un cont. 495 00:29:59,000 --> 00:30:04,250 Puteți începe încărcarea muzica de pe music player 496 00:30:04,250 --> 00:30:08,020 la site-ul web, si practic va începe oferindu-vă recomandări muzicale 497 00:30:08,020 --> 00:30:10,030 bazează pe ceea ce ascultați. 498 00:30:10,030 --> 00:30:14,270 >> De exemplu, dacă te duci la profilul dvs. de pagina-aceasta este a mea, 499 00:30:14,270 --> 00:30:18,180 puteți vedea aveți o listă de recent ascultat piese. 500 00:30:18,180 --> 00:30:22,550 Puteți vedea artiștii favoriți, de gabarit toate că astfel de lucruri, 501 00:30:22,550 --> 00:30:25,280 și din nou, există un API mare în spatele Last.fm, 502 00:30:25,280 --> 00:30:29,360  și îl puteți folosi pentru a face o mulțime de lucruri cu adevărat interesante. 503 00:30:29,360 --> 00:30:38,870 De exemplu, voi merge la pagina unui prieten care are acest site Last.fm Instrumente. 504 00:30:38,870 --> 00:30:42,380 Aceasta este de fapt o altă platformă care este construit pe API-ul Last.fm, 505 00:30:42,380 --> 00:30:45,420 și-l face o serie de lucruri destul de interesante. 506 00:30:45,420 --> 00:30:50,260 Dacă mă conectez cu numele meu de utilizator, de exemplu, 507 00:30:50,260 --> 00:30:53,110 Pot să-l întreb pentru a genera un tag cloud, de exemplu, 508 00:30:53,110 --> 00:30:56,480 și ce va face este să-mi dai înapoi o imagine de 509 00:30:56,480 --> 00:30:59,850 toate genurile diferite și care tip de lucru pe care îmi place să ascult. 510 00:30:59,850 --> 00:31:01,410 Cum se face acest lucru? 511 00:31:01,410 --> 00:31:05,670 Foarte practic este de a spune API Last.fm aici e acestui utilizator. 512 00:31:05,670 --> 00:31:10,710 Aș vrea să știu gen de fiecare cântec pe care le-am ascultat vreodată, 513 00:31:10,710 --> 00:31:15,130 și puteți face acest lucru prin a face o destul de simplu apel AJAX API pentru a Last.fm. 514 00:31:15,130 --> 00:31:18,990 Veți primi înapoi o listă mare, iar apoi, evident, alte lucruri se face 515 00:31:18,990 --> 00:31:22,280 să-l transforme într-un nor cuvânt, dar puteți vedea globală 516 00:31:22,280 --> 00:31:25,850 este foarte usor de accesat si foarte usor de utilizat. 517 00:31:25,850 --> 00:31:30,750 Foarte frumos pentru o serie de lucruri. 518 00:31:30,750 --> 00:31:35,940 >> Cred că e vorba de tot ce voi spune de ansamblu. 519 00:31:35,940 --> 00:31:39,040 Un ultim lucru voi menționa despre API-uri, în general, este că 520 00:31:39,040 --> 00:31:41,840 vei rula, uneori, in ceva numit rata de limitare, 521 00:31:41,840 --> 00:31:44,940 și ideea de rata de limitare este că nu vrei să abuzeze API-uri. 522 00:31:44,940 --> 00:31:48,130 Cu alte cuvinte, e foarte frumos că o mulțime de aceste site-uri au API-uri 523 00:31:48,130 --> 00:31:51,070 pe care le puteți merge la și de a folosi gratuit. 524 00:31:51,070 --> 00:31:54,460 Cu toate acestea, dacă sunteți de luare de milioane sau miliarde de cereri pe zi, 525 00:31:54,460 --> 00:31:57,610 de exemplu, dacă te-ai blocat într-o buclă infinită care este infinit interogarea 526 00:31:57,610 --> 00:32:00,680 un fel de API-lor și a obține înapoi o cantitate imensă de date, 527 00:32:00,680 --> 00:32:04,570 evident că nu e bine, deci ce o multime de API-uri s-au făcut este această rată limitare caracteristică 528 00:32:04,570 --> 00:32:09,970 care spune ca poti face doar 1000 de cereri pe zi pe adresa de IP sau ceva de genul asta. 529 00:32:09,970 --> 00:32:12,540 Și dacă faci o mulțime de testare și acest fel de lucru, 530 00:32:12,540 --> 00:32:14,890 vei rula, uneori, in care, dintr-o dată și vă va opri 531 00:32:14,890 --> 00:32:18,280 și spune nu, eu nu-ți dau de date orice mai mult. 532 00:32:18,280 --> 00:32:20,000 >> Ce vrei să faci este să joci după reguli. 533 00:32:20,000 --> 00:32:22,950 Doriți să vă asigurați că ați citit cu atenție spec. API. 534 00:32:22,950 --> 00:32:26,330 În cazul în care are anumite reguli atașat la acesta, ca poti face doar interogări X pe zi 535 00:32:26,330 --> 00:32:30,000 sau puteți accesa numai o parte a bazei de date un anumit număr de ori 536 00:32:30,000 --> 00:32:32,900 sau ceva de genul pe care doriți să asigurați-vă că rămânem la asta. 537 00:32:32,900 --> 00:32:38,360 Atâta timp cât joci în cadrul acestor reguli va avea, probabil, un moment foarte frumos folosind API-uri. 538 00:32:38,360 --> 00:32:42,030 Takeaway dvs. generală este API-uri sunt foarte, foarte util. 539 00:32:42,030 --> 00:32:45,610 >> Există un API pentru aproape orice serviciu web de mare acolo. 540 00:32:45,610 --> 00:32:50,700 Destul de mult orice parte a Instrumente Google Suite, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 Gmail, Google Calendar, toate aceste lucruri au API-uri. 542 00:32:54,390 --> 00:32:58,280 Aveți posibilitatea să le utilizați pentru a obține de la ambele date de server și trimite datele la server. 543 00:32:58,280 --> 00:33:00,870 Cu alte cuvinte, dacă ai vrut să facă o aplicatie calendar care poate actualiza 544 00:33:00,870 --> 00:33:04,190 Calendar cuiva Google, există un API pentru asta. 545 00:33:04,190 --> 00:33:07,810 Dacă vrei să faci ceva care o să vă spun în cazul în care 546 00:33:07,810 --> 00:33:12,530 locația o anumita adresa este puteți utiliza Google Maps API pentru asta. 547 00:33:12,530 --> 00:33:15,860 API-uri sunt fantastic de utile, și sunt peste tot. 548 00:33:15,860 --> 00:33:18,700 Dacă sunteți interesat într-un fel de idee, 549 00:33:18,700 --> 00:33:22,170 există, probabil, un API legate de care se poate utiliza pentru a obține o mulțime de date 550 00:33:22,170 --> 00:33:25,060 foarte rapid și foarte simplu. 551 00:33:25,060 --> 00:33:28,140 >> Dacă sunteți încă în căutarea pentru un proiect sau dacă vrei doar să joci în jurul valorii de 552 00:33:28,140 --> 00:33:31,820 cu ceva, în general, API-uri sunt cu siguranta merita faci. 553 00:33:31,820 --> 00:33:37,200 Mulțumesc, și eu sunt fericit pentru a răspunde la orice întrebări pe care voi le poate avea. 554 00:33:37,200 --> 00:33:44,900 Bine, mulțumesc mult. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]