1 00:00:00,000 --> 00:00:02,480 [Powered by Google Translate] [Seminar] ['n programmeerder se Inleiding tot APIs] 2 00:00:02,480 --> 00:00:04,059 [Billy Janitsch] [Universiteit van Harvard] [Tommy MacWilliam] 3 00:00:04,059 --> 00:00:08,220 [Hierdie is CS50.] [CS50.TV] 4 00:00:08,220 --> 00:00:12,100 >> Hi, almal, ek is Billy, en vandag is ek gaan om te praat oor API's, 5 00:00:12,100 --> 00:00:15,220 of application programming interfaces, 6 00:00:15,220 --> 00:00:20,040 spesifiek in die konteks van CS50 finale projekte en daardie soort van ding. 7 00:00:20,040 --> 00:00:22,490 In die algemeen wat is 'n API? 8 00:00:22,490 --> 00:00:25,530 In baie breë terme, dit is 'n soort van 'n middeljarige man wat toelaat dat 2 stukke 9 00:00:25,530 --> 00:00:28,610 van sagteware om te kommunikeer met mekaar. 10 00:00:28,610 --> 00:00:32,530 Dit is 'n soort van 'n baie breë definisie en is dit nie relevant is vir wat ons is op soek na. 11 00:00:32,530 --> 00:00:35,450 Wat ons regtig wil hê, is 'n soort van 'n nuttige middel grond 12 00:00:35,450 --> 00:00:40,570 om te kommunikeer met 'n soort van databasis iewers. 13 00:00:40,570 --> 00:00:43,310 >> Hier is 'n grafiek, en basies die idee is dat 14 00:00:43,310 --> 00:00:46,790 ons is 'n aansoek, en ons wil inligting te kry uit 'n databasis, 15 00:00:46,790 --> 00:00:49,570 maar ons wil nie die databasis direk navraag. 16 00:00:49,570 --> 00:00:52,710 In plaas daarvan het ons wil om te gaan deur hierdie soort van 'n middeljarige man, die API. 17 00:00:52,710 --> 00:00:55,440 Die idee agter die nommers 2 en 3 op die grafiek 18 00:00:55,440 --> 00:00:57,750 is albei gaan wees baie ingewikkelde en slordig. 19 00:00:57,750 --> 00:00:59,960 Met ander woorde, wanneer die API bevraagteken die databasis, 20 00:00:59,960 --> 00:01:03,300 dit is waarskynlik gaan om te word deur gebruik te maak van SQL tafels en al daardie soort van dinge, 21 00:01:03,300 --> 00:01:05,489 en ons het 'n bietjie daaroor geleer in CS50, maar die totale, 22 00:01:05,489 --> 00:01:07,590 jy het opgemerk dat dit is 'n bietjie van 'n pyn. 23 00:01:07,590 --> 00:01:10,590 Dit raak baie, baie ingewikkeld en slordig, veral wanneer jy ' 24 00:01:10,590 --> 00:01:12,530 komplekse navrae en daardie soort van ding. 25 00:01:12,530 --> 00:01:15,960 >> Wat ons regtig wil hê, is 'n soort van nuttige en eenvoudige manier 26 00:01:15,960 --> 00:01:19,780 dat die data te kry, en dit is die idee agter die nommers 1 en 4 op die kaart. 27 00:01:19,780 --> 00:01:23,600 Met ander woorde, ons wil 'n baie eenvoudige manier om die API te vertel wat om te kry vir ons 28 00:01:23,600 --> 00:01:27,760 en 'n baie eenvoudige manier dat die data terug te kry. 29 00:01:27,760 --> 00:01:33,020 Daar is een manier dat data word gewoonlik gestuur en ontvang, 30 00:01:33,020 --> 00:01:36,490 wat JSON, of JavaScript Object Nota Tion. 31 00:01:36,490 --> 00:01:40,370 Dit kan 'n bietjie so ver as hoe jy stuur die versoek aan die API wissel. 32 00:01:40,370 --> 00:01:43,210 Met ander woorde, as jy wil 'n sekere bedrag van die data, 33 00:01:43,210 --> 00:01:46,670 hoe jy vertel die API te kry dat die data kan 'n bietjie wissel. 34 00:01:46,670 --> 00:01:49,210 Gewoonlik is dit behels die maak van 'n soort van die netwerk versoek. 35 00:01:49,210 --> 00:01:53,130 Met ander woorde, toegang tot 'n soort van URL wat gaan om die API te vertel 36 00:01:53,130 --> 00:01:56,190 presies wat jy wil, maar die data is byna altyd terug gestuur, 37 00:01:56,190 --> 00:01:59,530 in ander woorde, nommer 4 in into. 38 00:01:59,530 --> 00:02:01,030 >> Wat is into presies? 39 00:02:01,030 --> 00:02:03,030 Soos ek gesê het, JavaScript Object Notasie. 40 00:02:03,030 --> 00:02:07,090 Dit is basies die universele standaard vir die stuur en ontvang van data. 41 00:02:07,090 --> 00:02:11,410 Die idee is dat jy hierdie 3 kategorieë van dinge. 42 00:02:11,410 --> 00:02:13,540 Jy het 'n skikkings, hashmaps en primitiewes. 43 00:02:13,540 --> 00:02:16,580 Skikkings en hashmaps jy op 'n bietjie gekyk het in CS50, 44 00:02:16,580 --> 00:02:19,870 maar jy het soort van 'n baie streng sin van wat hulle is gekry. 45 00:02:19,870 --> 00:02:22,780 Met ander woorde, met skikkings jy weet dat hulle tik gebonde, 46 00:02:22,780 --> 00:02:26,560 sodat jy het net een soort van die tipe wat gaan deur die hele skikking. 47 00:02:26,560 --> 00:02:29,310 Into is 'n baie meer toegeeflik met daardie soort van ding. 48 00:02:29,310 --> 00:02:33,590 Basies die idee is jy hierdie voorwerp bou, 49 00:02:33,590 --> 00:02:36,270 wat saamgestel kan word van enige van hierdie 3 dinge 50 00:02:36,270 --> 00:02:39,470 en saamgestel kan word van verskeie kinders van hulle, en hulle kan geneste word. 51 00:02:39,470 --> 00:02:42,110 >> Hier is soort van 'n voorbeeld van into, 52 00:02:42,110 --> 00:02:47,910 wat is hierdie accolades hier jou hashmap, 53 00:02:47,910 --> 00:02:51,400 en 'n hashmap is basies 'n afbeelding van 'n soort van die belangrikste 54 00:02:51,400 --> 00:02:53,340 tot 'n soort van waarde. 55 00:02:53,340 --> 00:02:56,440 Wat jy hier sien dat ons die eienskappe sleutel, 56 00:02:56,440 --> 00:02:59,600 en dat kartering op 'n skikking, wat is hierdie hele ding. 57 00:02:59,600 --> 00:03:04,120 Ons sien 'n ander element van die hashmap, wat is hierdie sleutel isAwesome, 58 00:03:04,120 --> 00:03:07,370 wat kaarte 'n primitiewe waarde van die ware, met ander woorde, 'n boolean. 59 00:03:07,370 --> 00:03:09,420 Primitiewes kan snare. Hulle kan heelgetalle. 60 00:03:09,420 --> 00:03:11,960 Hulle kan bools, iets soos dat. 61 00:03:11,960 --> 00:03:18,410 En jy sien die inhoud van die skikking wat eienskappe punte 2 stringe in dit, 62 00:03:18,410 --> 00:03:20,050 self-soortgelyke en wonderlike. 63 00:03:20,050 --> 00:03:27,410 Dit is 2 eienskappe van into, en ons sien dat into is awesome. 64 00:03:27,410 --> 00:03:30,060 Om te kyk na wat 'n bietjie meer nou ek gaan om te bou 65 00:03:30,060 --> 00:03:32,870 'n meer komplekse voorbeeld van into hier. 66 00:03:32,870 --> 00:03:37,000 >> Kom ons begin met 'n skikking, byvoorbeeld, net 'n leë verskeidenheid. 67 00:03:37,000 --> 00:03:39,180 Maar dit is soort van saai, so ons gaan dit 'n bietjie te vul, 68 00:03:39,180 --> 00:03:43,420 en soos ek gesê het, is skikkings in into tik gebonde, 69 00:03:43,420 --> 00:03:46,400 dus kan ons ook hier 'n string wat is hi, 70 00:03:46,400 --> 00:03:49,330 en dit is 'n ander element van daardie skikking. 71 00:03:49,330 --> 00:03:53,450 En so ook, kan ons hier 'n hashmapping voeg, wat gaan 'n paar afbeeldings te hê. 72 00:03:53,450 --> 00:04:00,470 Dit gaan 'n afbeelding van die naam aan die string Billy. 73 00:04:00,470 --> 00:04:04,590 Ons het 'n kartering van naam Billy, en ons het 'n kartering van 74 00:04:04,590 --> 00:04:10,860 gunsteling kleur na blou. 75 00:04:10,860 --> 00:04:12,700 Dit is basies 'n goeie voorbeeld van into. 76 00:04:12,700 --> 00:04:18,160 Dit raak soort van in-Oeps, moet daar 'n komma-al van die verskillende dele van dit. 77 00:04:18,160 --> 00:04:21,140 Weereens, dit is nie tik op alle gebind, sodat jy kan enige soort van tipes 78 00:04:21,140 --> 00:04:24,710 binnekant van enigiets wat jy wil, en die idee is dit is 'n self-soortgelyke. 79 00:04:24,710 --> 00:04:28,830 Met ander woorde, hierdie reg hier is 'n into voorwerp, soos hierdie hele ding, 80 00:04:28,830 --> 00:04:33,200 as net hierdie, sodat jy kan 'n primitiewe wees 'n voorwerp, 81 00:04:33,200 --> 00:04:35,680 'n skikking te wees 'n voorwerp of 'n hashmap wees 'n voorwerp. 82 00:04:35,680 --> 00:04:40,270 >> As wat jy kan soort van sien, into is werklik, werklik nuttig in die sin dat dit is so veelsydig. 83 00:04:40,270 --> 00:04:45,860 Jy kan enige moontlike data wat jy kan gestoor swanger into. 84 00:04:45,860 --> 00:04:47,900 Dit maak dit 'n baie mooi taal te gebruik met API's 85 00:04:47,900 --> 00:04:50,770 want dit beteken pretty much maak nie saak wat data wat jy wil 86 00:04:50,770 --> 00:04:54,270 daar gaan een of ander manier om dit terug te kry in into. 87 00:04:54,270 --> 00:04:58,600 'N paar eienskappe wat maak into veral goed is vir hierdie soort van ding. 88 00:04:58,600 --> 00:05:02,270 Soos jy kan sien, in vergelyking met 'n baie van die dinge wat jy het gewerk met in CS50 89 00:05:02,270 --> 00:05:06,040 dit is relatief baie maklik om te lees en ook baie maklik om te skryf nie. 90 00:05:06,040 --> 00:05:09,700 Jy kan streepje dit uit as jy wil, soos ek besig was om in daardie voorbeeld, 91 00:05:09,700 --> 00:05:12,990 wat gee jou 'n mooi, mooi weergawe wat jy kan baie goed sien. 92 00:05:12,990 --> 00:05:17,150 Maar ook, dit is ook maklik om te lees en skryf vir 'n rekenaar. 93 00:05:17,150 --> 00:05:19,870 Met ander woorde, dit is maklik om te parse en maklik om te enkodeer, 94 00:05:19,870 --> 00:05:23,820 wat beteken dat dit is redelik vinnig so ver as die lees van die data betref, 95 00:05:23,820 --> 00:05:26,460 en into kan regtig vinnig gegenereer word. 96 00:05:26,460 --> 00:05:30,300 >> Dit is ook baie maklik om toegang te verkry tot verskillende dele van into en daardie soort van ding. 97 00:05:30,300 --> 00:05:33,320 Dit is mooi, en voorts, die feit dat dit is 'n self-soortgelyke, 98 00:05:33,320 --> 00:05:36,090 met ander woorde, die feit dat jy kan into binne into binne into 99 00:05:36,090 --> 00:05:40,040 is regtig nice vir die stoor van data. 100 00:05:40,040 --> 00:05:45,490 Nog 'n deel wat is oor die algemeen baie nuttig in die werk met API's is jQuery. 101 00:05:45,490 --> 00:05:49,290 Jy het 'n bietjie van JavaScript geleer het, wat is 'n mooi manier 102 00:05:49,290 --> 00:05:53,710 HTML en CSS binne 'n webwerf te manipuleer. 103 00:05:53,710 --> 00:05:57,190 Maar dit kan soort van 'n pyn te kode in plain JavaScript, 104 00:05:57,190 --> 00:05:59,810 hoofsaaklik omdat JavaScript is 'n werklik verbose taal. 105 00:05:59,810 --> 00:06:03,020 Jy het 'n baie om te leer van die sintaksis, en net baie eenvoudige dinge te doen 106 00:06:03,020 --> 00:06:07,590 dit neem 'n baie van die kode, sodat jQuery is 'n biblioteek vir JavaScript. 107 00:06:07,590 --> 00:06:09,800 Met ander woorde, dit is 'n JavaScript-lêer wat jy kan laai 108 00:06:09,800 --> 00:06:12,730 en dan jQuery funksies gebruik om sekere dinge te doen. 109 00:06:12,730 --> 00:06:15,670 En jQuery maak basies jou lewe 'n hele klomp makliker. 110 00:06:15,670 --> 00:06:20,390 Dit vergemaklik wat honderde van lyne in JavaScript sou neem af na 'n paar lyne in die jQuery. 111 00:06:20,390 --> 00:06:24,430 >> Dit is veral nuttig as jy die gebruik van API's, want die algemeen 112 00:06:24,430 --> 00:06:27,600 hoe jy sal toegang tot API's is deur die maak van AJAX versoeke, 113 00:06:27,600 --> 00:06:30,130 en ek glo dat Dawid in die lesing genoem dat AJAX versoeke 114 00:06:30,130 --> 00:06:33,120 is oor die algemeen wanneer jy 'n netwerk versoek tot 'n soort van die bediener 115 00:06:33,120 --> 00:06:37,760 en om 'n soort van data en die opdatering van 'n bladsy oombliklik. 116 00:06:37,760 --> 00:06:41,840 AANGESIEN dit in plain JavaScript wat jou sal mal nommers van lyne 117 00:06:41,840 --> 00:06:44,620 al die headers te valideer en doen al daardie soort van dinge, 118 00:06:44,620 --> 00:06:46,810 jQuery het 'n baie eenvoudige funksie genoem AJAX, 119 00:06:46,810 --> 00:06:51,760 en al wat jy hoef te doen in AJAX is die parameters wat jy wil om die API te gee, 120 00:06:51,760 --> 00:06:56,830 die plek van die API en enige bykomende soort van opsies wat jy wil konfigureer. 121 00:06:56,830 --> 00:07:02,480 Dit is regtig, regtig mooi en baie nuttig is vir hierdie soort van ding. 122 00:07:02,480 --> 00:07:06,970 Dit is al wat ons nodig het om te begin om ons hande vuil in API's. 123 00:07:06,970 --> 00:07:10,220 >> Ek gaan 'n paar voorbeelde te bring en hul verskillende eienskappe te verken 124 00:07:10,220 --> 00:07:13,150 en hoekom hulle is nuttig vir verskillende soorte van dinge. 125 00:07:13,150 --> 00:07:15,570 Die eerste ding wat ek sal eintlik wys jy is iets wat Ek werk op 126 00:07:15,570 --> 00:07:18,310 by my research lab, wat is 'n Ngram Viewer, 127 00:07:18,310 --> 00:07:23,270 en basies die idee van 'n Ngram Viewer kan jy soek na 'n soort van 'n woord 128 00:07:23,270 --> 00:07:28,840 of 'n frase en sien hoe dikwels dit met verloop van tyd in 'n sekere stel van die teks verskyn. 129 00:07:28,840 --> 00:07:33,160 Hierdie voorbeeld hier is hierdie datastel van babas 130 00:07:33,160 --> 00:07:36,480 wat tussen 1920 en 2000 in New York gebore. 131 00:07:36,480 --> 00:07:40,090 Ons kan soek, byvoorbeeld vir die naam Jennifer, 132 00:07:40,090 --> 00:07:44,400 en ons sien dat pre-1960's het dit regtig nie gebruik is nie al dat daar nog baie, 133 00:07:44,400 --> 00:07:48,900 en dan as ons dit in later jare meer en meer gebruik. 134 00:07:48,900 --> 00:07:53,680 Ons kan ook vergelykings, so as ons dit vergelyk met Jennifer, byvoorbeeld, Thomas, 135 00:07:53,680 --> 00:07:56,520 ons kan sien Thomas is redelik algemeen dwarsdeur die geskiedenis, 136 00:07:56,520 --> 00:07:58,780 terwyl Jennifer is 'n meer onlangse naam. 137 00:07:58,780 --> 00:08:00,590 Daardie soort van ding wat ons kan doen. 138 00:08:00,590 --> 00:08:02,460 >> Hoe werk hierdie aansoek werk? 139 00:08:02,460 --> 00:08:06,030 Basies, dit werk via 'n API. 140 00:08:06,030 --> 00:08:08,660 Met ander woorde, ons het sekere parameters hier. 141 00:08:08,660 --> 00:08:11,360 Ons het die parameters van wat ons eintlik op soek na, 142 00:08:11,360 --> 00:08:13,720 wat is hierdie name, en dan het ons 'n paar ander eienskappe, 143 00:08:13,720 --> 00:08:16,570 soos die Y-as en die X-as. 144 00:08:16,570 --> 00:08:18,440 Jy kan sien ons het 'n paar verskillende opsies vir sover die 145 00:08:18,440 --> 00:08:20,860 tyd resolusie om te gebruik en dat die soort van ding. 146 00:08:20,860 --> 00:08:26,700 Ons het hierdie opsies so ver as data wat ons eintlik wil hê uit die databasis, 147 00:08:26,700 --> 00:08:29,400 en ons wil hê dat die data terug te kry in 'n paar nuttige manier. 148 00:08:29,400 --> 00:08:34,020 Gewoonlik, as ons bevraagteken die databasis direk sou dit soort van 'n pyn om te doen 149 00:08:34,020 --> 00:08:38,970 vermoedelik omdat hierdie data oor baba name woon iewers in sommige databasis, 150 00:08:38,970 --> 00:08:42,789 en dit sou regtig ingewikkeld wees om dit met die hand te bevraagteken 151 00:08:42,789 --> 00:08:45,830 en presies besluit watter data om terug te keer. 152 00:08:45,830 --> 00:08:49,300 Met ander woorde, ons het net sorg oor Jennifer en Thomas in hierdie geval, 153 00:08:49,300 --> 00:08:53,410 en ons het net sorg oor 'n sekere as en al daardie soort van dinge. 154 00:08:53,410 --> 00:08:55,720 >> Hoe kry ons om hierdie? 155 00:08:55,720 --> 00:09:01,200 Om te grawe in hierdie API 'n bietjie meer Ek sal jou wys nog 'n voorbeeld van hierdie platform 156 00:09:01,200 --> 00:09:04,490 wat gebruik maak van 'n effens verskillende datastel. 157 00:09:04,490 --> 00:09:09,950 Hierdie datastel, in plaas van baba name, is eintlik net die hele 158 00:09:09,950 --> 00:09:12,460 druk publikasie databasis van Open Library, 159 00:09:12,460 --> 00:09:18,410 wat is 'n reuse-bron van tekste gepubliseer gedurende die laaste 100 jaar of so. 160 00:09:18,410 --> 00:09:23,540 Die idee is dat ons hierdie compository van miljoene en miljoene van die teks, 161 00:09:23,540 --> 00:09:27,420 wat ons kan nou soek vir verskillende woorde en frases. 162 00:09:27,420 --> 00:09:30,840 Hier is 'n voorbeeld wat wissel 'n bietjie anders as die vorige voorbeeld 163 00:09:30,840 --> 00:09:33,350 Ek julle getoon, wat ons het hierdie 3 navrae, 164 00:09:33,350 --> 00:09:36,290 oorlog, oorlog, en die Franse woord vir oorlog, wat guerre. 165 00:09:36,290 --> 00:09:40,380 En ons soek binne 3 verskillende afdelings van die totale databasis. 166 00:09:40,380 --> 00:09:45,080 Met ander woorde, in hierdie eerste navraag ons net soek in die VSA, 167 00:09:45,080 --> 00:09:51,150 in die tweede een net in die Verenigde Koninkryk, en die derde net van werke wat in Frankryk gepubliseer is. 168 00:09:51,150 --> 00:09:53,120 Ons sien 'n paar interessante patrone na vore kom. 169 00:09:53,120 --> 00:09:58,180 Byvoorbeeld, ons sien reg hier rond wat- 170 00:09:58,180 --> 00:10:02,410 Oeps, ek verknald die as 'n bietjie, maar jy kan sien hier reg in hierdie reeks 171 00:10:02,410 --> 00:10:05,730 rondom die Burgeroorlog is daar is 'n groot styging in die Amerikaanse uitgawe 172 00:10:05,730 --> 00:10:08,340 maar nie so 'n groot styging in die ander twee, en dit is natuurlik omdat 173 00:10:08,340 --> 00:10:10,880 die Amerikaanse Burgeroorlog het gebeur op daardie punt. 174 00:10:10,880 --> 00:10:13,890 >> Ons kan 'n paar cool stuff daar, 175 00:10:13,890 --> 00:10:17,070 maar wat ons regtig omgee hoe ons hierdie data. 176 00:10:17,070 --> 00:10:21,320 Ek neem jy agter die skerms in hierdie inligting in 'n bietjie. 177 00:10:21,320 --> 00:10:24,540 'N netjiese truuk is as jy die werk met die terrein en soort van wil weet 178 00:10:24,540 --> 00:10:27,430 wat gaan aan agter die skerms, kan jy maak die ontwikkelaar gereedskap. 179 00:10:27,430 --> 00:10:30,200 Ek gaan om te word deur gebruik te maak van Chrome se ontwikkelaar gereedskap, en om aan diegene te kry 180 00:10:30,200 --> 00:10:35,160 jy beheer, verskuiwing, J, en dit neem jou na die JavaScript-console kan doen. 181 00:10:35,160 --> 00:10:37,420 Daar is 'n paar tabs hier. 182 00:10:37,420 --> 00:10:39,680 Hulle kan almal baie handig wees onder verskillende omstandighede, maar ek gee oor die netwerk 183 00:10:39,680 --> 00:10:44,150 tab op die oomblik, en ek eintlik te verfris om daardie werk te kry. 184 00:10:44,150 --> 00:10:50,180 O, jammer. 185 00:10:50,180 --> 00:10:52,320 Dit hou 'n random voorbeeld te gee. 186 00:10:52,320 --> 00:10:54,700 Okay, sal ons hierdie voorbeeld in plaas dan gebruik. 187 00:10:54,700 --> 00:11:01,330 >> Die idee is daar is hierdie API hier, 188 00:11:01,330 --> 00:11:05,330 en jy kan sien presies wat die API terugkeer. 189 00:11:05,330 --> 00:11:10,220 Dit is wat die aansoek is om terug van die API daardie versoek gestuur. 190 00:11:10,220 --> 00:11:13,680 Laat my zoom in 'n bietjie, 191 00:11:13,680 --> 00:11:18,340 en ons kan basies sien dit is net 'n reeks van die belangrikste waarde pare in into. 192 00:11:18,340 --> 00:11:23,220 Met ander woorde, ons het hierdie hashmap hier wat kartering van waardes. 193 00:11:23,220 --> 00:11:26,440 Met ander woorde, is dit die kartering van jaar tot waardes. 194 00:11:26,440 --> 00:11:32,600 In 1765, enige woord wat ons aanvanklik gesoek vir gebruik word 90 keer 195 00:11:32,600 --> 00:11:35,810 uit van 1 miljoen, sodat ons kry hierdie resultaat. 196 00:11:35,810 --> 00:11:40,280 Dit is nie presies into want ons het hierdie klein resultaat header hier, 197 00:11:40,280 --> 00:11:45,630 maar kennis dat hierdie hele doel hier is net 'n groot groot into blob. 198 00:11:45,630 --> 00:11:51,070 Ons het 'n verskeidenheid wat hierdie hele element bevat, 199 00:11:51,070 --> 00:11:55,590 en jy kan sien dat die hele element daar eindig, en dan het ons nog 'n groot element 200 00:11:55,590 --> 00:11:59,430 wat gaan al die pad af tot die einde toe, en wat eindig hier. 201 00:11:59,430 --> 00:12:02,200 Ons het 'n baie groot verskeidenheid met 2 voorwerpe in, 202 00:12:02,200 --> 00:12:04,630 en elk van die voorwerpe is 'n hashmap. 203 00:12:04,630 --> 00:12:07,340 Jy kan sien in elk van dié hashmaps ons het 'n kartering 204 00:12:07,340 --> 00:12:12,700 van hierdie indeks waarde na 0 en hierdie waarde waarde aan 'n ander hashmap, 205 00:12:12,700 --> 00:12:18,360 wat weer die kartering van X-as waardes Y-as waardes. 206 00:12:18,360 --> 00:12:20,970 >> Jy kan sien into kry 'n bietjie ingewikkeld, maar die totale, 207 00:12:20,970 --> 00:12:24,190 dit is eintlik baie nuttig, en dit is baie maklik om toegang te verkry tot in vergelyking met 208 00:12:24,190 --> 00:12:27,390 ander vorme van notasie. 209 00:12:27,390 --> 00:12:30,550 So ver as wat ons eintlik die stuur van data na die API te kry, 210 00:12:30,550 --> 00:12:34,690 Ek gaan om te gaan 'n bietjie hier in die agterkant. 211 00:12:34,690 --> 00:12:39,850 Dit is die groot JavaScript-lêer wat die hantering van al die interaksies van die web app, 212 00:12:39,850 --> 00:12:44,810 en so het ons gee nie om nie oor die meeste van hierdie, maar ons doen sorg oor 'n paar van dit. 213 00:12:44,810 --> 00:12:47,410 Byvoorbeeld, ons sorg oor hierdie buildQuery funksie, 214 00:12:47,410 --> 00:12:50,670 en die idee van hierdie funksie is basies dit is op soek om die bladsy, 215 00:12:50,670 --> 00:12:53,750 uitzoeken wat die gebruiker wil om navraag te doen, met ander woorde, 216 00:12:53,750 --> 00:12:57,090 die nagaan van die bokse waar het hulle insette hul soekterme, 217 00:12:57,090 --> 00:13:01,380 die beheer van die verskillende Y en X-as waardes wat hulle gekies het en al daardie soort van ding, 218 00:13:01,380 --> 00:13:06,650 en dit gaan te spoeg uit hierdie navraag waarde, wat kan ek dan stuur na die API. 219 00:13:06,650 --> 00:13:09,180 >> Dit lyk ingewikkeld, en dit is redelik ingewikkeld 220 00:13:09,180 --> 00:13:18,090 maar wat ek gaan om te doen in die feit, ek reeds om dit te doen, wat is 'n groot- 221 00:13:18,090 --> 00:13:21,640 is dat ek gaan die konsole te kry om presies uit te druk dat query waarde 222 00:13:21,640 --> 00:13:28,110 dat dit afstuur na die API. 223 00:13:28,110 --> 00:13:30,870 Dit is eintlik net hier. Jammer, dit uitgange 'n baie van die dinge. 224 00:13:30,870 --> 00:13:33,690 Maar dit is wat ons omgee, hierdie voorwerp reg hier. 225 00:13:33,690 --> 00:13:35,300 Dit is die soektog voorwerp. 226 00:13:35,300 --> 00:13:40,670 Met ander woorde, dit is presies wat die web-program stuur die API, 227 00:13:40,670 --> 00:13:45,730 en so laat ons sien die binnekant van 'n bietjie, en ons sien ons het hier 'n paar waardes. 228 00:13:45,730 --> 00:13:48,710 Ons sien ons het hierdie telling tipe, wat gebeurtenisse per miljoen woorde, 229 00:13:48,710 --> 00:13:51,460 dit is presies wat ons gekies het in die Y-as hier. 230 00:13:51,460 --> 00:13:53,740 Dit is waar dit vandaan kom. 231 00:13:53,740 --> 00:13:58,010 Ons het 'n databasis waarde, wat beteken dat daar is 'n paar sekere databasis 232 00:13:58,010 --> 00:14:01,610 dat hierdie data die lewe in, en ons wil hê dat die data wat spesifiek toegang tot 233 00:14:01,610 --> 00:14:04,950 in teenstelling met die baba name data, byvoorbeeld. 234 00:14:04,950 --> 00:14:08,320 Dan het ons hierdie groepe waarde, 235 00:14:08,320 --> 00:14:12,090 wat sê dat ons wil om te soek deur die jaar, in teenstelling met 236 00:14:12,090 --> 00:14:16,030 enige ander X-as waarde. 237 00:14:16,030 --> 00:14:19,040 Dan het ons 'n metode, waarvan sommige APIs sal verskeie dinge doen. 238 00:14:19,040 --> 00:14:22,360 Met ander woorde, hierdie API kan ook terugkeer ander vorme van data, 239 00:14:22,360 --> 00:14:27,740 maar in hierdie geval, ons wil hê dat die kartering van X-as waardes Y-as waardes. 240 00:14:27,740 --> 00:14:30,730 Dit is wat dit sê om daar te doen, 241 00:14:30,730 --> 00:14:35,020 en ons het dit soek perke skikking, wat bevat 2 waardes. 242 00:14:35,020 --> 00:14:40,720 Die eerste een is wat ons hier sien, wat is al die waardes 243 00:14:40,720 --> 00:14:43,020 vervat in daardie eerste klein boks aan die bokant. 244 00:14:43,020 --> 00:14:47,570 >> Met ander woorde, ons wil om te kyk vir die woord stryd, en ons wil om dit te filter 245 00:14:47,570 --> 00:14:51,920 Engelse tekste in die Amerikaanse letterkunde. 246 00:14:51,920 --> 00:14:54,590 Ons het hierdie land, wat is die VSA. 247 00:14:54,590 --> 00:14:59,130 Ons het 'n taal, wat is Engels, so ons het al hierdie verskillende dele 248 00:14:59,130 --> 00:15:02,690 wat almal vertel van die API presies wat ons wil hê. 249 00:15:02,690 --> 00:15:04,940 Ons weet nie wat die data wat ons terug te kry nie, 250 00:15:04,940 --> 00:15:10,970 maar ons weet dat die data is gaan 'n sekere vorm te neem. 251 00:15:10,970 --> 00:15:13,650 Hierdie voorbeeld is 'n soort van op die ingewikkelde kant, 252 00:15:13,650 --> 00:15:16,180 en jy sal nie noodwendig gebruik word om 'n API om die kompleks, 253 00:15:16,180 --> 00:15:20,600 maar dit is om te wys dat jy die omvang en krag wat API's kan doen. 254 00:15:20,600 --> 00:15:24,980 Met ander woorde, met behulp van 'n relatief eenvoudige navraag het ons basies 'n inset boks 255 00:15:24,980 --> 00:15:29,490 met 'n paar ander keurders op verskillende plekke. 256 00:15:29,490 --> 00:15:32,010 >> Laat my terug uitzoomen hier. 257 00:15:32,010 --> 00:15:37,720 Ons het 'n invoer boks met 'n paar verskillende metadata-keuses, 258 00:15:37,720 --> 00:15:40,610 en ons het 'n Y-as en die X-as keuses. 259 00:15:40,610 --> 00:15:42,830 Ons het nie eintlik dat baie velde, 260 00:15:42,830 --> 00:15:46,210 en ons kan baie maklik sien ons is in staat om 'n soort van API om navraag te doen 261 00:15:46,210 --> 00:15:48,510 en data terug te kry en dan sit dit in hierdie grafiek, 262 00:15:48,510 --> 00:15:52,080 wat dan gaan dit in 'n nuttige manier om te wys. 263 00:15:52,080 --> 00:15:54,970 Om te kyk na nog 'n voorbeeld wat dalk 'n bietjie meer bekend is vir julle ouens 264 00:15:54,970 --> 00:15:56,510 ons gaan om te draai op Facebook. 265 00:15:56,510 --> 00:15:59,440 Facebook se API is die Facebook Grafiek genoem, 266 00:15:59,440 --> 00:16:04,390 en basies wat dit beteken, is Facebook sien homself as hierdie massiewe databasis 267 00:16:04,390 --> 00:16:08,000 baie van die verskillende dele wat almal sekere verhoudings tot mekaar. 268 00:16:08,000 --> 00:16:11,070 Met ander woorde, ek is 'n gebruiker op Facebook, so ek het 'n profiel, 269 00:16:11,070 --> 00:16:14,310 en ek het ook sekere vriende, en elkeen van hulle het 'n profiel, 270 00:16:14,310 --> 00:16:17,580 en elkeen van my vriende het 'n muur, wat het verskillende kommentaar op dit, 271 00:16:17,580 --> 00:16:20,800 en elk van die kommentaar het voorkeure en al daardie soort van ding. 272 00:16:20,800 --> 00:16:23,100 >> Daar is baie van die verskillende dele op Facebook. 273 00:16:23,100 --> 00:16:26,670 Dit is 'n uiters komplekse API, en daar is ton wat jy kan doen met dit, 274 00:16:26,670 --> 00:16:28,450 maar dit is eintlik redelik maklik om te gebruik. 275 00:16:28,450 --> 00:16:33,680 Ek gaan om te begin deur te gaan na graph.facebook.com / billyjanitsch, 276 00:16:33,680 --> 00:16:38,430 wat my unieke rekening naam en jou rekening naam sal wees 277 00:16:38,430 --> 00:16:43,710 'n soort van 'n woord as jy gekies het, of is dit dalk net 'n string van getalle. 278 00:16:43,710 --> 00:16:46,360 Wat kry ons terug is redelik basiese inligting. 279 00:16:46,360 --> 00:16:50,460 Ons sien dat ek 'n eerste naam, wat is Billy, 'n laaste naam, wat is Janitsch. 280 00:16:50,460 --> 00:16:53,370 Daar is 'n unieke Facebook ID wat ek het. 281 00:16:53,370 --> 00:16:57,920 Jy kan sien dat ek manlike en dat ek my taal instelling 282 00:16:57,920 --> 00:17:01,290 Britse Engels. 283 00:17:01,290 --> 00:17:03,490 Met ander woorde, ons sien baie basiese inligting hier. 284 00:17:03,490 --> 00:17:08,670 Dit is nie te veel nie, maar dit gee ons 'n idee van wat daar is. 285 00:17:08,670 --> 00:17:10,849 >> Ons kan dieselfde ding doen by David Malan, byvoorbeeld. 286 00:17:10,849 --> 00:17:13,599 Ek dink sy naam is dmalan. 287 00:17:13,599 --> 00:17:16,369 Ons sien David Malan het 'n unieke ID. 288 00:17:16,369 --> 00:17:19,300 Hy het 'n naam, eerste naam, middel naam, laaste naam. 289 00:17:19,300 --> 00:17:24,210 Ons sien ook dat hy is manlik en het sy taal stel na Engels (VS). 290 00:17:24,210 --> 00:17:26,869 Met ander woorde, sien ons redelik basiese inligting hier. 291 00:17:26,869 --> 00:17:28,860 Nou, wat gebeur as ons probeer om te kyk na iets anders? 292 00:17:28,860 --> 00:17:33,060 Kom ons sê ek is geïnteresseerd in wat Dawid Malan het graag op Facebook. 293 00:17:33,060 --> 00:17:36,860 Ek kan doen / likes. Nou het ons hardloop in 'n probleem. 294 00:17:36,860 --> 00:17:39,280 Ons het 'n soort van fout wat sê 'n toegang-teken 295 00:17:39,280 --> 00:17:41,660 is nodig om die bron aan te vra. 296 00:17:41,660 --> 00:17:44,730 Maar as jy dink oor dit, wat maak werklik sin nie, want dit sou wees weird 297 00:17:44,730 --> 00:17:47,830 as jy kan toegang tot elke enkele deel van Facebook se databasis 298 00:17:47,830 --> 00:17:50,170 net van 'n soort van 'n eenvoudige API, reg? 299 00:17:50,170 --> 00:17:56,040 Met ander woorde, vermoedelik jou inligting kan nie verkry word deur enigiemand wat dit wil hê. 300 00:17:56,040 --> 00:17:58,330 >> Hierdie fout is presies wat dit beteken. 301 00:17:58,330 --> 00:18:03,630 Sommige API vereis sekere regte ten einde hul data om toegang te verkry tot. 302 00:18:03,630 --> 00:18:06,940 En selfs meer gevorderde API's, soos die Facebook-een, 303 00:18:06,940 --> 00:18:09,840 sal vereis dat sekere regte om sekere dinge te doen. 304 00:18:09,840 --> 00:18:12,650 Ek kan sien hierdie basiese inligting oor David Malan. 305 00:18:12,650 --> 00:18:15,950 Ek kan sien dat hy is manlik en dat hy in die VSA woon, 306 00:18:15,950 --> 00:18:19,270 maar ek kan regtig nie sien nie enigiets verlede wat. 307 00:18:19,270 --> 00:18:23,050 Te kry om dit vir nou, Facebook het hierdie mooi instrument 308 00:18:23,050 --> 00:18:27,690 wat is die grafiek API ontdekkingsreisiger, en die idee van wat jy kan sorteer 309 00:18:27,690 --> 00:18:31,880 make-up toestemmings vir jouself wat gebaseer is op jou eie rekening 310 00:18:31,880 --> 00:18:35,680 en dan sien dinge wat spesifiek jou rekening kan sien. 311 00:18:35,680 --> 00:18:45,120 Byvoorbeeld, as ek doen graph.facebook.com/billyjanitsch/likes- 312 00:18:45,120 --> 00:18:53,510 Oeps, ek dink ek het my teken hier revalidate. 313 00:18:53,510 --> 00:18:55,950 Okay. 314 00:18:55,950 --> 00:19:01,740 As ek dit doen weer, groot, nou kan ek sien dat ek hierdie item terug kry 315 00:19:01,740 --> 00:19:06,300 wat sê dat ek hou van pool noodles, wat in die kategorie Games en speelgoed. 316 00:19:06,300 --> 00:19:08,620 Ek hou van 'n walrus, wat is in die kategorie Animal. 317 00:19:08,620 --> 00:19:10,180 Dit is my werklike Facebook-likes. 318 00:19:10,180 --> 00:19:13,280 Hulle is soort van verleentheid. 319 00:19:13,280 --> 00:19:16,090 >> Maar ons kan sien hierdie data is almal terug in into. 320 00:19:16,090 --> 00:19:18,160 Dit is redelik leesbare. 321 00:19:18,160 --> 00:19:20,970 Met ander woorde, ons het hierdie kartering van data na 'n soort van 'n skikking, 322 00:19:20,970 --> 00:19:25,220 en elke element van die skikking is 'n hashmap watter kaarte 323 00:19:25,220 --> 00:19:28,530 die naam van 'n dergelike en die kategorie van 'n dergelike. 324 00:19:28,530 --> 00:19:31,240 Elke soos 'n unieke ID. 325 00:19:31,240 --> 00:19:34,510 Daar is alle soorte van verskillende dinge van die data wat ons kan kry, 326 00:19:34,510 --> 00:19:37,980 en as jy belangstel in die gebruik van die Facebook-API vir 'n CS50 finale projek 327 00:19:37,980 --> 00:19:40,720 of vir iets soos dat dit eintlik redelik uitvoerbaar. 328 00:19:40,720 --> 00:19:44,260 Is basies hoe jy rondom die verifikasie ding Facebook 329 00:19:44,260 --> 00:19:48,030 maak gebruik van 'n stelsel genoem OAuth, of Open verifikasie, 330 00:19:48,030 --> 00:19:52,870 en ek wil nie te kry in dit nou omdat OAuth of die verskillende tipe 331 00:19:52,870 --> 00:19:56,060 van verifikasie is geneig om 'n baie te wissel tussen verskillende API's, 332 00:19:56,060 --> 00:19:58,320 sodat ek kon spandeer 'n lang tyd gaan oor elkeen, 333 00:19:58,320 --> 00:20:01,170 maar hulle is eintlik redelik selfverduidelikend. 334 00:20:01,170 --> 00:20:04,050 >> As jy Google Facebook API dit is baie leesbaar. 335 00:20:04,050 --> 00:20:06,670 Daar is 'n hele spec. 336 00:20:06,670 --> 00:20:10,210 Byvoorbeeld, hierdie is die dokumentasie vir die Facebook API, 337 00:20:10,210 --> 00:20:14,170 en jy kan sien ek is op die gebruiker bladsy, sodat ek kan leer oor die verskillende soorte van dinge 338 00:20:14,170 --> 00:20:17,170 wat beskikbaar is sover inligting te kry 339 00:20:17,170 --> 00:20:21,550 en ook die verskillende regte wat ek nodig het om dit te bekom. 340 00:20:21,550 --> 00:20:25,470 Soos ons gesien het, het ons nie nodig toestemmings om toegang te verkry tot die naam of die geslag, 341 00:20:25,470 --> 00:20:29,380 maar as dit nie ons hoef toestemmings vir die meeste dinge. 342 00:20:29,380 --> 00:20:33,040 Hierdie bladsy, of liewer, hierdie webwerf sal ook vertel hoe om te kry 343 00:20:33,040 --> 00:20:35,640 'n teken om in staat wees om jouself te kontroleer. 344 00:20:35,640 --> 00:20:39,290 Die meeste verifikasie stelsels gebruik 'n soort van verborge 345 00:20:39,290 --> 00:20:42,880 waar kry jy hierdie unieke waarde, wat is 'n baie lang en random string, 346 00:20:42,880 --> 00:20:46,240 en dat die manier waarop hulle kan assosieer die versoek dat jy maak met jou. 347 00:20:46,240 --> 00:20:50,560 Met ander woorde, hulle weet dat jy nie enigiets te doen wat agterdogtig met hul data. 348 00:20:50,560 --> 00:20:53,340 Hulle weet presies wat jy kry. 349 00:20:53,340 --> 00:20:56,180 Hulle weet ook dat jy toestemming het om hierdie inligting te besigtig. 350 00:20:56,180 --> 00:20:59,110 >> As jy 'n Facebook-app en jou app het sekere gebruikers, 351 00:20:59,110 --> 00:21:03,380 en die gebruikers het toegelaat dat die app om toegang te verkry tot sekere dele van hul profiel, 352 00:21:03,380 --> 00:21:07,790 dan watter API-sleutel of teken dat app is met behulp van 353 00:21:07,790 --> 00:21:11,090 sal in staat wees om toegang te verkry tot die data vir die gebruikers. 354 00:21:11,090 --> 00:21:13,780 Dit klink ingewikkeld, maar dit is nie te sleg nie, 355 00:21:13,780 --> 00:21:16,810 en as jy wil Facebook te gebruik, sou ek sterk aanbeveel dat u 356 00:21:16,810 --> 00:21:18,990 speel rond met hul API. 357 00:21:18,990 --> 00:21:21,610 Dit is baie cool, en jy kan 'n baie verskillende dinge te doen met dit. 358 00:21:21,610 --> 00:21:24,880 As die gebruiker verleen jy hierdie toestemmings jy kan selfs terug te gaan na die API 359 00:21:24,880 --> 00:21:28,820 en sê ek wil om werklik te pos na hierdie gebruiker se muur, of ek wil hê hulle 'n foto plaas, 360 00:21:28,820 --> 00:21:32,390 en dit is hoekom jy soms op jou news feed daardie irriterende dinge 361 00:21:32,390 --> 00:21:37,840 sê jou vriend het hierdie video gekyk op 'n soort van vreemde site of iets soos dit. 362 00:21:37,840 --> 00:21:43,120 Dit is omdat daardie app verleen is om toegang te plaas op daardie persoon se muur. 363 00:21:43,120 --> 00:21:48,350 Die idee algehele pretty die Facebook-API ingewikkeld, maar ook baie nuttig. 364 00:21:48,350 --> 00:21:53,220 Beslis die moeite werd uitcheck as jy nog steeds op soek vir 'n finale projek. 365 00:21:53,220 --> 00:21:57,930 >> Nog 'n suite van API's wat ek gaan om te gaan oor CS50 API's. 366 00:21:57,930 --> 00:22:00,070 Laat my zoom hier. 367 00:22:00,070 --> 00:22:03,390 CS50 het eintlik 'n hele reeks van API's 368 00:22:03,390 --> 00:22:07,080 wat jy kan gebruik vir 'n finale projek of net vir enigiets wat jy maak. 369 00:22:07,080 --> 00:22:12,830 En hulle is meestal Harvard verwante, en hulle wissel van die Huds-menu, 370 00:22:12,830 --> 00:22:17,780 byvoorbeeld aan die Harvard Events API wat sal toelaat dat jy toegang tot 'n lys van 371 00:22:17,780 --> 00:22:21,290 verskillende gebeurtenisse wat gaan aan by Harvard en daardie soort van ding. 372 00:22:21,290 --> 00:22:24,510 En so kan ons op enige een van hierdie en kry 'n spec vir dit, 373 00:22:24,510 --> 00:22:28,090 wat jy in staat wees om te vind vir enige API, en die idee is om 374 00:22:28,090 --> 00:22:33,920 dit kan jy weet, 'n, spesifiek wat van die API te vra en hoe om dit aan te vra. 375 00:22:33,920 --> 00:22:37,370 Met ander woorde, as ek wil hê dat alle gebeure wat gebeur môre 376 00:22:37,370 --> 00:22:42,550 dan het ek het natuurlik gee dit 'n datum wat ek wil in 'n sekere formaat, 377 00:22:42,550 --> 00:22:46,030 en B, sal dit my vertel presies wat dit gaan om terug te gee aan my. 378 00:22:46,030 --> 00:22:48,590 Dit sal sê: Ek gaan om terug te keer jy hierdie into voorwerp, 379 00:22:48,590 --> 00:22:50,960 of soos jy kan sien, is daar verskillende formate. 380 00:22:50,960 --> 00:22:54,050 >> Jy kan ook die standaard van die data as 'n CSV, byvoorbeeld. 381 00:22:54,050 --> 00:22:57,620 Maar jy weet presies hoe dat die data is gaan om te kyk wanneer jy dit terug te kry 382 00:22:57,620 --> 00:23:00,610 sodat jy kan verwag om sekere dinge te doen met dit. 383 00:23:00,610 --> 00:23:07,240 Ons kan scroll down en kyk, byvoorbeeld, as ons wil hê die API om navraag te doen 384 00:23:07,240 --> 00:23:11,500 'n kalender te kry, dan kan ons gebruik maak van hierdie spesifieke URL 385 00:23:11,500 --> 00:23:16,480 en gee dit sekere parameters wat gaan die data wat ons wil presies te wees. 386 00:23:16,480 --> 00:23:19,540 En so ook, as ons wil hê dat die data terug in 'n sekere formaat, 387 00:23:19,540 --> 00:23:23,790 dan kan ons vra dit om die data in 'n CSV-uitvoer, 388 00:23:23,790 --> 00:23:27,700 en dit is net 'n ander parameter dat ons verby die API. 389 00:23:27,700 --> 00:23:29,210 Baie cool dinge om daar te doen. 390 00:23:29,210 --> 00:23:32,550 Ek sou beslis aanbeveel uitcheck die CS50 API's. 391 00:23:32,550 --> 00:23:36,000 >> Ek gaan om te kyk na hierdie Harvard Food API in die besonder vir 'n bietjie. 392 00:23:36,000 --> 00:23:39,870 Een ding wat ek het eintlik ontwerp is hierdie Harvard Noms webwerf, 393 00:23:39,870 --> 00:23:44,930 wat gebruik maak van die CS50 Food API die Huds spyskaart vir die dag te haal. 394 00:23:44,930 --> 00:23:50,400 En vir die uitbreiding skool mense, Huds is die eetkamer diens aan die Harvard. 395 00:23:50,400 --> 00:23:55,130 Wat jy kry, is hierdie bladsy bevat al die etes vir die dag, so sien ons middagete. 396 00:23:55,130 --> 00:23:58,130 Ons het 'n paar verskillende kategorieë. Ons het die boontjie en die hele graan stasie. 397 00:23:58,130 --> 00:24:00,340 Ons het 'n die bruin rys stasie. 398 00:24:00,340 --> 00:24:03,360 Ons kan sien vir 'n brunch ons het hierdie paar voedsel-items. 399 00:24:03,360 --> 00:24:07,030 As ons kliek op hulle, dan kry ons die voedingswaarde-inligting. 400 00:24:07,030 --> 00:24:12,240 Jy sien dit is die voeding inligting vir pomelo's, in geval jy wonder. 401 00:24:12,240 --> 00:24:14,870 En dit weer doen, gaan ons eweknie in die agterkant hier 'n bietjie 402 00:24:14,870 --> 00:24:18,530 en sien wat presies dit doen om hierdie inligting te kry. 403 00:24:18,530 --> 00:24:21,710 En dit blyk nie eintlik baie kompleks wees op alle. 404 00:24:21,710 --> 00:24:28,720 Hierdie lêer lyk 'n bietjie slordig, maar hou in gedagte dat hierdie is die hantering van die hele webwerf, 405 00:24:28,720 --> 00:24:34,130 en as ek af scroll sien ons hierdie verandering data funksie. 406 00:24:34,130 --> 00:24:36,630 >> Nou, net om duidelik te wees is dit geskrywe, in CoffeeScript, 407 00:24:36,630 --> 00:24:39,570 wat is 'n taal wat jy waarskynlik nie gesien het nie voor. 408 00:24:39,570 --> 00:24:44,810 Maar dit is redelik leesbare, so ek sal loop deur dit asof dit pseudokode. 409 00:24:44,810 --> 00:24:49,080 Verandering datum is 'n funksie wat gaan in hierdie datum waarde, 410 00:24:49,080 --> 00:24:51,740 En dit is ook te neem in 'n eerste, wat ons nie omgee vir soveel. 411 00:24:51,740 --> 00:24:54,110 Maar die belangrike ding is dat dit hierdie datum nie. 412 00:24:54,110 --> 00:25:00,080 en daardie datum is die dag wat ons wil al die voedsel items aan te vra vir. 413 00:25:00,080 --> 00:25:04,030 En dan kan jy sien ons het hier 'n bietjie van die sintaksis, 414 00:25:04,030 --> 00:25:09,000 wat is basies die ontleding van daardie datum in 'n leesbare formaat. 415 00:25:09,000 --> 00:25:11,920 Met ander woorde, die API vereis die datum in 'n sekere formaat. 416 00:25:11,920 --> 00:25:17,390 Jy kan nie net sê 16 November 2012 AD. 417 00:25:17,390 --> 00:25:20,320 Dit sal nie weet wat om te doen met dit. Dit wil die datum in 'n spesifieke formaat. 418 00:25:20,320 --> 00:25:23,230 Al wat ons hier doen, gee dit presies wat formaat, 419 00:25:23,230 --> 00:25:26,520 wat is 'n jaar waarde en dan 'n koppelteken, 'n maand waarde, 420 00:25:26,520 --> 00:25:29,420 ander koppelteken en die datum waarde. 421 00:25:29,420 --> 00:25:34,910 En ons het ook sê dat ons wil hê dat die data uitset in into. 422 00:25:34,910 --> 00:25:37,560 >> Nou is ons die maak van hierdie AJAX versoek, en soos ek vroeër genoem, 423 00:25:37,560 --> 00:25:41,680 jQuery het hierdie super nuttige AJAX funksie wat al wat jy hoef te doen is om spesifiseer 424 00:25:41,680 --> 00:25:45,780 'n paar parameters af hier, en sal dit gee jou terug presies wat jy wil. 425 00:25:45,780 --> 00:25:50,490 Ons is vertel dat die URL wat ons dit wil hê om te gaan na hierdie CS50 Food API, 426 00:25:50,490 --> 00:25:52,270 wat ons het van die spec. 427 00:25:52,270 --> 00:25:56,730 Ons sê dat ons wil hê dat die data in into en dat 428 00:25:56,730 --> 00:25:59,490 ons gaan om te gee dit die data wat ons het vasgestel hier. 429 00:25:59,490 --> 00:26:02,670 Dit is die dag wat ons wil hê dat die voedsel-items vir. 430 00:26:02,670 --> 00:26:07,790 En dan sal al wat ons hoef te doen, is 'n soort van sukses funksie te definieer, 431 00:26:07,790 --> 00:26:11,980 wat is basies wat gebeur wanneer die API terugkeer dat data. 432 00:26:11,980 --> 00:26:15,490 Met ander woorde, het ons verpak al van die parameters wat ons wil, 433 00:26:15,490 --> 00:26:20,530 wat in hierdie geval is die dag wat ons dit wil hê en die feit dat ons wil dit in into, 434 00:26:20,530 --> 00:26:23,840 en ons het dit af na die API, so moet julle nou die API sê, okay, 435 00:26:23,840 --> 00:26:26,350 Hier is jou data, ek het dit vir jou terug. 436 00:26:26,350 --> 00:26:29,930 Ons het die sukses funksie, wat beteken gegee dat die API 437 00:26:29,930 --> 00:26:32,230 suksesvol terug sommige data wat ons doen met dit? 438 00:26:32,230 --> 00:26:35,980 >> En dit blyk dat alles wat ons doen is bel hierdie update menu funksie 439 00:26:35,980 --> 00:26:42,680 met alles wat die API teruggekeer het, sodat ons kan soek vir daardie 440 00:26:42,680 --> 00:26:47,970 en sien dat alles wat ons doen, is met behulp van 'n klomp van die nuwe sintaks hier 441 00:26:47,970 --> 00:26:52,220 die HTML hierdie nuwe data te werk en in te voeg. 442 00:26:52,220 --> 00:26:56,580 Wat dit toelaat, is ons het hierdie pyle aan weerskante, en ons kan kliek, 443 00:26:56,580 --> 00:27:01,060 en nou is ons op soek na die data vir die volgende dag en weer vir die volgende dag, 444 00:27:01,060 --> 00:27:04,820 en elke keer as dit is die opdatering van daardie datum waarde en die raadpleging van die API, 445 00:27:04,820 --> 00:27:07,510 om terug sommige data en om dit in die webwerf. 446 00:27:07,510 --> 00:27:10,590 Weereens, kan jy sien, super, super nuttig. 447 00:27:10,590 --> 00:27:14,410 Hierdie app het my 'n paar uur om saam te hack, 448 00:27:14,410 --> 00:27:20,140 en ek het 'n bietjie meer ervaring, natuurlik, maar jou CS50 finale projek 449 00:27:20,140 --> 00:27:22,870 kan lyk baie soos hierdie. 450 00:27:22,870 --> 00:27:29,540 >> APIs is super sterk vir die hoeveelheid moeite wat hulle neem. 451 00:27:29,540 --> 00:27:32,800 Die laaste ding wat ek gaan om te gaan oor 'n paar meer API's in die algemeen. 452 00:27:32,800 --> 00:27:35,480 Ek sal nie so ver te kry so ver as wat hulle doen nie spesifiek in hulle, 453 00:27:35,480 --> 00:27:38,740 maar ek sal gee jou 'n idee van wat daar buite is. 454 00:27:38,740 --> 00:27:42,700 2 werklik nuttig, as jy belangstel in die data-analise of visualisering 455 00:27:42,700 --> 00:27:45,960 of iets soos dit, is Freebase en Wikipedia. 456 00:27:45,960 --> 00:27:49,800 Wikipedia-vermoedelik julle almal weet is 'n gratis aanlyn ensiklopedie, 457 00:27:49,800 --> 00:27:53,230 en dit het eintlik 'n API, so as jy wil, byvoorbeeld, 458 00:27:53,230 --> 00:27:56,250 kry jy al van die tekste en die artikels vir die seekat 459 00:27:56,250 --> 00:27:58,030 kan jy baie maklik doen. 460 00:27:58,030 --> 00:28:02,300 Net sê hey, Wikipedia API, wil ek graag die data teruggekeer soos hierdie, 461 00:28:02,300 --> 00:28:07,010 en ek wil dit in hierdie formaat, en die artikel wat ek wil is seekat, 462 00:28:07,010 --> 00:28:09,820 en baie vinnig sal gee jou terug dat die inligting. 463 00:28:09,820 --> 00:28:12,230 Dit kan baie nuttig as jy wil 'n soort van die werf te maak 464 00:28:12,230 --> 00:28:16,200 dit is 'n beter kyker vir Wikipedia of iets soos dit. 465 00:28:16,200 --> 00:28:21,350 >> Freebase is 'n soort van 'n soortgelyke, maar dit is 'n bietjie moeiliker as ver as API. 466 00:28:21,350 --> 00:28:24,390 Freebase is dat dit 'n aanlyn ensiklopedie soos Wikipedia 467 00:28:24,390 --> 00:28:29,050 wat baie en baie van die verskillende inligting oor alle vorme van verskillende onderwerpe bevat, 468 00:28:29,050 --> 00:28:33,150 maar dit is gestoor in 'n relasionele databasis, wat is effens anders as Wikipedia. 469 00:28:33,150 --> 00:28:36,410 Wikipedia het sy artikels en artikels met skakels na ander artikels, 470 00:28:36,410 --> 00:28:38,860 maar vir die grootste deel, as jy wil die data vir die seekat, 471 00:28:38,860 --> 00:28:41,990 gaan jy na die seekat artikel, dat die data, en jy het 'n klomp van die teks 472 00:28:41,990 --> 00:28:43,830 oor seekatte, so dit is groot. 473 00:28:43,830 --> 00:28:46,870 Freebase werk in 'n effens meer ingewikkeld wyse 474 00:28:46,870 --> 00:28:48,930 alles wat verwant is aan mekaar. 475 00:28:48,930 --> 00:28:52,620 Met ander woorde, as ons op soek na seekat 476 00:28:52,620 --> 00:28:54,940 dan is dit het 'n klomp van die kategorieë wat verband hou met dit. 477 00:28:54,940 --> 00:28:57,920 >> Byvoorbeeld, dit is 'n dier, is dit leef onderwater, 478 00:28:57,920 --> 00:28:59,710 dit het 'n sekere liggaamstemperatuur. 479 00:28:59,710 --> 00:29:01,210 Ek weet nie. 480 00:29:01,210 --> 00:29:04,230 En al hierdie kategorieë is skakels na ander plekke waar jy kan gaan 481 00:29:04,230 --> 00:29:06,640 dinge om te sien met dieselfde kategorie. 482 00:29:06,640 --> 00:29:13,450 Met ander woorde, sou die seekat datastel bevat 'n skakel na die data wat vir alle diere, 483 00:29:13,450 --> 00:29:16,790 en dit sou laat my rond te beweeg in die databasis regtig vinnig. 484 00:29:16,790 --> 00:29:21,740 Dit kan baie nuttig wees as jy iets doen soos vergelykings. 485 00:29:21,740 --> 00:29:24,490 Met ander woorde, 'n sekere ding, wat jy wil sien 486 00:29:24,490 --> 00:29:27,890 wat anders dit verwant aan en sien hoe anders dit is nie verwant aan. 487 00:29:27,890 --> 00:29:30,700 Daardie soort van ding. Dit kan nuttig wees in 'n aantal maniere. 488 00:29:30,700 --> 00:29:34,250 As jy op soek is na vir meer van 'n uitdaging, en in staat wees om meer komplekse dinge om te doen 489 00:29:34,250 --> 00:29:38,740 Ek sal dit oorweeg om 'n blik op die Freebase API. 490 00:29:38,740 --> 00:29:44,670 Maar grootliks, Wikipedia is 'n baie eenvoudige plek om te gaan so ver as om inligting. 491 00:29:44,670 --> 00:29:48,340 Nog 'n plek wat ek sal kyk na Last.fm, en ek is eintlik gaan om te gaan na die webwerf 492 00:29:48,340 --> 00:29:53,800 in die geval van sommige mense is nie vertroud is nie, maar Last.fm is basies 'n musiek- 493 00:29:53,800 --> 00:29:57,220 smaak en aanbevelings webwerf. 494 00:29:57,220 --> 00:29:59,000 Jy kan 'n rekening. 495 00:29:59,000 --> 00:30:04,250 Jy kan oplaai musiek van jou musiek speler begin 496 00:30:04,250 --> 00:30:08,020 op die webwerf, en basies dit sal begin om jou musiek aanbevelings 497 00:30:08,020 --> 00:30:10,030 wat gebaseer is op wat jy luister na. 498 00:30:10,030 --> 00:30:14,270 >> Byvoorbeeld, as jy gaan na jou profiel bladsy - dit is myne- 499 00:30:14,270 --> 00:30:18,180 jy kan sien jy 'n lys van onlangs geluister na snitte. 500 00:30:18,180 --> 00:30:22,550 Jy kan sien algehele gunsteling kunstenaars, al daardie soort van ding, 501 00:30:22,550 --> 00:30:25,280 en weer, daar is 'n groot API agter Last.fm, 502 00:30:25,280 --> 00:30:29,360  en jy kan dit gebruik baie en baie van die regtig cool dinge om te doen. 503 00:30:29,360 --> 00:30:38,870 Byvoorbeeld, sal ek gaan na 'n vriend se bladsy wat hierdie Last.fm Tools webwerf. 504 00:30:38,870 --> 00:30:42,380 Dit is eintlik 'n ander platform wat op die Last.fm API gebou, 505 00:30:42,380 --> 00:30:45,420 en dit het 'n aantal van die mooi interessante dinge. 506 00:30:45,420 --> 00:30:50,260 As ek log in met my gebruikersnaam, byvoorbeeld, 507 00:30:50,260 --> 00:30:53,110 Ek kan vra om dit 'n tag wolk te genereer, byvoorbeeld, 508 00:30:53,110 --> 00:30:56,480 en wat dit gaan doen is gee my terug 'n beeld van 509 00:30:56,480 --> 00:30:59,850 al die verskillende genres en dat die soort van ding wat ek wil om te luister na. 510 00:30:59,850 --> 00:31:01,410 Hoe is dit om dit te doen? 511 00:31:01,410 --> 00:31:05,670 Dit is baie basies sê die Last.fm API hier is hierdie gebruiker. 512 00:31:05,670 --> 00:31:10,710 Ek wil graag die genre van elke lied te weet dat hulle ooit geluister na, 513 00:31:10,710 --> 00:31:15,130 en jy kan dit doen deur die maak van 'n redelik eenvoudige AJAX oproep aan die Last.fm API. 514 00:31:15,130 --> 00:31:18,990 Jy sal 'n groot lys terug te kry, en dan natuurlik 'n paar ander dinge word gedoen 515 00:31:18,990 --> 00:31:22,280 dit te omskep in 'n woord wolk, maar jy kan sien algehele 516 00:31:22,280 --> 00:31:25,850 dit is baie maklik om toegang te verkry, en baie maklik om te gebruik. 517 00:31:25,850 --> 00:31:30,750 Really nice vir 'n aantal van die dinge. 518 00:31:30,750 --> 00:31:35,940 >> Ek dink dit is omtrent al wat ek sal algehele sê. 519 00:31:35,940 --> 00:31:39,040 Een laaste ding wat ek sal noem oor API's in die algemeen is dat 520 00:31:39,040 --> 00:31:41,840 jy soms loop in iets genaamd koers te beperk, 521 00:31:41,840 --> 00:31:44,940 en die idee van die koers beperking is dat jy nie wil API's te misbruik. 522 00:31:44,940 --> 00:31:48,130 Met ander woorde, dit is regtig mooi dat 'n baie van hierdie webtuistes API's 523 00:31:48,130 --> 00:31:51,070 wat jy kan gaan tot en gebruik vir gratis. 524 00:31:51,070 --> 00:31:54,460 Maar, as jy die maak van miljoene of biljoene van versoeke per dag, 525 00:31:54,460 --> 00:31:57,610 Byvoorbeeld, as jy vas in 'n oneindige lus wat oneindig bevraagteken 526 00:31:57,610 --> 00:32:00,680 'n soort van API en kry 'n groot bedrag van die data terug, 527 00:32:00,680 --> 00:32:04,570 natuurlik dit is nie goed, so wat 'n baie van die API's doen, is hierdie koers beperking funksie 528 00:32:04,570 --> 00:32:09,970 wat sê jy kan net 1000 versoeke per dag per IP-adres of iets soos dit. 529 00:32:09,970 --> 00:32:12,540 En as jy 'n baie van die toets en daardie soort van ding te doen, 530 00:32:12,540 --> 00:32:14,890 jy sal soms loop in, en dit sal heeltemal onverwags sluit jy af 531 00:32:14,890 --> 00:32:18,280 en sê nee, ek is nie gee jy enige meer inligting. 532 00:32:18,280 --> 00:32:20,000 >> Wat jy wil doen, is om volgens die reëls speel. 533 00:32:20,000 --> 00:32:22,950 Jy wil om seker te maak dat jy die API spec versigtig. 534 00:32:22,950 --> 00:32:26,330 As dit het sekere reëls geheg aan dit, soos jy kan slegs X navrae per dag 535 00:32:26,330 --> 00:32:30,000 of jy kan net toegang tot 'n deel van die databasis 'n sekere aantal kere 536 00:32:30,000 --> 00:32:32,900 of iets soos wat jy wil om seker te maak jy vashou aan dit. 537 00:32:32,900 --> 00:32:38,360 Solank as wat jy binne daardie reëls speel sal jy waarskynlik 'n baie lekker tyd deur gebruik te maak van die API's. 538 00:32:38,360 --> 00:32:42,030 Jou algehele afhaal is API's is werklik, werklik nuttig. 539 00:32:42,030 --> 00:32:45,610 >> Daar is 'n API vir bykans enige groot web diens daar buite. 540 00:32:45,610 --> 00:32:50,700 Pretty much enige deel van die Google Tools Suite, Google Maps, Google Earth, 541 00:32:50,700 --> 00:32:54,390 Gmail, almanak, al hierdie dinge het APIs. 542 00:32:54,390 --> 00:32:58,280 Jy kan dit gebruik vir beide get data van die bediener en stuur van data na die bediener. 543 00:32:58,280 --> 00:33:00,870 Met ander woorde, as jy wou 'n kalender app te maak wat kan werk 544 00:33:00,870 --> 00:33:04,190 iemand se almanak, daar is 'n API vir dat. 545 00:33:04,190 --> 00:33:07,810 As jy wil iets wat gaan om jou te vertel waar te maak 546 00:33:07,810 --> 00:33:12,530 die plek van 'n sekere adres is dat jy die Google Maps API kan gebruik vir. 547 00:33:12,530 --> 00:33:15,860 API's is fantasties nuttig, en hulle is oral. 548 00:33:15,860 --> 00:33:18,700 As jy belangstel in 'n soort van die idee, 549 00:33:18,700 --> 00:33:22,170 daar is waarskynlik 'n verwante API wat jy kan gebruik om 'n baie van die data te kry 550 00:33:22,170 --> 00:33:25,060 baie vinnig en baie eenvoudig. 551 00:33:25,060 --> 00:33:28,140 >> As jy nog steeds op soek vir 'n projek of as jy net wil om te speel 552 00:33:28,140 --> 00:33:31,820 met iets in die algemeen, API's is beslis moeite werd is om te doen. 553 00:33:31,820 --> 00:33:37,200 Dankie, en ek is gelukkig om enige vrae te beantwoord wat julle kan. 554 00:33:37,200 --> 00:33:44,900 Goed, baie baie dankie. 555 00:33:44,900 --> 00:33:48,000 [CS50.TV]