1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Seminario] [A Programador la Enkonduko al API] 2 00:00:02,480 --> 00:00:04,059 [Billy Janitsch] [Universitato Harvard] [Tommy MacWilliam] 3 00:00:04,059 --> 00:00:08,220 [Jen CS50.] [CS50.TV] 4 00:00:08,220 --> 00:00:12,100 >> Saluton, ĉiuj, mi estas Billy, kaj hodiaŭ mi tuj parolos pri API, 5 00:00:12,100 --> 00:00:15,220 aŭ apliko programado interfacoj, 6 00:00:15,220 --> 00:00:20,040 specife en la kunteksto de CS50 fino projektoj kaj tiaj aferoj. 7 00:00:20,040 --> 00:00:22,490 Ĝenerale, kio estas API? 8 00:00:22,490 --> 00:00:25,530 En tre larĝaj terminoj, estas speco de meza viro kiu permesas 2 pecoj 9 00:00:25,530 --> 00:00:28,610 de programaro por komuniki unu kun la alia. 10 00:00:28,610 --> 00:00:32,530 Tio estas speco de tre ampleksa difino kaj ne estas tiel gravaj por tio, kion ni rigardis. 11 00:00:32,530 --> 00:00:35,450 Kion ni vere volas estas ia utila mezo tero 12 00:00:35,450 --> 00:00:40,570 por komuniki kun ia datumbazo ie. 13 00:00:40,570 --> 00:00:43,310 >> Jen letero, kaj esence la ideo estas ke 14 00:00:43,310 --> 00:00:46,790 ni estas apliko, kaj ni volas ricevi datumojn de datumbazo, 15 00:00:46,790 --> 00:00:49,570 sed ni ne volas konsulti la datumbazo rekte. 16 00:00:49,570 --> 00:00:52,710 Anstataŭe ni volas iri tra ĉi speco de meza homo, la API. 17 00:00:52,710 --> 00:00:55,440 La ideo malantaŭ tio estas nombroj 2 kaj 3 en la grafikaĵo 18 00:00:55,440 --> 00:00:57,750 estas ambaŭ tuj estos tre komplika kaj senorda. 19 00:00:57,750 --> 00:00:59,960 En aliaj vortoj, kiam la API estas informpeti la datumbazo, 20 00:00:59,960 --> 00:01:03,300 ĝi estas probable tuj estos uzante SQL tabloj kaj ĉio de tiu speco de ŝtofo, 21 00:01:03,300 --> 00:01:05,489 kaj ni lernis iom pri ĝi en CS50, sed entuta, 22 00:01:05,489 --> 00:01:07,590 vi rimarkis, ke estas iom da doloro. 23 00:01:07,590 --> 00:01:10,590 Ĝi alvenas tre, tre komplika kaj senorda, precipe kiam vi faras 24 00:01:10,590 --> 00:01:12,530 kompleksa demandoj kaj tiaj aferoj. 25 00:01:12,530 --> 00:01:15,960 >> Kion ni vere volas estas ia utila kaj simpla maniero 26 00:01:15,960 --> 00:01:19,780 atingi ke la datumoj, kaj tio estas la ideo malantaŭ nombroj 1 kaj 4 en la abako. 27 00:01:19,780 --> 00:01:23,600 Alivorte, ni volas vere simpla maniero por diri la API kion akiri por ni 28 00:01:23,600 --> 00:01:27,760 kaj vere simpla maniero atingi tiun datumoj dorso. 29 00:01:27,760 --> 00:01:33,020 Estas ĉefa vojo, kiun tiu datumo estas kutime sendis kaj ricevis, 30 00:01:33,020 --> 00:01:36,490 kio estas JSON, aŭ JavaScript Objekto Skribmaniero. 31 00:01:36,490 --> 00:01:40,370 Kiu povas varii iomete ĝis kiom vi sendu la peton al la API. 32 00:01:40,370 --> 00:01:43,210 En aliaj vortoj, se vi volas iom da certa kvanto de datumoj, 33 00:01:43,210 --> 00:01:46,670 kiel vi diras al la API por atingi tiun datumoj povas varii iomete. 34 00:01:46,670 --> 00:01:49,210 Kutime ĝi engaĝas farante ian reto peton. 35 00:01:49,210 --> 00:01:53,130 En aliaj vortoj, alirante ia URL ke tuj diru la API 36 00:01:53,130 --> 00:01:56,190 precize kion vi volas, sed la datumoj estas preskaŭ ĉiam sendis returne, 37 00:01:56,190 --> 00:01:59,530 alivorte, nombro 4 en JSON. 38 00:01:59,530 --> 00:02:01,030 >> Kio estas JSON ĝuste? 39 00:02:01,030 --> 00:02:03,030 Kiel mi diris, JavaScript Objekto Skribmaniero. 40 00:02:03,030 --> 00:02:07,090 Estas esence la universala normo por transdoni kaj ricevi datumojn. 41 00:02:07,090 --> 00:02:11,410 La ideo estas, ke vi havas tiuj 3 kategorioj de aĵoj. 42 00:02:11,410 --> 00:02:13,540 Vi havas arrays, hashmaps, kaj primitivoj. 43 00:02:13,540 --> 00:02:16,580 Arrays kaj hashmaps vi rigardis iomete en CS50, 44 00:02:16,580 --> 00:02:19,870 sed vi ia alveninta tre strikta senso de kio ili estas. 45 00:02:19,870 --> 00:02:22,780 En aliaj vortoj, kun tabeloj vi scias, ke ili estas tajpi baro, 46 00:02:22,780 --> 00:02:26,560 do vi nur havos unu speco de tipo kiu iras tra la tuta tabelo. 47 00:02:26,560 --> 00:02:29,310 JSON estas multe pli indulgentes kun tiaj aferoj. 48 00:02:29,310 --> 00:02:33,590 Esence la ideo estas vi konstrui ĉi tiun celon, 49 00:02:33,590 --> 00:02:36,270 kiu povas esti formita de iu el tiuj 3 aĵoj 50 00:02:36,270 --> 00:02:39,470 kaj povas esti formita de multnombraj de ili, kaj ili povas esti anidado. 51 00:02:39,470 --> 00:02:42,110 >> Jen speco de ekzemplo de JSON, 52 00:02:42,110 --> 00:02:47,910 kio estas tiuj buklaj krampoj tie reprezentas vian hashmap, 53 00:02:47,910 --> 00:02:51,400 kaj hashmap estas esence surĵeto de ia ŝlosilo 54 00:02:51,400 --> 00:02:53,340 al ia valoro. 55 00:02:53,340 --> 00:02:56,440 Vi vidos tie ke ni havas la propraĵoj ŝlosilo, 56 00:02:56,440 --> 00:02:59,600 kaj tio surĵeto sur tabelo, kiu estas tiu tuta afero. 57 00:02:59,600 --> 00:03:04,120 Ni vidas alian elementon de la hashmap, kiu estas tiu klavo isAwesome, 58 00:03:04,120 --> 00:03:07,370 kiu mapoj al komenca valoro de vera, en aliaj vortoj, bulea. 59 00:03:07,370 --> 00:03:09,420 Primitivoj povas esti kordoj. Ili povas esti entjeroj. 60 00:03:09,420 --> 00:03:11,960 Ili eblas bools, nenion tiel. 61 00:03:11,960 --> 00:03:18,410 Kaj vi vidos la enhavon de ĉi tabelo, ke propraĵoj punktoj al havas 2 kordoj en ĝi, 62 00:03:18,410 --> 00:03:20,050 mem-simila kaj mirinda. 63 00:03:20,050 --> 00:03:27,410 Tiuj estas 2 propraĵoj de JSON, kaj ni vidas ke JSON is awesome. 64 00:03:27,410 --> 00:03:30,060 Rigardi ke iom pli proksime mi iros konstrui 65 00:03:30,060 --> 00:03:32,870 pli kompleksa ekzemplo de JSON tie. 66 00:03:32,870 --> 00:03:37,000 >> Ni komencu per tabelo, ekzemple, nur malplenan tabelo. 67 00:03:37,000 --> 00:03:39,180 Sed tio estas speco de enuiga, tiel ni tuj plenigi ĝin iom, 68 00:03:39,180 --> 00:03:43,420 kaj kiel mi diris, tabeloj en JSON estas tajpi baro, 69 00:03:43,420 --> 00:03:46,400 do ni povus havi ankaŭ ĉenon tie, kio estas alta, 70 00:03:46,400 --> 00:03:49,330 kaj tio estas alia elemento de tiu tabelo. 71 00:03:49,330 --> 00:03:53,450 Kaj tiel same, ni povus aldoni hashmapping tie, kiu tuj havos kelkajn surĵetoj. 72 00:03:53,450 --> 00:04:00,470 Ĝi tuj devos surĵeto de nomo al la kordo Billy. 73 00:04:00,470 --> 00:04:04,590 Ni havas surĵeto de nomo al Billy, kaj ni havas surĵeto de 74 00:04:04,590 --> 00:04:10,860 preferita koloron al blua. 75 00:04:10,860 --> 00:04:12,700 Tio estas esence bona ekzemplo de JSON. 76 00:04:12,700 --> 00:04:18,160 Ĉio venas en-whoops, bezonas komo tie-cxiuj de la malsamaj partoj de ĝi. 77 00:04:18,160 --> 00:04:21,140 Denove, ĝi ne tajpi ligita, do vi povas havi ian tipoj 78 00:04:21,140 --> 00:04:24,710 ene ajn vi volas, kaj la ideo estas tio mem-simila. 79 00:04:24,710 --> 00:04:28,830 Alivorte, ĉi tie ĉi estas JSON objekto, kiel estas ĉi tiu afero, 80 00:04:28,830 --> 00:04:33,200 kiel estas ĝuste tio, do vi povas havi komencan esti objekto, 81 00:04:33,200 --> 00:04:35,680 tabelo esti objekto aŭ hashmap esti objekto. 82 00:04:35,680 --> 00:04:40,270 >> Kiel vi povas ia vidas, JSON estas vere, vere utila en kiu estas tiel versátil. 83 00:04:40,270 --> 00:04:45,860 Vi povas havi eblan datumoj kiujn vi povas koncipi stokitaj en JSON. 84 00:04:45,860 --> 00:04:47,900 Kiu faras ĝin vere bela lingvo por uzi kun API 85 00:04:47,900 --> 00:04:50,770 ĉar preskaux signifas ke negrave kio datumoj kiujn vi volas 86 00:04:50,770 --> 00:04:54,270 tie tuj estos iel atingi ĝin en JSON. 87 00:04:54,270 --> 00:04:58,600 Kelkaj propraĵoj kiuj faras JSON aparte bona por ĉi tiaj aferoj. 88 00:04:58,600 --> 00:05:02,270 Kiel vi povas vidi, kompare al multaj aĵoj kiuj vi laboris kun en CS50 89 00:05:02,270 --> 00:05:06,040 ĝi estas relative tre facile legi kaj ankaŭ tre facile skribi. 90 00:05:06,040 --> 00:05:09,700 Vi povas indent ĝin se vi volas, kiel mi faris en tiu ekzemplo, 91 00:05:09,700 --> 00:05:12,990 kiu donas al vi belan, belajn versio kiun vi vidas vere bone. 92 00:05:12,990 --> 00:05:17,150 Sed cetere, estas ankaux facile legi kaj verki por komputilo. 93 00:05:17,150 --> 00:05:19,870 En aliaj vortoj, ĝi estas facile analizi kaj facile kodi, 94 00:05:19,870 --> 00:05:23,820 kio signifas ke ĝi estas bela rapida gxis legi la datumojn raportas, 95 00:05:23,820 --> 00:05:26,460 kaj JSON povas esti generita vere rapide. 96 00:05:26,460 --> 00:05:30,300 >> Estas ankaŭ tre facila por aliri malsamaj partoj de JSON kaj tiaj aferoj. 97 00:05:30,300 --> 00:05:33,320 Tio estas bela, kaj krome, la fakto ke ĝi estas mem-simila, 98 00:05:33,320 --> 00:05:36,090 en aliaj vortoj, la fakto ke vi povas havi JSON ene JSON ene JSON 99 00:05:36,090 --> 00:05:40,040 estas vere bela por stoki datumoj. 100 00:05:40,040 --> 00:05:45,490 Alia parto kiu estas ĝenerale vere utila en labori kun API estas jQuery. 101 00:05:45,490 --> 00:05:49,290 Vi lernis iom da JavaScript, kiu estas agrabla maniero 102 00:05:49,290 --> 00:05:53,710 manipuli HTML kaj CSS ene de retejo. 103 00:05:53,710 --> 00:05:57,190 Sed ĝi povas ia esti doloro kodo en ebenaĵo JavaScript, 104 00:05:57,190 --> 00:05:59,810 grandparte ĉar JavaScript estas vere abundajn lingvo. 105 00:05:59,810 --> 00:06:03,020 Vi devas lerni multe da sintakso, kaj ĝuste fari tre simplajn aĵojn 106 00:06:03,020 --> 00:06:07,590 prenas multon de kodo, tiel jQuery estas biblioteko por JavaScript. 107 00:06:07,590 --> 00:06:09,800 En aliaj vortoj, ĝi estas JavaScript-dosiero, kiun vi povas ŝarĝi 108 00:06:09,800 --> 00:06:12,730 kaj tiam uzi jQuery funkcioj fari iujn aferojn. 109 00:06:12,730 --> 00:06:15,670 Kaj jQuery esence faras vian vivon tuta multe pli facila. 110 00:06:15,670 --> 00:06:20,390 Ĝi simpligas kion prenus centojn da linioj en JavaScript suben al kelkaj linioj en jQuery. 111 00:06:20,390 --> 00:06:24,430 >> Estas aparte utila se vi uzas API ĉar ĝenerale 112 00:06:24,430 --> 00:06:27,600 kiel vi povas aliri API estas farante AJAX petojn, 113 00:06:27,600 --> 00:06:30,130 kaj mi kredas Davido menciis en prelego kiun AJAX petoj 114 00:06:30,130 --> 00:06:33,120 Estas ĝenerale kiam vi faras reton peto al iu speco de servilo 115 00:06:33,120 --> 00:06:37,760 kaj contrarestar ia datumoj kaj ĝisdatigi la paĝon instantáneamente. 116 00:06:37,760 --> 00:06:41,840 Dum en ebenaĵo JavaScript kiu portus freneza nombroj de linioj 117 00:06:41,840 --> 00:06:44,620 por validigi ĉiujn titolaj kaj faros cxion de tiu speco de ŝtofo, 118 00:06:44,620 --> 00:06:46,810 jQuery havas vere simpla funkcio nomita AJAX, 119 00:06:46,810 --> 00:06:51,760 kaj cxiuj vi devas fari en AJAX estas doni la parametrojn, kiujn vi volas doni la API, 120 00:06:51,760 --> 00:06:56,830 la situo de la API kaj neniu plia speco de ebloj, kiujn vi volas agordi. 121 00:06:56,830 --> 00:07:02,480 Estas vere, vere agrabla kaj tre utila por tiu speco de afero. 122 00:07:02,480 --> 00:07:06,970 Tio estas ĉio ni bezonas komenci atingi niajn manojn malpuraj en API. 123 00:07:06,970 --> 00:07:10,220 >> Mi iros, por porti kelkajn ekzemplojn kaj esplori siajn malsamaj propraĵoj 124 00:07:10,220 --> 00:07:13,150 kaj kial ili estas utilaj por diversaj specoj de aferoj. 125 00:07:13,150 --> 00:07:15,570 La unua afero Mi fakte montri al vi estas iu kiu mi laboras en 126 00:07:15,570 --> 00:07:18,310 al mia esploro laboratorio, kiu estas Ngram Viewer, 127 00:07:18,310 --> 00:07:23,270 kaj esence la ideo de Ngram Viewer estas vi povas serĉi ian vorton 128 00:07:23,270 --> 00:07:28,840 aŭ frazo kaj vidu kiom ofte ĝi estas aperita en certa aro de teksto kun la tempo. 129 00:07:28,840 --> 00:07:33,160 Ĉi tiu ekzemplo jen cxi tiu datumo aron de beboj 130 00:07:33,160 --> 00:07:36,480 kiuj naskiĝis en Novjorko inter 1920 kaj 2000. 131 00:07:36,480 --> 00:07:40,090 Ni povas serĉi, ekzemple, pro la nomo Jennifer, 132 00:07:40,090 --> 00:07:44,400 kaj ni vidos, ke antaŭ-1960 ĝi vere ne uzis cxiuj multe, 133 00:07:44,400 --> 00:07:48,900 kaj poste kiam ni atingos en postaj jaroj ĝi estos uzata farante pli kaj pli. 134 00:07:48,900 --> 00:07:53,680 Ni povas ankaŭ fari komparojn, do se ni komparas Jennifer al, ekzemple, Tomaso, 135 00:07:53,680 --> 00:07:56,520 ni povas vidi Tomaso estis bela disvastiĝinta tra la tuta historio, 136 00:07:56,520 --> 00:07:58,780 dum Jennifer estas pli freŝa nomo. 137 00:07:58,780 --> 00:08:00,590 Ni povas fari tian aferon. 138 00:08:00,590 --> 00:08:02,460 >> Kiel funkcias tiu apliko laboro? 139 00:08:02,460 --> 00:08:06,030 Esence, ĝi funkcias tra API. 140 00:08:06,030 --> 00:08:08,660 En aliaj vortoj, ni havas iujn parametrojn tie. 141 00:08:08,660 --> 00:08:11,360 Ni havas la parametroj de kion ni reale sercxas, 142 00:08:11,360 --> 00:08:13,720 kiuj estas tiuj nomoj, kaj tiam ni havas kelkajn aliajn propraĵoj, 143 00:08:13,720 --> 00:08:16,570 kiel la Y akso kaj la X akso. 144 00:08:16,570 --> 00:08:18,440 Vi povas vidi, ni havas kelkajn malsaman ebloj ĝis la 145 00:08:18,440 --> 00:08:20,860 tempo rezolucio uzi kaj tiaj aferoj. 146 00:08:20,860 --> 00:08:26,700 Ni havas tiuj ebloj gxis kion datumoj ni efektive volas de la datumbazo, 147 00:08:26,700 --> 00:08:29,400 kaj ni volas ke la datumoj reen en iu utila maniero. 148 00:08:29,400 --> 00:08:34,020 Ordinare, se ni informpeti la datumbazo rekte ĝi ordigi de esti doloro fari 149 00:08:34,020 --> 00:08:38,970 ĉar supozeble tiu datumo pri bebo nomoj vivas en iu datumbazo ie, 150 00:08:38,970 --> 00:08:42,789 kaj estus vere komplikis havi por konsulti ĝin permane 151 00:08:42,789 --> 00:08:45,830 kaj decidi precize kion datumoj reveni. 152 00:08:45,830 --> 00:08:49,300 En aliaj vortoj, ni nur zorgas pri Jennifer kaj Thomas en ĉi tiu kazo, 153 00:08:49,300 --> 00:08:53,410 kaj ni nur zorgas pri la certa akso kaj ĉiuj tiaj aĵoj. 154 00:08:53,410 --> 00:08:55,720 >> Kiel ni atingas ĉirkaŭ ĉi? 155 00:08:55,720 --> 00:09:01,200 Fosi en ĉi API iom pli mi montros al vi alia ekzemplo de ĉi tiu platformo 156 00:09:01,200 --> 00:09:04,490 kiu uzas iomete malsaman datumoj aro. 157 00:09:04,490 --> 00:09:09,950 Ĉi tiuj datumoj aro, anstataŭ esti bebo nomoj, estas fakte nur en la tuta 158 00:09:09,950 --> 00:09:12,460 presi publikigo datumbazon de Open Library, 159 00:09:12,460 --> 00:09:18,410 kiu estas giganta fonto de tekstoj eldonitaj dum la lastaj 100 aŭ tiel jaroj. 160 00:09:18,410 --> 00:09:23,540 La ideo estas ke ni havas ĉi compository de milionoj kaj milionoj da teksto, 161 00:09:23,540 --> 00:09:27,420 kiuj ni povas nun serĉi aliajn vortojn kaj frazojn in 162 00:09:27,420 --> 00:09:30,840 Jen ekzemplo kiu varias iom malsame de la antaŭa ekzemplo 163 00:09:30,840 --> 00:09:33,350 Mi montris al vi, kio estas ni havas tiuj 3 search konsultoj, 164 00:09:33,350 --> 00:09:36,290 milito, milito, kaj la franca vorto por milito, kiu estas guerre. 165 00:09:36,290 --> 00:09:40,380 Kaj ni sercxas ene 3 malsamaj sekcioj de la tuta datumbazo. 166 00:09:40,380 --> 00:09:45,080 En aliaj vortoj, en ĉi tiu unua konsulto ni nur serĉis en Usono, 167 00:09:45,080 --> 00:09:51,150 en la dua oni nur en la UK, kaj la tria nur de verkoj eldonitaj en Francio. 168 00:09:51,150 --> 00:09:53,120 Ni vidas kelkajn interesajn ŝablonoj emerĝi. 169 00:09:53,120 --> 00:09:58,180 Ekzemple, ni vidas dekstre ĉi tie kiu- 170 00:09:58,180 --> 00:10:02,410 oops, mi paneas la akso iomete, sed vi povas vidi dekstre en ĉi tiu rango ĉi tie 171 00:10:02,410 --> 00:10:05,730 ĉirkaŭ la Civila Milito tie estas granda spiko en la usona eldono 172 00:10:05,730 --> 00:10:08,340 sed ne tia granda spiko en la aliaj du, kaj tio estas evidente ĉar 173 00:10:08,340 --> 00:10:10,880 la Usona Enlanda Milito okazis en tiu punkto. 174 00:10:10,880 --> 00:10:13,890 >> Ni povas vidi iom malvarmeta stuff tie, 175 00:10:13,890 --> 00:10:17,070 sed kion ni vere zorgas pri kiel ni ricevis ĉi informon. 176 00:10:17,070 --> 00:10:21,320 Mi prenos vin malantaŭ la scenoj en ĉi tiun programon en iomete. 177 00:10:21,320 --> 00:10:24,540 A neat lertaĵo estas se vi laboras kun la ejo kaj tipon de volas scii 178 00:10:24,540 --> 00:10:27,430 kio okazas malantaŭ la scenoj, vi povas malfermi la programisto iloj. 179 00:10:27,430 --> 00:10:30,200 Mi tuj iros uzante Chrome estas programisto iloj, kaj alveni al tiuj 180 00:10:30,200 --> 00:10:35,160 vi povas fari kontrolon, sxangxigxo, J, kaj tio kondukas vin al la JavaScript konzolo. 181 00:10:35,160 --> 00:10:37,420 Estas kelkaj langetoj tie. 182 00:10:37,420 --> 00:10:39,680 Ili povas ĉiuj esti bela utila sub malsamaj cirkonstancoj, sed mi zorgas pri la reto 183 00:10:39,680 --> 00:10:44,150 langeton nun, kaj mi vere devas refreŝigi atingi ke laboristino. 184 00:10:44,150 --> 00:10:50,180 Ho, pardonu. 185 00:10:50,180 --> 00:10:52,320 Li ŝatas doni hazarda ekzemplo. 186 00:10:52,320 --> 00:10:54,700 Konsentite, ni uzos ĉi tiun ekzemplon anstataŭ tiam. 187 00:10:54,700 --> 00:11:01,330 >> La ideo estas tie estas tio API tie, 188 00:11:01,330 --> 00:11:05,330 kaj vi povas vidi ĝuste kio la API revenas. 189 00:11:05,330 --> 00:11:10,220 Ĉi tio estas kion la apliko contrarestar de la API, veniginte ke peton. 190 00:11:10,220 --> 00:11:13,680 Lasu min zomi iom, 191 00:11:13,680 --> 00:11:18,340 kaj ni povas esence vidas estas nur serio de klavo valoro paroj en JSON. 192 00:11:18,340 --> 00:11:23,220 En aliaj vortoj, ni havas ĉi tie hashmap ke tio surĵeto valoroj. 193 00:11:23,220 --> 00:11:26,440 En aliaj vortoj, ĝi estas surĵeto jaroj valoroj. 194 00:11:26,440 --> 00:11:32,600 En 1765 ajn vorton ni komence serĉis uzas 90 fojoj 195 00:11:32,600 --> 00:11:35,810 el 1 miliono, do ni contrarestar tiu rezulto. 196 00:11:35,810 --> 00:11:40,280 Ne precize JSON ekde ni havas ĉi iom rezulto header tie, 197 00:11:40,280 --> 00:11:45,630 sed rimarkas ke ĉi tiu tuta objekto tie estas nur granda big JSON blob. 198 00:11:45,630 --> 00:11:51,070 Ni havas aron tie kiu enhavas cxi tiun tutan elementon, 199 00:11:51,070 --> 00:11:55,590 kaj vi povas vidi ke tutaj ero finas tie, kaj tiam ni havi alia granda elemento 200 00:11:55,590 --> 00:11:59,430 kiu iras la tutan vojon malsupren al la fino, kaj kiu finas ĉi tie. 201 00:11:59,430 --> 00:12:02,200 Ni havas vere grandan tabelo kun 2 celoj en ĝi, 202 00:12:02,200 --> 00:12:04,630 kaj ĉiu el tiuj objektoj estas hashmap. 203 00:12:04,630 --> 00:12:07,340 Vi povas vidi ene de ĉiu el tiuj hashmaps ni havas surĵeto 204 00:12:07,340 --> 00:12:12,700 de tiu indekso valoro al 0 kaj ĉi valora valoro al alia hashmap, 205 00:12:12,700 --> 00:12:18,360 kio estas denove surĵeto X akso valoroj al Y akso valoroj. 206 00:12:18,360 --> 00:12:20,970 >> Vi povas vidi JSON ricevas iom komplika, sed entuta, 207 00:12:20,970 --> 00:12:24,190 ĝi estas fakte tre utila, kaj ĝi estas tre facila por aliri kompare kun 208 00:12:24,190 --> 00:12:27,390 aliaj diversaj formoj de skribmaniero. 209 00:12:27,390 --> 00:12:30,550 Koncerne kion ni reale sendi datumojn por la API por akiri, 210 00:12:30,550 --> 00:12:34,690 Mi tuj iros en la malantaŭan finon iom ĉi tie. 211 00:12:34,690 --> 00:12:39,850 Ĉi tiu estas la granda JavaScript dosieron ke tio manipulante ĉiuj de la interagoj de la TTT-app, 212 00:12:39,850 --> 00:12:44,810 kaj tiel ni ne zorgas pri la plimulto de tio, sed ni faru zorgo pri kelkaj el ĝi. 213 00:12:44,810 --> 00:12:47,410 Ekzemple, ni zorgas pri tio buildQuery funkcio, 214 00:12:47,410 --> 00:12:50,670 kaj la ideo de ĉi tiu funkcio estas esence ĝi estas cxirkauxrigardante la paĝo, 215 00:12:50,670 --> 00:12:53,750 decidi kio la uzanto volas konsulti, en aliaj vortoj, 216 00:12:53,750 --> 00:12:57,090 kontrolanta tiuj skatoloj kie mi enigo lia serĉo terminoj, 217 00:12:57,090 --> 00:13:01,380 kontrolanta la malsamaj Y kaj X akso valoroj kiuj ili jam elektita kaj ĉiuj tiaj aferoj, 218 00:13:01,380 --> 00:13:06,650 kaj tuj kraĉis tiun query valoro, kiun mi povas tiam sendi for al la API. 219 00:13:06,650 --> 00:13:09,180 >> Ĉi aspektas komplika, kaj ĝi estas bela komplika 220 00:13:09,180 --> 00:13:18,090 sed kion mi tuj ne-fakte, mi jam faras tion, kio estas granda- 221 00:13:18,090 --> 00:13:21,640 estas ke mi iros akiri la konzolo por presi precize tiu konsulto valoro 222 00:13:21,640 --> 00:13:28,110 ke ĝi estas sendi for al la API. 223 00:13:28,110 --> 00:13:30,870 Tio estas vere tie ĉi. Pardonu, ĝi eligas multon. 224 00:13:30,870 --> 00:13:33,690 Sed ĉi tiu estas kion ni zorgas pri, tiu celo ĉi tie. 225 00:13:33,690 --> 00:13:35,300 Ĉi tiu estas la demando objekto. 226 00:13:35,300 --> 00:13:40,670 Alivorte, ĉi tiu estas ekzakte kion la retejo apliko sendas al la API, 227 00:13:40,670 --> 00:13:45,730 kaj do ni rigardu interne iom, kaj ni vidas ni havas kelkajn valorojn tie. 228 00:13:45,730 --> 00:13:48,710 Ni vidas ni havas ĉi grafo tipo, kiu estas spritaĵoj por miliono vortoj, 229 00:13:48,710 --> 00:13:51,460 kio estas ĝuste kion ni elektita en la Y akso super tie. 230 00:13:51,460 --> 00:13:53,740 Tie estas kie tiu venas de. 231 00:13:53,740 --> 00:13:58,010 Ni havas datumbazon valoro, kio signifas, ke ekzistas iu certa datumbazo 232 00:13:58,010 --> 00:14:01,610 ke tiu informo estas vivantaj, kaj ni volas atingi ke datumoj specife 233 00:14:01,610 --> 00:14:04,950 kontraste al la bebo nomoj datumoj, ekzemple. 234 00:14:04,950 --> 00:14:08,320 Tiam ni havas ĉi grupoj valoro, 235 00:14:08,320 --> 00:14:12,090 kiu diras, ke ni volas serĉi per jaro kompare al 236 00:14:12,090 --> 00:14:16,030 iu ajn alia X akso valoro. 237 00:14:16,030 --> 00:14:19,040 Tiam ni havas metodon, kiun iuj API faros multnombraj aĵoj. 238 00:14:19,040 --> 00:14:22,360 Alivorte, ĉi API povas ankaŭ revenos aliaj tipoj de datumoj, 239 00:14:22,360 --> 00:14:27,740 sed en ĉi tiu kazo, ni volas ke surĵeto de X al Y akso valoroj akso valoroj. 240 00:14:27,740 --> 00:14:30,730 Tion, ke diras li fari tie, 241 00:14:30,730 --> 00:14:35,020 kaj ni havas ĉi serĉo limoj tabelo, kiu enhavas 2 valorojn. 242 00:14:35,020 --> 00:14:40,720 La unua estas, kion ni vidas tie, kiu estas ĉiuj valoroj 243 00:14:40,720 --> 00:14:43,020 enhavis en tiu unua iom skatolo ĉe la supro. 244 00:14:43,020 --> 00:14:47,570 >> Alivorte, ni volas serĉi la vorton batalo, kaj ni volas filtri ĝin 245 00:14:47,570 --> 00:14:51,920 por anglaj tekstoj ene usona literaturo. 246 00:14:51,920 --> 00:14:54,590 Ni havas tiu lando, kiu estas Usono. 247 00:14:54,590 --> 00:14:59,130 Ni havas lingvo, kiu estas la angla, do ni havas ĉiujn tiujn malsamajn partojn 248 00:14:59,130 --> 00:15:02,690 kiuj ĉiuj diris la API ekzakte kion ni volas. 249 00:15:02,690 --> 00:15:04,940 Ni ne scias kion la datumoj kiujn ni reiros ankoraux, 250 00:15:04,940 --> 00:15:10,970 sed ni scias ke la datumoj iras preni iun formon. 251 00:15:10,970 --> 00:15:13,650 Ĉi tiu ekzemplo estas speco de la komplika flanko, 252 00:15:13,650 --> 00:15:16,180 kaj vi ne nepre devas uzi API ĉi komplekso, 253 00:15:16,180 --> 00:15:20,600 sed ĉi tiu estas montri al vi la rango kaj potenco de kio API povas fari. 254 00:15:20,600 --> 00:15:24,980 En aliaj vortoj, uzante relative simpla konsulto sistemo ni esence havas enigo skatolo 255 00:15:24,980 --> 00:15:29,490 kun kelkaj aliaj selectores en malsamaj lokoj. 256 00:15:29,490 --> 00:15:32,010 >> Lasu min zoom reen cxi tie. 257 00:15:32,010 --> 00:15:37,720 Ni havas enigo skatolo kun kelkaj malsamaj pridatumon unuarangaj, 258 00:15:37,720 --> 00:15:40,610 kaj ni havas Y akso kaj X akso unuarangaj. 259 00:15:40,610 --> 00:15:42,830 Ni ne vere havas ke multaj kampoj, 260 00:15:42,830 --> 00:15:46,210 kaj ni povas vidi tre facile ni povos konsulti ian API 261 00:15:46,210 --> 00:15:48,510 kaj akiri datumoj dorso kaj tiam metis ĝin en ĉi grafikaĵo, 262 00:15:48,510 --> 00:15:52,080 kiu estas tiam tuj montri ĝin en utila formo. 263 00:15:52,080 --> 00:15:54,970 Rigardi alian ekzemplon kiu povus esti iom pli familiaraj al vi infanoj 264 00:15:54,970 --> 00:15:56,510 ni tuj plenumos al Facebook. 265 00:15:56,510 --> 00:15:59,440 Facebook API nomas la Facebook Grafikaĵo, 266 00:15:59,440 --> 00:16:04,390 kaj esence kion tio signifas estas Facebook konsideras sin ĉi amasa datumbazo 267 00:16:04,390 --> 00:16:08,000 de multaj malsamaj partoj kiuj ĉiuj havas iujn rilatojn inter si. 268 00:16:08,000 --> 00:16:11,070 Alivorte, mi estas uzanto de Facebook, tiel mi havas profilo, 269 00:16:11,070 --> 00:16:14,310 kaj mi ankaŭ havas iujn amikojn, kaj ĉiu el ili havas profilo, 270 00:16:14,310 --> 00:16:17,580 kaj ĉiu el miaj amikoj havas muron, kiu havas malsamajn komentoj pri gxi, 271 00:16:17,580 --> 00:16:20,800 kaj ĉiu el tiuj komentoj havas gustojn kaj ĉiuj tiaj aferoj. 272 00:16:20,800 --> 00:16:23,100 >> Ekzistas multaj malsamaj partoj al Facebook. 273 00:16:23,100 --> 00:16:26,670 Ĝi estas ege kompleksa API, kaj jen mia tunoj vi povas fari per ĝi, 274 00:16:26,670 --> 00:16:28,450 sed estas vere bela simpla uzi. 275 00:16:28,450 --> 00:16:33,680 Mi tuj komencos eliri irante al graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 kio estas mia unika konton nomo, kaj via konto nomo aŭ esti 277 00:16:38,430 --> 00:16:43,710 ia vorto se vi elektis ĝin, aŭ eble nur estos ĉeno de nombroj. 278 00:16:43,710 --> 00:16:46,360 Kion ni reiros estas sufiĉe baza informo. 279 00:16:46,360 --> 00:16:50,460 Ni vidas, ke mi havas unua nomo, kiu estas Billy, familinomo, kiu estas Janitsch. 280 00:16:50,460 --> 00:16:53,370 Estas unika Facebook ID, kiun mi havas. 281 00:16:53,370 --> 00:16:57,920 Vi povas vidi ke mi estas viro kaj ke mi havas mian lingvon opcio 282 00:16:57,920 --> 00:17:01,290 al la brita angla. 283 00:17:01,290 --> 00:17:03,490 En aliaj vortoj, ni vidas tre baza informo ĉi tie. 284 00:17:03,490 --> 00:17:08,670 Ne tro multe, sed ĝi donas al ni ideon pri kio estas tie. 285 00:17:08,670 --> 00:17:10,849 >> Ni povas fari la samon al David Malan, ekzemple. 286 00:17:10,849 --> 00:17:13,599 Mi kredas lia nomo estas dmalan. 287 00:17:13,599 --> 00:17:16,369 Ni rigardu Davidon Malan havas unika ID. 288 00:17:16,369 --> 00:17:19,300 Li havas nomon, antaŭnomon, dua nomo, familinomo. 289 00:17:19,300 --> 00:17:24,210 Ni vidas ankaŭ, ke li estas viro kaj havas sian lingvon aro al usona angla. 290 00:17:24,210 --> 00:17:26,869 En aliaj vortoj, ni vidas belajn baza informo ĉi tie. 291 00:17:26,869 --> 00:17:28,860 Nun, kio okazas se ni provos kontroli ion alian? 292 00:17:28,860 --> 00:17:33,060 Diru min interesas kion David Malan ŝatis en Facebook. 293 00:17:33,060 --> 00:17:36,860 Mi povas do / likes. Nun ni kolizios problemo. 294 00:17:36,860 --> 00:17:39,280 Ni havas ian eraron kiu diras aliron ĵetono 295 00:17:39,280 --> 00:17:41,660 necesas peti ĉi rimedo. 296 00:17:41,660 --> 00:17:44,730 Sed se vi pensas pri tio, ke efektive havas sencon ĉar estus stranga 297 00:17:44,730 --> 00:17:47,830 se vi povus aliri al ĉiu unuopa parto de Facebook datumbazo 298 00:17:47,830 --> 00:17:50,170 nur el ia simpla API, ĉu ne? 299 00:17:50,170 --> 00:17:56,040 En aliaj vortoj, supozeble viaj informoj ne povas aliri per ĉiu kiu volas ĝin. 300 00:17:56,040 --> 00:17:58,330 >> Tiu eraro estas precize kion tio signifas. 301 00:17:58,330 --> 00:18:03,630 Iuj API postulas iujn permesojn por konsenti liaj datumoj. 302 00:18:03,630 --> 00:18:06,940 Kaj eĉ pli progresintaj API, kiel la Facebook unu, 303 00:18:06,940 --> 00:18:09,840 postulos iuj permesoj por fari certajn aferojn. 304 00:18:09,840 --> 00:18:12,650 Mi povas vidi ĉi bazaj informoj pri Davido Malan. 305 00:18:12,650 --> 00:18:15,950 Mi povas vidi ke li estas viro kaj ke li vivas en Usono, 306 00:18:15,950 --> 00:18:19,270 sed mi ne povas vere vidi ion pasinta tio. 307 00:18:19,270 --> 00:18:23,050 Por ĉirkaŭiri tiun nuntempe, Facebook havas ĉi bela ilo 308 00:18:23,050 --> 00:18:27,690 kiu estas la grafeo API esploristo, kaj la ideo de tio estas vi povas ordigi de 309 00:18:27,690 --> 00:18:31,880 konsistigas permesojn por vi mem bazita sur via propra konto 310 00:18:31,880 --> 00:18:35,680 kaj tiam vidi aferojn kiu specife via konto povas vidi. 311 00:18:35,680 --> 00:18:45,120 Ekzemple, se mi faras graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 whoops, mi supozas mi devas revalidigi mia signo tie. 313 00:18:53,510 --> 00:18:55,950 Okay. 314 00:18:55,950 --> 00:19:01,740 Se mi faras tion denove, granda, nun mi vidas, ke mi alvenas ĉi objekto reen 315 00:19:01,740 --> 00:19:06,300 kiu diras ke mi ŝatas lageto nudeloj, kiuj estas en la kategorio Ludoj kaj ludiloj. 316 00:19:06,300 --> 00:19:08,620 Mi ŝatas rosmaroj, kiu estas en la kategorio Besto. 317 00:19:08,620 --> 00:19:10,180 Tiuj estas miaj realaj Facebook ŝatas. 318 00:19:10,180 --> 00:19:13,280 Ili estas ia hontinda. 319 00:19:13,280 --> 00:19:16,090 >> Sed ni povas vidi ĉi datumoj estas ĉiuj revenis en JSON. 320 00:19:16,090 --> 00:19:18,160 Estas bela legebla. 321 00:19:18,160 --> 00:19:20,970 En aliaj vortoj, ni havas ĉi surĵeto de datumoj al ia tabelo, 322 00:19:20,970 --> 00:19:25,220 kaj ĉiu ero de tiu tabelo estas hashmap kiu mapas 323 00:19:25,220 --> 00:19:28,530 la nomo de kiel kaj la kategorio de kiel. 324 00:19:28,530 --> 00:19:31,240 Ĉiu kiel havas unika ID. 325 00:19:31,240 --> 00:19:34,510 Ekzistas ĉiaj malsamaj aĵoj de datumoj, ke ni povas atingi, 326 00:19:34,510 --> 00:19:37,980 kaj se vi interesiĝas uzante la Facebook API por CS50 fina projekto 327 00:19:37,980 --> 00:19:40,720 aŭ ion kiel ke fakte sufiĉe doable. 328 00:19:40,720 --> 00:19:44,260 Esence kiel vi akiris ĉirkaŭ la aŭtentokontrolo afero estas Facebook 329 00:19:44,260 --> 00:19:48,030 uzas sistemon nomita OAuth, aŭ Malferma aŭtentigo, 330 00:19:48,030 --> 00:19:52,870 kaj mi ne volas eniri ĝin nun ĉar OAuth aŭ malsama tipo 331 00:19:52,870 --> 00:19:56,060 de aŭtentokontrolo inklinas varii multe inter diversaj API, 332 00:19:56,060 --> 00:19:58,320 do mi povus pasigi longan tempon tuj super ĉiu, 333 00:19:58,320 --> 00:20:01,170 sed ili estas efektive bela mem-klarigan. 334 00:20:01,170 --> 00:20:04,050 >> Se vi Google Facebook API ĝi estas tre legebla. 335 00:20:04,050 --> 00:20:06,670 Ekzistas tuta spec. 336 00:20:06,670 --> 00:20:10,210 Ekzemple, jen estas la dokumentadon por la Facebook API, 337 00:20:10,210 --> 00:20:14,170 kaj vi povas vidi min sur la Vikipediista paĝo, do mi povas lerni pri la malsamaj specoj de aferoj 338 00:20:14,170 --> 00:20:17,170 ke estas disponeblaj por ricevi gxis datumoj 339 00:20:17,170 --> 00:20:21,550 kaj ankaŭ la malsama permesoj, ke mi bezonas por atingi ilin. 340 00:20:21,550 --> 00:20:25,470 Kiel ni vidis, tion ni ne bezonas permesojn por aliri la nomo aŭ la sekso, 341 00:20:25,470 --> 00:20:29,380 sed tie ke ni bezonas permesojn por plej aferoj. 342 00:20:29,380 --> 00:20:33,040 Ĉi tiu paĝo, aŭ pli ĝuste, tiu retejo ankaŭ diros al vi kiel akiri 343 00:20:33,040 --> 00:20:35,640 signo por povi autenticar mem. 344 00:20:35,640 --> 00:20:39,290 Plej aŭtentokontrolo sistemoj uzas ian signon 345 00:20:39,290 --> 00:20:42,880 kie vi ricevis ĉi tiun solan valoron, kiu estas vere longa kaj hazarda vico, 346 00:20:42,880 --> 00:20:46,240 kaj tiu maniero povas asocii la peto, ke vi faras kun vi. 347 00:20:46,240 --> 00:20:50,560 Alivorte, ili scias, ke vi nenion faras suspektinda kun iliaj datumoj. 348 00:20:50,560 --> 00:20:53,340 Ili scias precize kion vi ricevas. 349 00:20:53,340 --> 00:20:56,180 Ili ankaŭ scias, ke vi havas permeson por vidi tiun informon. 350 00:20:56,180 --> 00:20:59,110 >> Se vi faris Facebook programo kaj via programo havas iujn uzantojn, 351 00:20:59,110 --> 00:21:03,380 kaj tiuj uzantoj permesis ke programo por aliri iujn partojn de lia profilo, 352 00:21:03,380 --> 00:21:07,790 tiam tiu, kiu API ŝlosilo aŭ ĵetono, ke tiu programo uzas 353 00:21:07,790 --> 00:21:11,090 povos aliri la datumojn por tiuj uzantoj. 354 00:21:11,090 --> 00:21:13,780 Tio povas soni komplika, sed ĝi ne estas tro malbona, 355 00:21:13,780 --> 00:21:16,810 kaj se vi volas uzi Facebook mi forte rekomendas ke vi 356 00:21:16,810 --> 00:21:18,990 konsideri muzikumante kun iliaj API. 357 00:21:18,990 --> 00:21:21,610 Ĝi estas tre cool kaj vi povas fari multajn malsamajn aferojn kun ĝi. 358 00:21:21,610 --> 00:21:24,880 Se la uzanto donas al vi tiujn permesojn vi povas eĉ reiri al la API 359 00:21:24,880 --> 00:21:28,820 kaj diru mi volas reale afiŝi al ĉi uzanto muro, aŭ mi volas havi ilin afiŝi foton, 360 00:21:28,820 --> 00:21:32,390 kaj tial en via datumstrion vi iam akiri tiujn tedas aĵoj 361 00:21:32,390 --> 00:21:37,840 dirante via amiko estas spektis tiun video sur ia stranga ejo aŭ io kiel tio. 362 00:21:37,840 --> 00:21:43,120 Tio estas ĉar tiu programo estis donita aliron por afiŝi en tiu persono muro. 363 00:21:43,120 --> 00:21:48,350 La ideo entute, la Facebook API estas bela komplika sed ankaŭ vere utila. 364 00:21:48,350 --> 00:21:53,220 Definitive valoras kontroli, ĉu vi ankoraŭ serĉas fina projekto. 365 00:21:53,220 --> 00:21:57,930 >> Alia suite de API, ke mi iros, por transiri estas CS50 API. 366 00:21:57,930 --> 00:22:00,070 Lasu min zomi tie. 367 00:22:00,070 --> 00:22:03,390 CS50 fakte kunmetis tuta serio de APIs 368 00:22:03,390 --> 00:22:07,080 ke vi povas uzi por fina projekto aŭ simple por nenio, ke vi faras. 369 00:22:07,080 --> 00:22:12,830 Kaj ili estas plejparte Harvard rilatigita, kaj ili varias de la HUDS menuo, 370 00:22:12,830 --> 00:22:17,780 ekzemple, al ĉi Harvard Eventoj API, kiu lasos vin aliri al listo de 371 00:22:17,780 --> 00:22:21,290 malsamaj okazaĵoj kiuj okazas en Harvard kaj tiaj aferoj. 372 00:22:21,290 --> 00:22:24,510 Kaj tiel ni povas alklaki iun el tiuj kaj akiri spec por tio, 373 00:22:24,510 --> 00:22:28,090 kiu vi povos trovi por ajna API, kaj la ideo estas 374 00:22:28,090 --> 00:22:33,920 ĝi permesas scii, A, specife kion peti de la API kaj kiel peti ĝin. 375 00:22:33,920 --> 00:22:37,370 En aliaj vortoj, se mi volas ĉiujn eventojn kiuj okazas morgaŭ 376 00:22:37,370 --> 00:22:42,550 tiam Mi devas evidente donas tiu dato, ke mi volas en certa formato, 377 00:22:42,550 --> 00:22:46,030 kaj B, ĝi rakontos al mi precize kio okazas redoni al mi. 378 00:22:46,030 --> 00:22:48,590 Ĝi diros Mi tuj revenos al vi JSON objekto, 379 00:22:48,590 --> 00:22:50,960 aŭ kiel vi povas vidi, estas malsamaj formatoj. 380 00:22:50,960 --> 00:22:54,050 >> Vi ankaŭ povas redoni la datumojn kiel CSV, ekzemple. 381 00:22:54,050 --> 00:22:57,620 Sed vi scias ĝuste kiel ke la datumoj tuj serĉos kiam vi ricevas ĝin 382 00:22:57,620 --> 00:23:00,610 tiel vi povas atendi por fari iujn aferojn kun ĝi. 383 00:23:00,610 --> 00:23:07,240 Ni povas rulumi malsupren kaj vidi, ekzemple, se ni volas konsulti la API 384 00:23:07,240 --> 00:23:11,500 por havi kalendaron, tiam ni povas uzi ĉi aparta URL 385 00:23:11,500 --> 00:23:16,480 kaj donu iujn parametrojn kiuj tuj estos la datumoj kiujn ni volas precize. 386 00:23:16,480 --> 00:23:19,540 Kaj same, se ni volas ke la datumoj reen en certa formato, 387 00:23:19,540 --> 00:23:23,790 tiam ni povas peti ĝin al eligo la datumojn en CSV, 388 00:23:23,790 --> 00:23:27,700 kaj tio estas ĝuste alia parametro kiu ni pasas al la API. 389 00:23:27,700 --> 00:23:29,210 Multaj cool aferojn por fari tie. 390 00:23:29,210 --> 00:23:32,550 Mi certe rekomendas ekiras la CS50 API. 391 00:23:32,550 --> 00:23:36,000 >> Mi iros rigardi tiun Harvard Manĝo API precipe por iom. 392 00:23:36,000 --> 00:23:39,870 Unu aferon mi vere desegnita estas ĉi Harvard Noms TTT-ejo, 393 00:23:39,870 --> 00:23:44,930 kiu uzas la CS50 Manĝo API por rekuperi la HUDS menuo por la tago. 394 00:23:44,930 --> 00:23:50,400 Kaj por etendo lernejo popolo HUDS estas la manĝ servo ĉe Harvard. 395 00:23:50,400 --> 00:23:55,130 Kion vi ricevas estas ĉi paĝon, kiu enhavas ĉiujn de la manĝoj por la tago, do ni vidos lunĉo. 396 00:23:55,130 --> 00:23:58,130 Ni havas kelkajn malsamaj kategorioj. Ni havas la fabo kaj tutaj akno stacidomo. 397 00:23:58,130 --> 00:24:00,340 Ni havas la bruna rizo stacidomo. 398 00:24:00,340 --> 00:24:03,360 Ni povas vidi brunch ni havas ĉi tiujn kelkajn manĝerojn. 399 00:24:03,360 --> 00:24:07,030 Se ni klaki sur ili, tiam ni preni la nutrado informo. 400 00:24:07,030 --> 00:24:12,240 Komprenu ĉi tiu estas la nutrado informo por pomelo, en kazo vi demandis. 401 00:24:12,240 --> 00:24:14,870 Kaj tiel denove, ni tuj rigardi en la dorso fino tie iomete 402 00:24:14,870 --> 00:24:18,530 kaj vidi kio precize tiu faras por atingi tiun datumon. 403 00:24:18,530 --> 00:24:21,710 Kaj rezultas fakte ne esti tre kompleksa ajn. 404 00:24:21,710 --> 00:24:28,720 Ĉi tiu dosiero aspektas iom senorda, sed pripensu ke tio estas la uzado de la tuta TTT-ejo, 405 00:24:28,720 --> 00:24:34,130 kaj se mi rulumu malsupren vidas tiun ŝanĝon datumoj funkcio. 406 00:24:34,130 --> 00:24:36,630 >> Nun, nur por esti klara, ĉi tiu estas skribita en CoffeeScript, 407 00:24:36,630 --> 00:24:39,570 kio estas lingvo, kiun vi verŝajne ne vidis antaŭe. 408 00:24:39,570 --> 00:24:44,810 Sed estas bela legebla, do mi iros tra ĝi kvazaŭ ĝi estus _pseudocode_. 409 00:24:44,810 --> 00:24:49,080 Ŝanĝo dato estas funkcio kiu tuj prenos en ĉi tiu dato valoro, 410 00:24:49,080 --> 00:24:51,740 kaj ĝi estas ankaŭ tuj prenos en la komenco, kion ni ne zorgas pri tiel. 411 00:24:51,740 --> 00:24:54,110 Sed la grava afero estas ke ĝi havas ĉi dato, 412 00:24:54,110 --> 00:25:00,080 kaj ke nun estas la tago, kiam ni volas peti ĉiujn manĝerojn por. 413 00:25:00,080 --> 00:25:04,030 Kaj tiam vi vidos ni havas iom da sintakso tie, 414 00:25:04,030 --> 00:25:09,000 kiu estas esence sintaksa analizo tiu dato en legebla formato. 415 00:25:09,000 --> 00:25:11,920 En aliaj vortoj, la API postulas la dato en certa formato. 416 00:25:11,920 --> 00:25:17,390 Vi ne povas simple diri Novembro 16th, 2012 pK. 417 00:25:17,390 --> 00:25:20,320 Ĝi ne scias kion fari kun tio. Ĝi volas la dato en specifa formato. 418 00:25:20,320 --> 00:25:23,230 Ĉiuj ni faras ĉi tie, donas ĝin ĝuste tiu formato, 419 00:25:23,230 --> 00:25:26,520 kio estas jaro valoro kaj tiam streketo, monato valoro, 420 00:25:26,520 --> 00:25:29,420 alia streketo kaj la dato valoro. 421 00:25:29,420 --> 00:25:34,910 Kaj ni ankaŭ diras, ke ni deziras ke la datumoj esti eliro en JSON. 422 00:25:34,910 --> 00:25:37,560 >> Nun ni faras ĉi AJAX peton, kaj kiel mi menciis antaŭe, 423 00:25:37,560 --> 00:25:41,680 jQuery havas ĉi tiu super utila AJAX funkcio kiu ĉiuj vi bezonas fari estas specifi 424 00:25:41,680 --> 00:25:45,780 kelkaj parametroj cxi tie, kaj estos al vi reen precize kion vi volas. 425 00:25:45,780 --> 00:25:50,490 Ni diras, ke la URL ni volas iri al estas ĉi CS50 Manĝo API, 426 00:25:50,490 --> 00:25:52,270 kiuj ni ricevis de la specifon. 427 00:25:52,270 --> 00:25:56,730 Ni diras, ke ni deziras ke la datumoj en JSON kaj tiu 428 00:25:56,730 --> 00:25:59,490 ni tuj donos ĝin ĉi datumoj kiuj ni difinis supren tie. 429 00:25:59,490 --> 00:26:02,670 CXi tiun tagon ni volas ke la manĝerojn por. 430 00:26:02,670 --> 00:26:07,790 Kaj tiam ĉiuj ni devas fari estas difini ian sukceson funkcio, 431 00:26:07,790 --> 00:26:11,980 kiu estas esence kio okazas kiam la API revenas tiu datumo. 432 00:26:11,980 --> 00:26:15,490 Alivorte, ni pakita supren ĉiujn parametrojn kiuj ni volas, 433 00:26:15,490 --> 00:26:20,530 kiu en ĉi tiu kazo estas la tago, kiam ni volas kaj la fakto ke ni volas ĝin en JSON, 434 00:26:20,530 --> 00:26:23,840 kaj ni sendis ĝin al la API, nun la API diras, estas bone, 435 00:26:23,840 --> 00:26:26,350 tie estas viaj datumoj, mi ricevis ĝin por vi. 436 00:26:26,350 --> 00:26:29,930 Ni havas la sukceso funkcio, kiu signifas donita ke la API 437 00:26:29,930 --> 00:26:32,230 sukcese revenas iuj datumoj, kion ni faru pri ĝi? 438 00:26:32,230 --> 00:26:35,980 >> Kaj ĝi rezultas ke ĉiuj ni estas nomas tion ŝanĝo menuo funkcio 439 00:26:35,980 --> 00:26:42,680 kun kio la API revenis, do ni povas serĉi ke 440 00:26:42,680 --> 00:26:47,970 kaj vidu, ke ĉiuj ni faras uzas aron da novaj sintakso tie 441 00:26:47,970 --> 00:26:52,220 ĝisdatigi la HTML kaj enmeti tiun novan informon. 442 00:26:52,220 --> 00:26:56,580 Kion ĉi tio permesas estas ni havas ĉi tiujn sagoj ambauxflanke, kaj ni povas alklaki, 443 00:26:56,580 --> 00:27:01,060 kaj nun ni rigardas la datumojn por la sekva tago kaj denove por la sekva tago, 444 00:27:01,060 --> 00:27:04,820 kaj ĉiufoje ĝi estas ĝisdatigo tiu dato valoro kaj informpeti la API, 445 00:27:04,820 --> 00:27:07,510 contrarestar iuj datumoj kaj metante ĝin en la paĝaro. 446 00:27:07,510 --> 00:27:10,590 Denove, vi povas vidi, super, super utila. 447 00:27:10,590 --> 00:27:14,410 Tiu ĉi programo prenis min kelkaj horoj por pirati kune, 448 00:27:14,410 --> 00:27:20,140 kaj mi havas iom pli sperto, evidente, sed via CS50 fina projekto 449 00:27:20,140 --> 00:27:22,870 povas rigardi iun tre multe ŝatas tion. 450 00:27:22,870 --> 00:27:29,540 >> API estas super potencaj por la kvanto de peno, ke ili prenu. 451 00:27:29,540 --> 00:27:32,800 La lasta afero mi tuj iros super estas kelkaj pli API larĝe. 452 00:27:32,800 --> 00:27:35,480 Mi ne venos gxis en ilin gxis kion ili faras konkrete, 453 00:27:35,480 --> 00:27:38,740 sed mi donos al vi ideon pri kio estas tie ekstere. 454 00:27:38,740 --> 00:27:42,700 2 vere utilaj, se vi interesiĝas datumoj analizo aŭ videbligo 455 00:27:42,700 --> 00:27:45,960 aŭ io simila, estas Vikipedio kaj Vikipedio. 456 00:27:45,960 --> 00:27:49,800 Wikipedia-supozeble vi ĉiuj scias-estas senpaga interreta enciklopedio, 457 00:27:49,800 --> 00:27:53,230 kaj ĝi efektive havas API, do se vi volas, ekzemple, 458 00:27:53,230 --> 00:27:56,250 ricevi ĉiujn tekstojn kaj artikolojn por polpo 459 00:27:56,250 --> 00:27:58,030 vi povas tre facile fari tion. 460 00:27:58,030 --> 00:28:02,300 Nur diru hey, Vikipedio API, mi ŝatas la datumoj revenis kiel ĉi tio, 461 00:28:02,300 --> 00:28:07,010 kaj mi ŝatus ĝin en ĉi tiu formato, kaj la artikolo mi ŝatus estas polpo, 462 00:28:07,010 --> 00:28:09,820 kaj tre rapide donos vin tiun informon. 463 00:28:09,820 --> 00:28:12,230 Tio povas esti vere utila se vi volas fari ian ejo 464 00:28:12,230 --> 00:28:16,200 tio estas bona spektanto por Vikipedio aŭ io kiel tio. 465 00:28:16,200 --> 00:28:21,350 >> Vikipedio estas speco de simila, kvankam ĝi estas iomete pli malfacila gxis API. 466 00:28:21,350 --> 00:28:24,390 Vikipedio estas kiel Vikipedio en kiu estas interreta enciklopedio 467 00:28:24,390 --> 00:28:29,050 Gxi enhavas multe kaj multaj malsamaj datumoj pri ĉiaj diversaj temoj, 468 00:28:29,050 --> 00:28:33,150 sed ĝi estas stokita en rilata datumbazo, kiu estas iomete malsama de Vikipedio. 469 00:28:33,150 --> 00:28:36,410 Vikipedio havas liajn artikolojn kaj artikolojn ligitaj al aliaj artikoloj, 470 00:28:36,410 --> 00:28:38,860 sed por la plej granda parto, se vi volas ke la datumoj por polpo, 471 00:28:38,860 --> 00:28:41,990 vi iras al la polpo artikolo, atingi tiun datumon, kaj vi havas faskon da teksto 472 00:28:41,990 --> 00:28:43,830 pri polpoj, do tio estas granda. 473 00:28:43,830 --> 00:28:46,870 Vikipedio funkcias en iomete pli komplika maniero laŭ kiu 474 00:28:46,870 --> 00:28:48,930 ĉio estas rilatanta al unu la alian. 475 00:28:48,930 --> 00:28:52,620 En aliaj vortoj, se ni serĉas polpo 476 00:28:52,620 --> 00:28:54,940 tiam ĝi havas aron da kategorioj asociita kun ĝi. 477 00:28:54,940 --> 00:28:57,920 >> Ekzemple, estas besto, ĝi vivas sub la akvo, 478 00:28:57,920 --> 00:28:59,710 ĝi havas iujn korpo temperaturo. 479 00:28:59,710 --> 00:29:01,210 Mi ne scias. 480 00:29:01,210 --> 00:29:04,230 Kaj ĉiuj el ĉi tiuj kategorioj estas ligiloj al aliaj lokoj kie vi povas iri 481 00:29:04,230 --> 00:29:06,640 vidi tion kun tiu sama kategorio. 482 00:29:06,640 --> 00:29:13,450 En aliaj vortoj, la polpo datuma aro enhavus ligon al la datuma aro por ĉiuj bestoj, 483 00:29:13,450 --> 00:29:16,790 kaj tio lasus min movi en la datumbazo vere rapide. 484 00:29:16,790 --> 00:29:21,740 Tio povas esti tre utila se vi faras iun kiel komparoj. 485 00:29:21,740 --> 00:29:24,490 En aliaj vortoj, donita iu afero, vi volas vidi 486 00:29:24,490 --> 00:29:27,890 kio alia ĝi estas rilata al kaj vidi kion pli ĝi ne rilataj al. 487 00:29:27,890 --> 00:29:30,700 Tiaj aferoj. Ĝi povas esti utila en pluraj manieroj. 488 00:29:30,700 --> 00:29:34,250 Se vi serĉas pli de defio kaj povi fari iujn pli kompleksaj aĵoj 489 00:29:34,250 --> 00:29:38,740 Mi opinius prenante rigardi la Vikipedio API. 490 00:29:38,740 --> 00:29:44,670 Sed plejparte, Vikipedio estas tre simpla loko por iri gxis atingi informo. 491 00:29:44,670 --> 00:29:48,340 Alia loko, kiun mi rigardas estas Last.fm, kaj mi fakte tuj iri al la retejo 492 00:29:48,340 --> 00:29:53,800 en kazo iuj personoj ne estas familiara, sed Last.fm estas esence muziko 493 00:29:53,800 --> 00:29:57,220 gustoj kaj rekomendoj retejo. 494 00:29:57,220 --> 00:29:59,000 Vi povas fari konton. 495 00:29:59,000 --> 00:30:04,250 Vi povas komenci supreniri muzikon de via muziko ludanto 496 00:30:04,250 --> 00:30:08,020 al la retejo, kaj esence komencos donas al vi muziko rekomendoj 497 00:30:08,020 --> 00:30:10,030 surbaze de kio vi aŭskultu. 498 00:30:10,030 --> 00:30:14,270 >> Ekzemple, se vi iros al via profilpaĝo-ĉi estas mia- 499 00:30:14,270 --> 00:30:18,180 vi povas vidi ke vi havas liston de lastatempe aŭskultis kantoj. 500 00:30:18,180 --> 00:30:22,550 Vi povas vidi entuta preferataj artistoj, ĉiuj tiaj aferoj, 501 00:30:22,550 --> 00:30:25,280 kaj denove, tie estas granda API malantaŭ Last.fm, 502 00:30:25,280 --> 00:30:29,360  kaj vi povas uzi ĝin por fari partoj kaj multaj vere malvarmeta aĵoj. 503 00:30:29,360 --> 00:30:38,870 Ekzemple, mi iros al amiko paĝo kiu havas ĉi Last.fm Agordoj retejo. 504 00:30:38,870 --> 00:30:42,380 Ĉi tiu estas efektive alia platformo kiu estas projektita sur la Last.fm API, 505 00:30:42,380 --> 00:30:45,420 kaj ĝi faras kelkajn belajn interesaj aferoj. 506 00:30:45,420 --> 00:30:50,260 Se mi ensaluti per mia uzanto nomo, ekzemple, 507 00:30:50,260 --> 00:30:53,110 Mi povas peti ĝin por generi etikedo nubo, ekzemple, 508 00:30:53,110 --> 00:30:56,480 kaj kion tiu tuj fari estas doni al mi bildon de 509 00:30:56,480 --> 00:30:59,850 ĉiuj malsamaj ĝenroj kaj tiaj aferoj kiujn mi ŝatas aŭskulti. 510 00:30:59,850 --> 00:31:01,410 Kiel oni faras tion? 511 00:31:01,410 --> 00:31:05,670 Tre esence ĝi estas dirante al la Last.fm API jen tiu uzanto. 512 00:31:05,670 --> 00:31:10,710 Mi ŝatus scii la ĝenro de ĉiu kanto kiun ili iam aŭskultis, 513 00:31:10,710 --> 00:31:15,130 kaj vi povas fari tion farante belan simplan AJAX alvokon al la Last.fm API. 514 00:31:15,130 --> 00:31:18,990 Vi ricevos reen granda listo, kaj tiam evidente iu alia materialo estas farita 515 00:31:18,990 --> 00:31:22,280 turni ĝi enen vorto nubo, sed vi povas vidi entuta 516 00:31:22,280 --> 00:31:25,850 ĝi estas tre facile aliri kaj tre facila uzi. 517 00:31:25,850 --> 00:31:30,750 Vere bela por pluraj aferoj. 518 00:31:30,750 --> 00:31:35,940 >> Mi kredas ke temas pri ĉiuj mi diros entute. 519 00:31:35,940 --> 00:31:39,040 Unu lasta afero mi mencias pri API ĝenerale estas ke 520 00:31:39,040 --> 00:31:41,840 vi foje kolizias iun nomita imposto limigi, 521 00:31:41,840 --> 00:31:44,940 kaj la ideo de imposto limigi estas vi ne volas trouzi API. 522 00:31:44,940 --> 00:31:48,130 En aliaj vortoj, ĝi estas vere bela, ke multo el tiuj retejoj havas API 523 00:31:48,130 --> 00:31:51,070 ke vi povas iri al kaj uzi senpage. 524 00:31:51,070 --> 00:31:54,460 Tamen, se vi faras milionoj aŭ miliardoj da petoj por tago, 525 00:31:54,460 --> 00:31:57,610 ekzemple, se vi batis en senfina ciklo ke tio senfine informpeti 526 00:31:57,610 --> 00:32:00,680 ia API kaj contrarestar grandegan kvanton de datumoj, 527 00:32:00,680 --> 00:32:04,570 evidente tio ne bona, do kion multan API fari estas havi tiun ritmon limigi karakterizaĵo 528 00:32:04,570 --> 00:32:09,970 kiu diras nur povas fari 1.000 petoj tage po IP-adreso aŭ io kiel tio. 529 00:32:09,970 --> 00:32:12,540 Kaj se vi faras multajn provojn kaj tiaj aferoj, 530 00:32:12,540 --> 00:32:14,890 vi foje kuri en tiun, kaj subite ĝi fermis vin ekstere 531 00:32:14,890 --> 00:32:18,280 kaj diru ne, mi ne donas al vi neniun pli datumojn. 532 00:32:18,280 --> 00:32:20,000 >> Kion vi volas fari estas ludi per la reguloj. 533 00:32:20,000 --> 00:32:22,950 Vi volas certigi ke vi legis la API spec atente. 534 00:32:22,950 --> 00:32:26,330 Se ĝi havas iujn regulojn ligita, kiel vi nur povas fari X demandoj tage 535 00:32:26,330 --> 00:32:30,000 aŭ vi nur povas aliri al parto de la datumbazo de limigita nombro da fojoj 536 00:32:30,000 --> 00:32:32,900 aŭ ion tian vi volas certigi vin batos al tio. 537 00:32:32,900 --> 00:32:38,360 Tiel longe kiel vi ludas ene de tiuj reguloj vi probable havas vere bela tempo uzante API. 538 00:32:38,360 --> 00:32:42,030 Via tuta takeaway estas API estas vere, vere utila. 539 00:32:42,030 --> 00:32:45,610 >> Estas API por preskaŭ ajna granda servo retejo tie. 540 00:32:45,610 --> 00:32:50,700 Preskaux neniun parton de la Google Agordoj Suite, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 GMail, Google Calendar, ĉiuj tiuj aĵoj havas API. 542 00:32:54,390 --> 00:32:58,280 Vi povas uzi ilin por ambaŭ get datumoj de la servilo kaj sendi datumojn al la servilo. 543 00:32:58,280 --> 00:33:00,870 En aliaj vortoj, se vi volas fari kalendaron programo kiu povas ĝisdatigi 544 00:33:00,870 --> 00:33:04,190 ies Google Calendar, ekzistas API por tio. 545 00:33:04,190 --> 00:33:07,810 Se vi volas fari ion, ke tuj rakontos al vi kie 546 00:33:07,810 --> 00:33:12,530 la situo de certa adreso estas vi povas uzi la Google Maps API por tio. 547 00:33:12,530 --> 00:33:15,860 API estas fantazie utila, kaj ili estas ĉie. 548 00:33:15,860 --> 00:33:18,700 Se vi interesiĝas ia ideo, 549 00:33:18,700 --> 00:33:22,170 ekzistas probable rilatanta API kiu vi povas uzi por akiri multe da datumoj 550 00:33:22,170 --> 00:33:25,060 tre rapide kaj tre simple. 551 00:33:25,060 --> 00:33:28,140 >> Se vi ankoraŭ serĉas projekto aŭ se vi volas nur ludi ĉirkaŭ 552 00:33:28,140 --> 00:33:31,820 kun iu ĝenerale, API estas definitive valoras faras. 553 00:33:31,820 --> 00:33:37,200 Dankon, kaj mi estas feliĉa por respondi demandojn kiujn vi infanoj havu. 554 00:33:37,200 --> 00:33:44,900 Okay, danke tre. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]