[Powered by Google Translate] [Seminario] [A Programador la Enkonduko al API] [Billy Janitsch] [Universitato Harvard] [Tommy MacWilliam] [Jen CS50.] [CS50.TV] Saluton, ĉiuj, mi estas Billy, kaj hodiaŭ mi tuj parolos pri API, aŭ apliko programado interfacoj, specife en la kunteksto de CS50 fino projektoj kaj tiaj aferoj. Ĝenerale, kio estas API? En tre larĝaj terminoj, estas speco de meza viro kiu permesas 2 pecoj de programaro por komuniki unu kun la alia. Tio estas speco de tre ampleksa difino kaj ne estas tiel gravaj por tio, kion ni rigardis. Kion ni vere volas estas ia utila mezo tero por komuniki kun ia datumbazo ie. Jen letero, kaj esence la ideo estas ke ni estas apliko, kaj ni volas ricevi datumojn de datumbazo, sed ni ne volas konsulti la datumbazo rekte. Anstataŭe ni volas iri tra ĉi speco de meza homo, la API. La ideo malantaŭ tio estas nombroj 2 kaj 3 en la grafikaĵo estas ambaŭ tuj estos tre komplika kaj senorda. En aliaj vortoj, kiam la API estas informpeti la datumbazo, ĝi estas probable tuj estos uzante SQL tabloj kaj ĉio de tiu speco de ŝtofo, kaj ni lernis iom pri ĝi en CS50, sed entuta, vi rimarkis, ke estas iom da doloro. Ĝi alvenas tre, tre komplika kaj senorda, precipe kiam vi faras kompleksa demandoj kaj tiaj aferoj. Kion ni vere volas estas ia utila kaj simpla maniero atingi ke la datumoj, kaj tio estas la ideo malantaŭ nombroj 1 kaj 4 en la abako. Alivorte, ni volas vere simpla maniero por diri la API kion akiri por ni kaj vere simpla maniero atingi tiun datumoj dorso. Estas ĉefa vojo, kiun tiu datumo estas kutime sendis kaj ricevis, kio estas JSON, aŭ JavaScript Objekto Skribmaniero. Kiu povas varii iomete ĝis kiom vi sendu la peton al la API. En aliaj vortoj, se vi volas iom da certa kvanto de datumoj, kiel vi diras al la API por atingi tiun datumoj povas varii iomete. Kutime ĝi engaĝas farante ian reto peton. En aliaj vortoj, alirante ia URL ke tuj diru la API precize kion vi volas, sed la datumoj estas preskaŭ ĉiam sendis returne, alivorte, nombro 4 en JSON. Kio estas JSON ĝuste? Kiel mi diris, JavaScript Objekto Skribmaniero. Estas esence la universala normo por transdoni kaj ricevi datumojn. La ideo estas, ke vi havas tiuj 3 kategorioj de aĵoj. Vi havas arrays, hashmaps, kaj primitivoj. Arrays kaj hashmaps vi rigardis iomete en CS50, sed vi ia alveninta tre strikta senso de kio ili estas. En aliaj vortoj, kun tabeloj vi scias, ke ili estas tajpi baro, do vi nur havos unu speco de tipo kiu iras tra la tuta tabelo. JSON estas multe pli indulgentes kun tiaj aferoj. Esence la ideo estas vi konstrui ĉi tiun celon, kiu povas esti formita de iu el tiuj 3 aĵoj kaj povas esti formita de multnombraj de ili, kaj ili povas esti anidado. Jen speco de ekzemplo de JSON, kio estas tiuj buklaj krampoj tie reprezentas vian hashmap, kaj hashmap estas esence surĵeto de ia ŝlosilo al ia valoro. Vi vidos tie ke ni havas la propraĵoj ŝlosilo, kaj tio surĵeto sur tabelo, kiu estas tiu tuta afero. Ni vidas alian elementon de la hashmap, kiu estas tiu klavo isAwesome, kiu mapoj al komenca valoro de vera, en aliaj vortoj, bulea. Primitivoj povas esti kordoj. Ili povas esti entjeroj. Ili eblas bools, nenion tiel. Kaj vi vidos la enhavon de ĉi tabelo, ke propraĵoj punktoj al havas 2 kordoj en ĝi, mem-simila kaj mirinda. Tiuj estas 2 propraĵoj de JSON, kaj ni vidas ke JSON is awesome. Rigardi ke iom pli proksime mi iros konstrui pli kompleksa ekzemplo de JSON tie. Ni komencu per tabelo, ekzemple, nur malplenan tabelo. Sed tio estas speco de enuiga, tiel ni tuj plenigi ĝin iom, kaj kiel mi diris, tabeloj en JSON estas tajpi baro, do ni povus havi ankaŭ ĉenon tie, kio estas alta, kaj tio estas alia elemento de tiu tabelo. Kaj tiel same, ni povus aldoni hashmapping tie, kiu tuj havos kelkajn surĵetoj. Ĝi tuj devos surĵeto de nomo al la kordo Billy. Ni havas surĵeto de nomo al Billy, kaj ni havas surĵeto de preferita koloron al blua. Tio estas esence bona ekzemplo de JSON. Ĉio venas en-whoops, bezonas komo tie-cxiuj de la malsamaj partoj de ĝi. Denove, ĝi ne tajpi ligita, do vi povas havi ian tipoj ene ajn vi volas, kaj la ideo estas tio mem-simila. Alivorte, ĉi tie ĉi estas JSON objekto, kiel estas ĉi tiu afero, kiel estas ĝuste tio, do vi povas havi komencan esti objekto, tabelo esti objekto aŭ hashmap esti objekto. Kiel vi povas ia vidas, JSON estas vere, vere utila en kiu estas tiel versátil. Vi povas havi eblan datumoj kiujn vi povas koncipi stokitaj en JSON. Kiu faras ĝin vere bela lingvo por uzi kun API ĉar preskaux signifas ke negrave kio datumoj kiujn vi volas tie tuj estos iel atingi ĝin en JSON. Kelkaj propraĵoj kiuj faras JSON aparte bona por ĉi tiaj aferoj. Kiel vi povas vidi, kompare al multaj aĵoj kiuj vi laboris kun en CS50 ĝi estas relative tre facile legi kaj ankaŭ tre facile skribi. Vi povas indent ĝin se vi volas, kiel mi faris en tiu ekzemplo, kiu donas al vi belan, belajn versio kiun vi vidas vere bone. Sed cetere, estas ankaux facile legi kaj verki por komputilo. En aliaj vortoj, ĝi estas facile analizi kaj facile kodi, kio signifas ke ĝi estas bela rapida gxis legi la datumojn raportas, kaj JSON povas esti generita vere rapide. Estas ankaŭ tre facila por aliri malsamaj partoj de JSON kaj tiaj aferoj. Tio estas bela, kaj krome, la fakto ke ĝi estas mem-simila, en aliaj vortoj, la fakto ke vi povas havi JSON ene JSON ene JSON estas vere bela por stoki datumoj. Alia parto kiu estas ĝenerale vere utila en labori kun API estas jQuery. Vi lernis iom da JavaScript, kiu estas agrabla maniero manipuli HTML kaj CSS ene de retejo. Sed ĝi povas ia esti doloro kodo en ebenaĵo JavaScript, grandparte ĉar JavaScript estas vere abundajn lingvo. Vi devas lerni multe da sintakso, kaj ĝuste fari tre simplajn aĵojn prenas multon de kodo, tiel jQuery estas biblioteko por JavaScript. En aliaj vortoj, ĝi estas JavaScript-dosiero, kiun vi povas ŝarĝi kaj tiam uzi jQuery funkcioj fari iujn aferojn. Kaj jQuery esence faras vian vivon tuta multe pli facila. Ĝi simpligas kion prenus centojn da linioj en JavaScript suben al kelkaj linioj en jQuery. Estas aparte utila se vi uzas API ĉar ĝenerale kiel vi povas aliri API estas farante AJAX petojn, kaj mi kredas Davido menciis en prelego kiun AJAX petoj Estas ĝenerale kiam vi faras reton peto al iu speco de servilo kaj contrarestar ia datumoj kaj ĝisdatigi la paĝon instantáneamente. Dum en ebenaĵo JavaScript kiu portus freneza nombroj de linioj por validigi ĉiujn titolaj kaj faros cxion de tiu speco de ŝtofo, jQuery havas vere simpla funkcio nomita AJAX, kaj cxiuj vi devas fari en AJAX estas doni la parametrojn, kiujn vi volas doni la API, la situo de la API kaj neniu plia speco de ebloj, kiujn vi volas agordi. Estas vere, vere agrabla kaj tre utila por tiu speco de afero. Tio estas ĉio ni bezonas komenci atingi niajn manojn malpuraj en API. Mi iros, por porti kelkajn ekzemplojn kaj esplori siajn malsamaj propraĵoj kaj kial ili estas utilaj por diversaj specoj de aferoj. La unua afero Mi fakte montri al vi estas iu kiu mi laboras en al mia esploro laboratorio, kiu estas Ngram Viewer, kaj esence la ideo de Ngram Viewer estas vi povas serĉi ian vorton aŭ frazo kaj vidu kiom ofte ĝi estas aperita en certa aro de teksto kun la tempo. Ĉi tiu ekzemplo jen cxi tiu datumo aron de beboj kiuj naskiĝis en Novjorko inter 1920 kaj 2000. Ni povas serĉi, ekzemple, pro la nomo Jennifer, kaj ni vidos, ke antaŭ-1960 ĝi vere ne uzis cxiuj multe, kaj poste kiam ni atingos en postaj jaroj ĝi estos uzata farante pli kaj pli. Ni povas ankaŭ fari komparojn, do se ni komparas Jennifer al, ekzemple, Tomaso, ni povas vidi Tomaso estis bela disvastiĝinta tra la tuta historio, dum Jennifer estas pli freŝa nomo. Ni povas fari tian aferon. Kiel funkcias tiu apliko laboro? Esence, ĝi funkcias tra API. En aliaj vortoj, ni havas iujn parametrojn tie. Ni havas la parametroj de kion ni reale sercxas, kiuj estas tiuj nomoj, kaj tiam ni havas kelkajn aliajn propraĵoj, kiel la Y akso kaj la X akso. Vi povas vidi, ni havas kelkajn malsaman ebloj ĝis la tempo rezolucio uzi kaj tiaj aferoj. Ni havas tiuj ebloj gxis kion datumoj ni efektive volas de la datumbazo, kaj ni volas ke la datumoj reen en iu utila maniero. Ordinare, se ni informpeti la datumbazo rekte ĝi ordigi de esti doloro fari ĉar supozeble tiu datumo pri bebo nomoj vivas en iu datumbazo ie, kaj estus vere komplikis havi por konsulti ĝin permane kaj decidi precize kion datumoj reveni. En aliaj vortoj, ni nur zorgas pri Jennifer kaj Thomas en ĉi tiu kazo, kaj ni nur zorgas pri la certa akso kaj ĉiuj tiaj aĵoj. Kiel ni atingas ĉirkaŭ ĉi? Fosi en ĉi API iom pli mi montros al vi alia ekzemplo de ĉi tiu platformo kiu uzas iomete malsaman datumoj aro. Ĉi tiuj datumoj aro, anstataŭ esti bebo nomoj, estas fakte nur en la tuta presi publikigo datumbazon de Open Library, kiu estas giganta fonto de tekstoj eldonitaj dum la lastaj 100 aŭ tiel jaroj. La ideo estas ke ni havas ĉi compository de milionoj kaj milionoj da teksto, kiuj ni povas nun serĉi aliajn vortojn kaj frazojn in Jen ekzemplo kiu varias iom malsame de la antaŭa ekzemplo Mi montris al vi, kio estas ni havas tiuj 3 search konsultoj, milito, milito, kaj la franca vorto por milito, kiu estas guerre. Kaj ni sercxas ene 3 malsamaj sekcioj de la tuta datumbazo. En aliaj vortoj, en ĉi tiu unua konsulto ni nur serĉis en Usono, en la dua oni nur en la UK, kaj la tria nur de verkoj eldonitaj en Francio. Ni vidas kelkajn interesajn ŝablonoj emerĝi. Ekzemple, ni vidas dekstre ĉi tie kiu- oops, mi paneas la akso iomete, sed vi povas vidi dekstre en ĉi tiu rango ĉi tie ĉirkaŭ la Civila Milito tie estas granda spiko en la usona eldono sed ne tia granda spiko en la aliaj du, kaj tio estas evidente ĉar la Usona Enlanda Milito okazis en tiu punkto. Ni povas vidi iom malvarmeta stuff tie, sed kion ni vere zorgas pri kiel ni ricevis ĉi informon. Mi prenos vin malantaŭ la scenoj en ĉi tiun programon en iomete. A neat lertaĵo estas se vi laboras kun la ejo kaj tipon de volas scii kio okazas malantaŭ la scenoj, vi povas malfermi la programisto iloj. Mi tuj iros uzante Chrome estas programisto iloj, kaj alveni al tiuj vi povas fari kontrolon, sxangxigxo, J, kaj tio kondukas vin al la JavaScript konzolo. Estas kelkaj langetoj tie. Ili povas ĉiuj esti bela utila sub malsamaj cirkonstancoj, sed mi zorgas pri la reto langeton nun, kaj mi vere devas refreŝigi atingi ke laboristino. Ho, pardonu. Li ŝatas doni hazarda ekzemplo. Konsentite, ni uzos ĉi tiun ekzemplon anstataŭ tiam. La ideo estas tie estas tio API tie, kaj vi povas vidi ĝuste kio la API revenas. Ĉi tio estas kion la apliko contrarestar de la API, veniginte ke peton. Lasu min zomi iom, kaj ni povas esence vidas estas nur serio de klavo valoro paroj en JSON. En aliaj vortoj, ni havas ĉi tie hashmap ke tio surĵeto valoroj. En aliaj vortoj, ĝi estas surĵeto jaroj valoroj. En 1765 ajn vorton ni komence serĉis uzas 90 fojoj el 1 miliono, do ni contrarestar tiu rezulto. Ne precize JSON ekde ni havas ĉi iom rezulto header tie, sed rimarkas ke ĉi tiu tuta objekto tie estas nur granda big JSON blob. Ni havas aron tie kiu enhavas cxi tiun tutan elementon, kaj vi povas vidi ke tutaj ero finas tie, kaj tiam ni havi alia granda elemento kiu iras la tutan vojon malsupren al la fino, kaj kiu finas ĉi tie. Ni havas vere grandan tabelo kun 2 celoj en ĝi, kaj ĉiu el tiuj objektoj estas hashmap. Vi povas vidi ene de ĉiu el tiuj hashmaps ni havas surĵeto de tiu indekso valoro al 0 kaj ĉi valora valoro al alia hashmap, kio estas denove surĵeto X akso valoroj al Y akso valoroj. Vi povas vidi JSON ricevas iom komplika, sed entuta, ĝi estas fakte tre utila, kaj ĝi estas tre facila por aliri kompare kun aliaj diversaj formoj de skribmaniero. Koncerne kion ni reale sendi datumojn por la API por akiri, Mi tuj iros en la malantaŭan finon iom ĉi tie. Ĉi tiu estas la granda JavaScript dosieron ke tio manipulante ĉiuj de la interagoj de la TTT-app, kaj tiel ni ne zorgas pri la plimulto de tio, sed ni faru zorgo pri kelkaj el ĝi. Ekzemple, ni zorgas pri tio buildQuery funkcio, kaj la ideo de ĉi tiu funkcio estas esence ĝi estas cxirkauxrigardante la paĝo, decidi kio la uzanto volas konsulti, en aliaj vortoj, kontrolanta tiuj skatoloj kie mi enigo lia serĉo terminoj, kontrolanta la malsamaj Y kaj X akso valoroj kiuj ili jam elektita kaj ĉiuj tiaj aferoj, kaj tuj kraĉis tiun query valoro, kiun mi povas tiam sendi for al la API. Ĉi aspektas komplika, kaj ĝi estas bela komplika sed kion mi tuj ne-fakte, mi jam faras tion, kio estas granda- estas ke mi iros akiri la konzolo por presi precize tiu konsulto valoro ke ĝi estas sendi for al la API. Tio estas vere tie ĉi. Pardonu, ĝi eligas multon. Sed ĉi tiu estas kion ni zorgas pri, tiu celo ĉi tie. Ĉi tiu estas la demando objekto. Alivorte, ĉi tiu estas ekzakte kion la retejo apliko sendas al la API, kaj do ni rigardu interne iom, kaj ni vidas ni havas kelkajn valorojn tie. Ni vidas ni havas ĉi grafo tipo, kiu estas spritaĵoj por miliono vortoj, kio estas ĝuste kion ni elektita en la Y akso super tie. Tie estas kie tiu venas de. Ni havas datumbazon valoro, kio signifas, ke ekzistas iu certa datumbazo ke tiu informo estas vivantaj, kaj ni volas atingi ke datumoj specife kontraste al la bebo nomoj datumoj, ekzemple. Tiam ni havas ĉi grupoj valoro, kiu diras, ke ni volas serĉi per jaro kompare al iu ajn alia X akso valoro. Tiam ni havas metodon, kiun iuj API faros multnombraj aĵoj. Alivorte, ĉi API povas ankaŭ revenos aliaj tipoj de datumoj, sed en ĉi tiu kazo, ni volas ke surĵeto de X al Y akso valoroj akso valoroj. Tion, ke diras li fari tie, kaj ni havas ĉi serĉo limoj tabelo, kiu enhavas 2 valorojn. La unua estas, kion ni vidas tie, kiu estas ĉiuj valoroj enhavis en tiu unua iom skatolo ĉe la supro. Alivorte, ni volas serĉi la vorton batalo, kaj ni volas filtri ĝin por anglaj tekstoj ene usona literaturo. Ni havas tiu lando, kiu estas Usono. Ni havas lingvo, kiu estas la angla, do ni havas ĉiujn tiujn malsamajn partojn kiuj ĉiuj diris la API ekzakte kion ni volas. Ni ne scias kion la datumoj kiujn ni reiros ankoraux, sed ni scias ke la datumoj iras preni iun formon. Ĉi tiu ekzemplo estas speco de la komplika flanko, kaj vi ne nepre devas uzi API ĉi komplekso, sed ĉi tiu estas montri al vi la rango kaj potenco de kio API povas fari. En aliaj vortoj, uzante relative simpla konsulto sistemo ni esence havas enigo skatolo kun kelkaj aliaj selectores en malsamaj lokoj. Lasu min zoom reen cxi tie. Ni havas enigo skatolo kun kelkaj malsamaj pridatumon unuarangaj, kaj ni havas Y akso kaj X akso unuarangaj. Ni ne vere havas ke multaj kampoj, kaj ni povas vidi tre facile ni povos konsulti ian API kaj akiri datumoj dorso kaj tiam metis ĝin en ĉi grafikaĵo, kiu estas tiam tuj montri ĝin en utila formo. Rigardi alian ekzemplon kiu povus esti iom pli familiaraj al vi infanoj ni tuj plenumos al Facebook. Facebook API nomas la Facebook Grafikaĵo, kaj esence kion tio signifas estas Facebook konsideras sin ĉi amasa datumbazo de multaj malsamaj partoj kiuj ĉiuj havas iujn rilatojn inter si. Alivorte, mi estas uzanto de Facebook, tiel mi havas profilo, kaj mi ankaŭ havas iujn amikojn, kaj ĉiu el ili havas profilo, kaj ĉiu el miaj amikoj havas muron, kiu havas malsamajn komentoj pri gxi, kaj ĉiu el tiuj komentoj havas gustojn kaj ĉiuj tiaj aferoj. Ekzistas multaj malsamaj partoj al Facebook. Ĝi estas ege kompleksa API, kaj jen mia tunoj vi povas fari per ĝi, sed estas vere bela simpla uzi. Mi tuj komencos eliri irante al graph.facebook.com / billyjanitsch, kio estas mia unika konton nomo, kaj via konto nomo aŭ esti ia vorto se vi elektis ĝin, aŭ eble nur estos ĉeno de nombroj. Kion ni reiros estas sufiĉe baza informo. Ni vidas, ke mi havas unua nomo, kiu estas Billy, familinomo, kiu estas Janitsch. Estas unika Facebook ID, kiun mi havas. Vi povas vidi ke mi estas viro kaj ke mi havas mian lingvon opcio al la brita angla. En aliaj vortoj, ni vidas tre baza informo ĉi tie. Ne tro multe, sed ĝi donas al ni ideon pri kio estas tie. Ni povas fari la samon al David Malan, ekzemple. Mi kredas lia nomo estas dmalan. Ni rigardu Davidon Malan havas unika ID. Li havas nomon, antaŭnomon, dua nomo, familinomo. Ni vidas ankaŭ, ke li estas viro kaj havas sian lingvon aro al usona angla. En aliaj vortoj, ni vidas belajn baza informo ĉi tie. Nun, kio okazas se ni provos kontroli ion alian? Diru min interesas kion David Malan ŝatis en Facebook. Mi povas do / likes. Nun ni kolizios problemo. Ni havas ian eraron kiu diras aliron ĵetono necesas peti ĉi rimedo. Sed se vi pensas pri tio, ke efektive havas sencon ĉar estus stranga se vi povus aliri al ĉiu unuopa parto de Facebook datumbazo nur el ia simpla API, ĉu ne? En aliaj vortoj, supozeble viaj informoj ne povas aliri per ĉiu kiu volas ĝin. Tiu eraro estas precize kion tio signifas. Iuj API postulas iujn permesojn por konsenti liaj datumoj. Kaj eĉ pli progresintaj API, kiel la Facebook unu, postulos iuj permesoj por fari certajn aferojn. Mi povas vidi ĉi bazaj informoj pri Davido Malan. Mi povas vidi ke li estas viro kaj ke li vivas en Usono, sed mi ne povas vere vidi ion pasinta tio. Por ĉirkaŭiri tiun nuntempe, Facebook havas ĉi bela ilo kiu estas la grafeo API esploristo, kaj la ideo de tio estas vi povas ordigi de konsistigas permesojn por vi mem bazita sur via propra konto kaj tiam vidi aferojn kiu specife via konto povas vidi. Ekzemple, se mi faras graph.facebook.com/billyjanitsch/likes- whoops, mi supozas mi devas revalidigi mia signo tie. Okay. Se mi faras tion denove, granda, nun mi vidas, ke mi alvenas ĉi objekto reen kiu diras ke mi ŝatas lageto nudeloj, kiuj estas en la kategorio Ludoj kaj ludiloj. Mi ŝatas rosmaroj, kiu estas en la kategorio Besto. Tiuj estas miaj realaj Facebook ŝatas. Ili estas ia hontinda. Sed ni povas vidi ĉi datumoj estas ĉiuj revenis en JSON. Estas bela legebla. En aliaj vortoj, ni havas ĉi surĵeto de datumoj al ia tabelo, kaj ĉiu ero de tiu tabelo estas hashmap kiu mapas la nomo de kiel kaj la kategorio de kiel. Ĉiu kiel havas unika ID. Ekzistas ĉiaj malsamaj aĵoj de datumoj, ke ni povas atingi, kaj se vi interesiĝas uzante la Facebook API por CS50 fina projekto aŭ ion kiel ke fakte sufiĉe doable. Esence kiel vi akiris ĉirkaŭ la aŭtentokontrolo afero estas Facebook uzas sistemon nomita OAuth, aŭ Malferma aŭtentigo, kaj mi ne volas eniri ĝin nun ĉar OAuth aŭ malsama tipo de aŭtentokontrolo inklinas varii multe inter diversaj API, do mi povus pasigi longan tempon tuj super ĉiu, sed ili estas efektive bela mem-klarigan. Se vi Google Facebook API ĝi estas tre legebla. Ekzistas tuta spec. Ekzemple, jen estas la dokumentadon por la Facebook API, kaj vi povas vidi min sur la Vikipediista paĝo, do mi povas lerni pri la malsamaj specoj de aferoj ke estas disponeblaj por ricevi gxis datumoj kaj ankaŭ la malsama permesoj, ke mi bezonas por atingi ilin. Kiel ni vidis, tion ni ne bezonas permesojn por aliri la nomo aŭ la sekso, sed tie ke ni bezonas permesojn por plej aferoj. Ĉi tiu paĝo, aŭ pli ĝuste, tiu retejo ankaŭ diros al vi kiel akiri signo por povi autenticar mem. Plej aŭtentokontrolo sistemoj uzas ian signon kie vi ricevis ĉi tiun solan valoron, kiu estas vere longa kaj hazarda vico, kaj tiu maniero povas asocii la peto, ke vi faras kun vi. Alivorte, ili scias, ke vi nenion faras suspektinda kun iliaj datumoj. Ili scias precize kion vi ricevas. Ili ankaŭ scias, ke vi havas permeson por vidi tiun informon. Se vi faris Facebook programo kaj via programo havas iujn uzantojn, kaj tiuj uzantoj permesis ke programo por aliri iujn partojn de lia profilo, tiam tiu, kiu API ŝlosilo aŭ ĵetono, ke tiu programo uzas povos aliri la datumojn por tiuj uzantoj. Tio povas soni komplika, sed ĝi ne estas tro malbona, kaj se vi volas uzi Facebook mi forte rekomendas ke vi konsideri muzikumante kun iliaj API. Ĝi estas tre cool kaj vi povas fari multajn malsamajn aferojn kun ĝi. Se la uzanto donas al vi tiujn permesojn vi povas eĉ reiri al la API kaj diru mi volas reale afiŝi al ĉi uzanto muro, aŭ mi volas havi ilin afiŝi foton, kaj tial en via datumstrion vi iam akiri tiujn tedas aĵoj dirante via amiko estas spektis tiun video sur ia stranga ejo aŭ io kiel tio. Tio estas ĉar tiu programo estis donita aliron por afiŝi en tiu persono muro. La ideo entute, la Facebook API estas bela komplika sed ankaŭ vere utila. Definitive valoras kontroli, ĉu vi ankoraŭ serĉas fina projekto. Alia suite de API, ke mi iros, por transiri estas CS50 API. Lasu min zomi tie. CS50 fakte kunmetis tuta serio de APIs ke vi povas uzi por fina projekto aŭ simple por nenio, ke vi faras. Kaj ili estas plejparte Harvard rilatigita, kaj ili varias de la HUDS menuo, ekzemple, al ĉi Harvard Eventoj API, kiu lasos vin aliri al listo de malsamaj okazaĵoj kiuj okazas en Harvard kaj tiaj aferoj. Kaj tiel ni povas alklaki iun el tiuj kaj akiri spec por tio, kiu vi povos trovi por ajna API, kaj la ideo estas ĝi permesas scii, A, specife kion peti de la API kaj kiel peti ĝin. En aliaj vortoj, se mi volas ĉiujn eventojn kiuj okazas morgaŭ tiam Mi devas evidente donas tiu dato, ke mi volas en certa formato, kaj B, ĝi rakontos al mi precize kio okazas redoni al mi. Ĝi diros Mi tuj revenos al vi JSON objekto, aŭ kiel vi povas vidi, estas malsamaj formatoj. Vi ankaŭ povas redoni la datumojn kiel CSV, ekzemple. Sed vi scias ĝuste kiel ke la datumoj tuj serĉos kiam vi ricevas ĝin tiel vi povas atendi por fari iujn aferojn kun ĝi. Ni povas rulumi malsupren kaj vidi, ekzemple, se ni volas konsulti la API por havi kalendaron, tiam ni povas uzi ĉi aparta URL kaj donu iujn parametrojn kiuj tuj estos la datumoj kiujn ni volas precize. Kaj same, se ni volas ke la datumoj reen en certa formato, tiam ni povas peti ĝin al eligo la datumojn en CSV, kaj tio estas ĝuste alia parametro kiu ni pasas al la API. Multaj cool aferojn por fari tie. Mi certe rekomendas ekiras la CS50 API. Mi iros rigardi tiun Harvard Manĝo API precipe por iom. Unu aferon mi vere desegnita estas ĉi Harvard Noms TTT-ejo, kiu uzas la CS50 Manĝo API por rekuperi la HUDS menuo por la tago. Kaj por etendo lernejo popolo HUDS estas la manĝ servo ĉe Harvard. Kion vi ricevas estas ĉi paĝon, kiu enhavas ĉiujn de la manĝoj por la tago, do ni vidos lunĉo. Ni havas kelkajn malsamaj kategorioj. Ni havas la fabo kaj tutaj akno stacidomo. Ni havas la bruna rizo stacidomo. Ni povas vidi brunch ni havas ĉi tiujn kelkajn manĝerojn. Se ni klaki sur ili, tiam ni preni la nutrado informo. Komprenu ĉi tiu estas la nutrado informo por pomelo, en kazo vi demandis. Kaj tiel denove, ni tuj rigardi en la dorso fino tie iomete kaj vidi kio precize tiu faras por atingi tiun datumon. Kaj rezultas fakte ne esti tre kompleksa ajn. Ĉi tiu dosiero aspektas iom senorda, sed pripensu ke tio estas la uzado de la tuta TTT-ejo, kaj se mi rulumu malsupren vidas tiun ŝanĝon datumoj funkcio. Nun, nur por esti klara, ĉi tiu estas skribita en CoffeeScript, kio estas lingvo, kiun vi verŝajne ne vidis antaŭe. Sed estas bela legebla, do mi iros tra ĝi kvazaŭ ĝi estus _pseudocode_. Ŝanĝo dato estas funkcio kiu tuj prenos en ĉi tiu dato valoro, kaj ĝi estas ankaŭ tuj prenos en la komenco, kion ni ne zorgas pri tiel. Sed la grava afero estas ke ĝi havas ĉi dato, kaj ke nun estas la tago, kiam ni volas peti ĉiujn manĝerojn por. Kaj tiam vi vidos ni havas iom da sintakso tie, kiu estas esence sintaksa analizo tiu dato en legebla formato. En aliaj vortoj, la API postulas la dato en certa formato. Vi ne povas simple diri Novembro 16th, 2012 pK. Ĝi ne scias kion fari kun tio. Ĝi volas la dato en specifa formato. Ĉiuj ni faras ĉi tie, donas ĝin ĝuste tiu formato, kio estas jaro valoro kaj tiam streketo, monato valoro, alia streketo kaj la dato valoro. Kaj ni ankaŭ diras, ke ni deziras ke la datumoj esti eliro en JSON. Nun ni faras ĉi AJAX peton, kaj kiel mi menciis antaŭe, jQuery havas ĉi tiu super utila AJAX funkcio kiu ĉiuj vi bezonas fari estas specifi kelkaj parametroj cxi tie, kaj estos al vi reen precize kion vi volas. Ni diras, ke la URL ni volas iri al estas ĉi CS50 Manĝo API, kiuj ni ricevis de la specifon. Ni diras, ke ni deziras ke la datumoj en JSON kaj tiu ni tuj donos ĝin ĉi datumoj kiuj ni difinis supren tie. CXi tiun tagon ni volas ke la manĝerojn por. Kaj tiam ĉiuj ni devas fari estas difini ian sukceson funkcio, kiu estas esence kio okazas kiam la API revenas tiu datumo. Alivorte, ni pakita supren ĉiujn parametrojn kiuj ni volas, kiu en ĉi tiu kazo estas la tago, kiam ni volas kaj la fakto ke ni volas ĝin en JSON, kaj ni sendis ĝin al la API, nun la API diras, estas bone, tie estas viaj datumoj, mi ricevis ĝin por vi. Ni havas la sukceso funkcio, kiu signifas donita ke la API sukcese revenas iuj datumoj, kion ni faru pri ĝi? Kaj ĝi rezultas ke ĉiuj ni estas nomas tion ŝanĝo menuo funkcio kun kio la API revenis, do ni povas serĉi ke kaj vidu, ke ĉiuj ni faras uzas aron da novaj sintakso tie ĝisdatigi la HTML kaj enmeti tiun novan informon. Kion ĉi tio permesas estas ni havas ĉi tiujn sagoj ambauxflanke, kaj ni povas alklaki, kaj nun ni rigardas la datumojn por la sekva tago kaj denove por la sekva tago, kaj ĉiufoje ĝi estas ĝisdatigo tiu dato valoro kaj informpeti la API, contrarestar iuj datumoj kaj metante ĝin en la paĝaro. Denove, vi povas vidi, super, super utila. Tiu ĉi programo prenis min kelkaj horoj por pirati kune, kaj mi havas iom pli sperto, evidente, sed via CS50 fina projekto povas rigardi iun tre multe ŝatas tion. API estas super potencaj por la kvanto de peno, ke ili prenu. La lasta afero mi tuj iros super estas kelkaj pli API larĝe. Mi ne venos gxis en ilin gxis kion ili faras konkrete, sed mi donos al vi ideon pri kio estas tie ekstere. 2 vere utilaj, se vi interesiĝas datumoj analizo aŭ videbligo aŭ io simila, estas Vikipedio kaj Vikipedio. Wikipedia-supozeble vi ĉiuj scias-estas senpaga interreta enciklopedio, kaj ĝi efektive havas API, do se vi volas, ekzemple, ricevi ĉiujn tekstojn kaj artikolojn por polpo vi povas tre facile fari tion. Nur diru hey, Vikipedio API, mi ŝatas la datumoj revenis kiel ĉi tio, kaj mi ŝatus ĝin en ĉi tiu formato, kaj la artikolo mi ŝatus estas polpo, kaj tre rapide donos vin tiun informon. Tio povas esti vere utila se vi volas fari ian ejo tio estas bona spektanto por Vikipedio aŭ io kiel tio. Vikipedio estas speco de simila, kvankam ĝi estas iomete pli malfacila gxis API. Vikipedio estas kiel Vikipedio en kiu estas interreta enciklopedio Gxi enhavas multe kaj multaj malsamaj datumoj pri ĉiaj diversaj temoj, sed ĝi estas stokita en rilata datumbazo, kiu estas iomete malsama de Vikipedio. Vikipedio havas liajn artikolojn kaj artikolojn ligitaj al aliaj artikoloj, sed por la plej granda parto, se vi volas ke la datumoj por polpo, vi iras al la polpo artikolo, atingi tiun datumon, kaj vi havas faskon da teksto pri polpoj, do tio estas granda. Vikipedio funkcias en iomete pli komplika maniero laŭ kiu ĉio estas rilatanta al unu la alian. En aliaj vortoj, se ni serĉas polpo tiam ĝi havas aron da kategorioj asociita kun ĝi. Ekzemple, estas besto, ĝi vivas sub la akvo, ĝi havas iujn korpo temperaturo. Mi ne scias. Kaj ĉiuj el ĉi tiuj kategorioj estas ligiloj al aliaj lokoj kie vi povas iri vidi tion kun tiu sama kategorio. En aliaj vortoj, la polpo datuma aro enhavus ligon al la datuma aro por ĉiuj bestoj, kaj tio lasus min movi en la datumbazo vere rapide. Tio povas esti tre utila se vi faras iun kiel komparoj. En aliaj vortoj, donita iu afero, vi volas vidi kio alia ĝi estas rilata al kaj vidi kion pli ĝi ne rilataj al. Tiaj aferoj. Ĝi povas esti utila en pluraj manieroj. Se vi serĉas pli de defio kaj povi fari iujn pli kompleksaj aĵoj Mi opinius prenante rigardi la Vikipedio API. Sed plejparte, Vikipedio estas tre simpla loko por iri gxis atingi informo. Alia loko, kiun mi rigardas estas Last.fm, kaj mi fakte tuj iri al la retejo en kazo iuj personoj ne estas familiara, sed Last.fm estas esence muziko gustoj kaj rekomendoj retejo. Vi povas fari konton. Vi povas komenci supreniri muzikon de via muziko ludanto al la retejo, kaj esence komencos donas al vi muziko rekomendoj surbaze de kio vi aŭskultu. Ekzemple, se vi iros al via profilpaĝo-ĉi estas mia- vi povas vidi ke vi havas liston de lastatempe aŭskultis kantoj. Vi povas vidi entuta preferataj artistoj, ĉiuj tiaj aferoj, kaj denove, tie estas granda API malantaŭ Last.fm,  kaj vi povas uzi ĝin por fari partoj kaj multaj vere malvarmeta aĵoj. Ekzemple, mi iros al amiko paĝo kiu havas ĉi Last.fm Agordoj retejo. Ĉi tiu estas efektive alia platformo kiu estas projektita sur la Last.fm API, kaj ĝi faras kelkajn belajn interesaj aferoj. Se mi ensaluti per mia uzanto nomo, ekzemple, Mi povas peti ĝin por generi etikedo nubo, ekzemple, kaj kion tiu tuj fari estas doni al mi bildon de ĉiuj malsamaj ĝenroj kaj tiaj aferoj kiujn mi ŝatas aŭskulti. Kiel oni faras tion? Tre esence ĝi estas dirante al la Last.fm API jen tiu uzanto. Mi ŝatus scii la ĝenro de ĉiu kanto kiun ili iam aŭskultis, kaj vi povas fari tion farante belan simplan AJAX alvokon al la Last.fm API. Vi ricevos reen granda listo, kaj tiam evidente iu alia materialo estas farita turni ĝi enen vorto nubo, sed vi povas vidi entuta ĝi estas tre facile aliri kaj tre facila uzi. Vere bela por pluraj aferoj. Mi kredas ke temas pri ĉiuj mi diros entute. Unu lasta afero mi mencias pri API ĝenerale estas ke vi foje kolizias iun nomita imposto limigi, kaj la ideo de imposto limigi estas vi ne volas trouzi API. En aliaj vortoj, ĝi estas vere bela, ke multo el tiuj retejoj havas API ke vi povas iri al kaj uzi senpage. Tamen, se vi faras milionoj aŭ miliardoj da petoj por tago, ekzemple, se vi batis en senfina ciklo ke tio senfine informpeti ia API kaj contrarestar grandegan kvanton de datumoj, evidente tio ne bona, do kion multan API fari estas havi tiun ritmon limigi karakterizaĵo kiu diras nur povas fari 1.000 petoj tage po IP-adreso aŭ io kiel tio. Kaj se vi faras multajn provojn kaj tiaj aferoj, vi foje kuri en tiun, kaj subite ĝi fermis vin ekstere kaj diru ne, mi ne donas al vi neniun pli datumojn. Kion vi volas fari estas ludi per la reguloj. Vi volas certigi ke vi legis la API spec atente. Se ĝi havas iujn regulojn ligita, kiel vi nur povas fari X demandoj tage aŭ vi nur povas aliri al parto de la datumbazo de limigita nombro da fojoj aŭ ion tian vi volas certigi vin batos al tio. Tiel longe kiel vi ludas ene de tiuj reguloj vi probable havas vere bela tempo uzante API. Via tuta takeaway estas API estas vere, vere utila. Estas API por preskaŭ ajna granda servo retejo tie. Preskaux neniun parton de la Google Agordoj Suite, Google Maps, Google Earth, GMail, Google Calendar, ĉiuj tiuj aĵoj havas API. Vi povas uzi ilin por ambaŭ get datumoj de la servilo kaj sendi datumojn al la servilo. En aliaj vortoj, se vi volas fari kalendaron programo kiu povas ĝisdatigi ies Google Calendar, ekzistas API por tio. Se vi volas fari ion, ke tuj rakontos al vi kie la situo de certa adreso estas vi povas uzi la Google Maps API por tio. API estas fantazie utila, kaj ili estas ĉie. Se vi interesiĝas ia ideo, ekzistas probable rilatanta API kiu vi povas uzi por akiri multe da datumoj tre rapide kaj tre simple. Se vi ankoraŭ serĉas projekto aŭ se vi volas nur ludi ĉirkaŭ kun iu ĝenerale, API estas definitive valoras faras. Dankon, kaj mi estas feliĉa por respondi demandojn kiujn vi infanoj havu. Okay, danke tre. [CS50.TV]