[Powered by Google Translate] [Seminar] ['n programmeerder se Inleiding tot APIs] [Billy Janitsch] [Universiteit van Harvard] [Tommy MacWilliam] [Hierdie is CS50.] [CS50.TV] Hi, almal, ek is Billy, en vandag is ek gaan om te praat oor API's, of application programming interfaces, spesifiek in die konteks van CS50 finale projekte en daardie soort van ding. In die algemeen wat is 'n API? In baie breë terme, dit is 'n soort van 'n middeljarige man wat toelaat dat 2 stukke van sagteware om te kommunikeer met mekaar. Dit is 'n soort van 'n baie breë definisie en is dit nie relevant is vir wat ons is op soek na. Wat ons regtig wil hê, is 'n soort van 'n nuttige middel grond om te kommunikeer met 'n soort van databasis iewers. Hier is 'n grafiek, en basies die idee is dat ons is 'n aansoek, en ons wil inligting te kry uit 'n databasis, maar ons wil nie die databasis direk navraag. In plaas daarvan het ons wil om te gaan deur hierdie soort van 'n middeljarige man, die API. Die idee agter die nommers 2 en 3 op die grafiek is albei gaan wees baie ingewikkelde en slordig. Met ander woorde, wanneer die API bevraagteken die databasis, dit is waarskynlik gaan om te word deur gebruik te maak van SQL tafels en al daardie soort van dinge, en ons het 'n bietjie daaroor geleer in CS50, maar die totale, jy het opgemerk dat dit is 'n bietjie van 'n pyn. Dit raak baie, baie ingewikkeld en slordig, veral wanneer jy ' komplekse navrae en daardie soort van ding. Wat ons regtig wil hê, is 'n soort van nuttige en eenvoudige manier dat die data te kry, en dit is die idee agter die nommers 1 en 4 op die kaart. Met ander woorde, ons wil 'n baie eenvoudige manier om die API te vertel wat om te kry vir ons en 'n baie eenvoudige manier dat die data terug te kry. Daar is een manier dat data word gewoonlik gestuur en ontvang, wat JSON, of JavaScript Object Nota Tion. Dit kan 'n bietjie so ver as hoe jy stuur die versoek aan die API wissel. Met ander woorde, as jy wil 'n sekere bedrag van die data, hoe jy vertel die API te kry dat die data kan 'n bietjie wissel. Gewoonlik is dit behels die maak van 'n soort van die netwerk versoek. Met ander woorde, toegang tot 'n soort van URL wat gaan om die API te vertel presies wat jy wil, maar die data is byna altyd terug gestuur, in ander woorde, nommer 4 in into. Wat is into presies? Soos ek gesê het, JavaScript Object Notasie. Dit is basies die universele standaard vir die stuur en ontvang van data. Die idee is dat jy hierdie 3 kategorieë van dinge. Jy het 'n skikkings, hashmaps en primitiewes. Skikkings en hashmaps jy op 'n bietjie gekyk het in CS50, maar jy het soort van 'n baie streng sin van wat hulle is gekry. Met ander woorde, met skikkings jy weet dat hulle tik gebonde, sodat jy het net een soort van die tipe wat gaan deur die hele skikking. Into is 'n baie meer toegeeflik met daardie soort van ding. Basies die idee is jy hierdie voorwerp bou, wat saamgestel kan word van enige van hierdie 3 dinge en saamgestel kan word van verskeie kinders van hulle, en hulle kan geneste word. Hier is soort van 'n voorbeeld van into, wat is hierdie accolades hier jou hashmap, en 'n hashmap is basies 'n afbeelding van 'n soort van die belangrikste tot 'n soort van waarde. Wat jy hier sien dat ons die eienskappe sleutel, en dat kartering op 'n skikking, wat is hierdie hele ding. Ons sien 'n ander element van die hashmap, wat is hierdie sleutel isAwesome, wat kaarte 'n primitiewe waarde van die ware, met ander woorde, 'n boolean. Primitiewes kan snare. Hulle kan heelgetalle. Hulle kan bools, iets soos dat. En jy sien die inhoud van die skikking wat eienskappe punte 2 stringe in dit, self-soortgelyke en wonderlike. Dit is 2 eienskappe van into, en ons sien dat into is awesome. Om te kyk na wat 'n bietjie meer nou ek gaan om te bou 'n meer komplekse voorbeeld van into hier. Kom ons begin met 'n skikking, byvoorbeeld, net 'n leë verskeidenheid. Maar dit is soort van saai, so ons gaan dit 'n bietjie te vul, en soos ek gesê het, is skikkings in into tik gebonde, dus kan ons ook hier 'n string wat is hi, en dit is 'n ander element van daardie skikking. En so ook, kan ons hier 'n hashmapping voeg, wat gaan 'n paar afbeeldings te hê. Dit gaan 'n afbeelding van die naam aan die string Billy. Ons het 'n kartering van naam Billy, en ons het 'n kartering van gunsteling kleur na blou. Dit is basies 'n goeie voorbeeld van into. Dit raak soort van in-Oeps, moet daar 'n komma-al van die verskillende dele van dit. Weereens, dit is nie tik op alle gebind, sodat jy kan enige soort van tipes binnekant van enigiets wat jy wil, en die idee is dit is 'n self-soortgelyke. Met ander woorde, hierdie reg hier is 'n into voorwerp, soos hierdie hele ding, as net hierdie, sodat jy kan 'n primitiewe wees 'n voorwerp, 'n skikking te wees 'n voorwerp of 'n hashmap wees 'n voorwerp. As wat jy kan soort van sien, into is werklik, werklik nuttig in die sin dat dit is so veelsydig. Jy kan enige moontlike data wat jy kan gestoor swanger into. Dit maak dit 'n baie mooi taal te gebruik met API's want dit beteken pretty much maak nie saak wat data wat jy wil daar gaan een of ander manier om dit terug te kry in into. 'N paar eienskappe wat maak into veral goed is vir hierdie soort van ding. Soos jy kan sien, in vergelyking met 'n baie van die dinge wat jy het gewerk met in CS50 dit is relatief baie maklik om te lees en ook baie maklik om te skryf nie. Jy kan streepje dit uit as jy wil, soos ek besig was om in daardie voorbeeld, wat gee jou 'n mooi, mooi weergawe wat jy kan baie goed sien. Maar ook, dit is ook maklik om te lees en skryf vir 'n rekenaar. Met ander woorde, dit is maklik om te parse en maklik om te enkodeer, wat beteken dat dit is redelik vinnig so ver as die lees van die data betref, en into kan regtig vinnig gegenereer word. Dit is ook baie maklik om toegang te verkry tot verskillende dele van into en daardie soort van ding. Dit is mooi, en voorts, die feit dat dit is 'n self-soortgelyke, met ander woorde, die feit dat jy kan into binne into binne into is regtig nice vir die stoor van data. Nog 'n deel wat is oor die algemeen baie nuttig in die werk met API's is jQuery. Jy het 'n bietjie van JavaScript geleer het, wat is 'n mooi manier HTML en CSS binne 'n webwerf te manipuleer. Maar dit kan soort van 'n pyn te kode in plain JavaScript, hoofsaaklik omdat JavaScript is 'n werklik verbose taal. Jy het 'n baie om te leer van die sintaksis, en net baie eenvoudige dinge te doen dit neem 'n baie van die kode, sodat jQuery is 'n biblioteek vir JavaScript. Met ander woorde, dit is 'n JavaScript-lêer wat jy kan laai en dan jQuery funksies gebruik om sekere dinge te doen. En jQuery maak basies jou lewe 'n hele klomp makliker. Dit vergemaklik wat honderde van lyne in JavaScript sou neem af na 'n paar lyne in die jQuery. Dit is veral nuttig as jy die gebruik van API's, want die algemeen hoe jy sal toegang tot API's is deur die maak van AJAX versoeke, en ek glo dat Dawid in die lesing genoem dat AJAX versoeke is oor die algemeen wanneer jy 'n netwerk versoek tot 'n soort van die bediener en om 'n soort van data en die opdatering van 'n bladsy oombliklik. AANGESIEN dit in plain JavaScript wat jou sal mal nommers van lyne al die headers te valideer en doen al daardie soort van dinge, jQuery het 'n baie eenvoudige funksie genoem AJAX, en al wat jy hoef te doen in AJAX is die parameters wat jy wil om die API te gee, die plek van die API en enige bykomende soort van opsies wat jy wil konfigureer. Dit is regtig, regtig mooi en baie nuttig is vir hierdie soort van ding. Dit is al wat ons nodig het om te begin om ons hande vuil in API's. Ek gaan 'n paar voorbeelde te bring en hul verskillende eienskappe te verken en hoekom hulle is nuttig vir verskillende soorte van dinge. Die eerste ding wat ek sal eintlik wys jy is iets wat Ek werk op by my research lab, wat is 'n Ngram Viewer, en basies die idee van 'n Ngram Viewer kan jy soek na 'n soort van 'n woord of 'n frase en sien hoe dikwels dit met verloop van tyd in 'n sekere stel van die teks verskyn. Hierdie voorbeeld hier is hierdie datastel van babas wat tussen 1920 en 2000 in New York gebore. Ons kan soek, byvoorbeeld vir die naam Jennifer, en ons sien dat pre-1960's het dit regtig nie gebruik is nie al dat daar nog baie, en dan as ons dit in later jare meer en meer gebruik. Ons kan ook vergelykings, so as ons dit vergelyk met Jennifer, byvoorbeeld, Thomas, ons kan sien Thomas is redelik algemeen dwarsdeur die geskiedenis, terwyl Jennifer is 'n meer onlangse naam. Daardie soort van ding wat ons kan doen. Hoe werk hierdie aansoek werk? Basies, dit werk via 'n API. Met ander woorde, ons het sekere parameters hier. Ons het die parameters van wat ons eintlik op soek na, wat is hierdie name, en dan het ons 'n paar ander eienskappe, soos die Y-as en die X-as. Jy kan sien ons het 'n paar verskillende opsies vir sover die tyd resolusie om te gebruik en dat die soort van ding. Ons het hierdie opsies so ver as data wat ons eintlik wil hê uit die databasis, en ons wil hê dat die data terug te kry in 'n paar nuttige manier. Gewoonlik, as ons bevraagteken die databasis direk sou dit soort van 'n pyn om te doen vermoedelik omdat hierdie data oor baba name woon iewers in sommige databasis, en dit sou regtig ingewikkeld wees om dit met die hand te bevraagteken en presies besluit watter data om terug te keer. Met ander woorde, ons het net sorg oor Jennifer en Thomas in hierdie geval, en ons het net sorg oor 'n sekere as en al daardie soort van dinge. Hoe kry ons om hierdie? Om te grawe in hierdie API 'n bietjie meer Ek sal jou wys nog 'n voorbeeld van hierdie platform wat gebruik maak van 'n effens verskillende datastel. Hierdie datastel, in plaas van baba name, is eintlik net die hele druk publikasie databasis van Open Library, wat is 'n reuse-bron van tekste gepubliseer gedurende die laaste 100 jaar of so. Die idee is dat ons hierdie compository van miljoene en miljoene van die teks, wat ons kan nou soek vir verskillende woorde en frases. Hier is 'n voorbeeld wat wissel 'n bietjie anders as die vorige voorbeeld Ek julle getoon, wat ons het hierdie 3 navrae, oorlog, oorlog, en die Franse woord vir oorlog, wat guerre. En ons soek binne 3 verskillende afdelings van die totale databasis. Met ander woorde, in hierdie eerste navraag ons net soek in die VSA, in die tweede een net in die Verenigde Koninkryk, en die derde net van werke wat in Frankryk gepubliseer is. Ons sien 'n paar interessante patrone na vore kom. Byvoorbeeld, ons sien reg hier rond wat- Oeps, ek verknald die as 'n bietjie, maar jy kan sien hier reg in hierdie reeks rondom die Burgeroorlog is daar is 'n groot styging in die Amerikaanse uitgawe maar nie so 'n groot styging in die ander twee, en dit is natuurlik omdat die Amerikaanse Burgeroorlog het gebeur op daardie punt. Ons kan 'n paar cool stuff daar, maar wat ons regtig omgee hoe ons hierdie data. Ek neem jy agter die skerms in hierdie inligting in 'n bietjie. 'N netjiese truuk is as jy die werk met die terrein en soort van wil weet wat gaan aan agter die skerms, kan jy maak die ontwikkelaar gereedskap. Ek gaan om te word deur gebruik te maak van Chrome se ontwikkelaar gereedskap, en om aan diegene te kry jy beheer, verskuiwing, J, en dit neem jou na die JavaScript-console kan doen. Daar is 'n paar tabs hier. Hulle kan almal baie handig wees onder verskillende omstandighede, maar ek gee oor die netwerk tab op die oomblik, en ek eintlik te verfris om daardie werk te kry. O, jammer. Dit hou 'n random voorbeeld te gee. Okay, sal ons hierdie voorbeeld in plaas dan gebruik. Die idee is daar is hierdie API hier, en jy kan sien presies wat die API terugkeer. Dit is wat die aansoek is om terug van die API daardie versoek gestuur. Laat my zoom in 'n bietjie, en ons kan basies sien dit is net 'n reeks van die belangrikste waarde pare in into. Met ander woorde, ons het hierdie hashmap hier wat kartering van waardes. Met ander woorde, is dit die kartering van jaar tot waardes. In 1765, enige woord wat ons aanvanklik gesoek vir gebruik word 90 keer uit van 1 miljoen, sodat ons kry hierdie resultaat. Dit is nie presies into want ons het hierdie klein resultaat header hier, maar kennis dat hierdie hele doel hier is net 'n groot groot into blob. Ons het 'n verskeidenheid wat hierdie hele element bevat, en jy kan sien dat die hele element daar eindig, en dan het ons nog 'n groot element wat gaan al die pad af tot die einde toe, en wat eindig hier. Ons het 'n baie groot verskeidenheid met 2 voorwerpe in, en elk van die voorwerpe is 'n hashmap. Jy kan sien in elk van dié hashmaps ons het 'n kartering van hierdie indeks waarde na 0 en hierdie waarde waarde aan 'n ander hashmap, wat weer die kartering van X-as waardes Y-as waardes. Jy kan sien into kry 'n bietjie ingewikkeld, maar die totale, dit is eintlik baie nuttig, en dit is baie maklik om toegang te verkry tot in vergelyking met ander vorme van notasie. So ver as wat ons eintlik die stuur van data na die API te kry, Ek gaan om te gaan 'n bietjie hier in die agterkant. Dit is die groot JavaScript-lêer wat die hantering van al die interaksies van die web app, en so het ons gee nie om nie oor die meeste van hierdie, maar ons doen sorg oor 'n paar van dit. Byvoorbeeld, ons sorg oor hierdie buildQuery funksie, en die idee van hierdie funksie is basies dit is op soek om die bladsy, uitzoeken wat die gebruiker wil om navraag te doen, met ander woorde, die nagaan van die bokse waar het hulle insette hul soekterme, die beheer van die verskillende Y en X-as waardes wat hulle gekies het en al daardie soort van ding, en dit gaan te spoeg uit hierdie navraag waarde, wat kan ek dan stuur na die API. Dit lyk ingewikkeld, en dit is redelik ingewikkeld maar wat ek gaan om te doen in die feit, ek reeds om dit te doen, wat is 'n groot- is dat ek gaan die konsole te kry om presies uit te druk dat query waarde dat dit afstuur na die API. Dit is eintlik net hier. Jammer, dit uitgange 'n baie van die dinge. Maar dit is wat ons omgee, hierdie voorwerp reg hier. Dit is die soektog voorwerp. Met ander woorde, dit is presies wat die web-program stuur die API, en so laat ons sien die binnekant van 'n bietjie, en ons sien ons het hier 'n paar waardes. Ons sien ons het hierdie telling tipe, wat gebeurtenisse per miljoen woorde, dit is presies wat ons gekies het in die Y-as hier. Dit is waar dit vandaan kom. Ons het 'n databasis waarde, wat beteken dat daar is 'n paar sekere databasis dat hierdie data die lewe in, en ons wil hê dat die data wat spesifiek toegang tot in teenstelling met die baba name data, byvoorbeeld. Dan het ons hierdie groepe waarde, wat sê dat ons wil om te soek deur die jaar, in teenstelling met enige ander X-as waarde. Dan het ons 'n metode, waarvan sommige APIs sal verskeie dinge doen. Met ander woorde, hierdie API kan ook terugkeer ander vorme van data, maar in hierdie geval, ons wil hê dat die kartering van X-as waardes Y-as waardes. Dit is wat dit sê om daar te doen, en ons het dit soek perke skikking, wat bevat 2 waardes. Die eerste een is wat ons hier sien, wat is al die waardes vervat in daardie eerste klein boks aan die bokant. Met ander woorde, ons wil om te kyk vir die woord stryd, en ons wil om dit te filter Engelse tekste in die Amerikaanse letterkunde. Ons het hierdie land, wat is die VSA. Ons het 'n taal, wat is Engels, so ons het al hierdie verskillende dele wat almal vertel van die API presies wat ons wil hê. Ons weet nie wat die data wat ons terug te kry nie, maar ons weet dat die data is gaan 'n sekere vorm te neem. Hierdie voorbeeld is 'n soort van op die ingewikkelde kant, en jy sal nie noodwendig gebruik word om 'n API om die kompleks, maar dit is om te wys dat jy die omvang en krag wat API's kan doen. Met ander woorde, met behulp van 'n relatief eenvoudige navraag het ons basies 'n inset boks met 'n paar ander keurders op verskillende plekke. Laat my terug uitzoomen hier. Ons het 'n invoer boks met 'n paar verskillende metadata-keuses, en ons het 'n Y-as en die X-as keuses. Ons het nie eintlik dat baie velde, en ons kan baie maklik sien ons is in staat om 'n soort van API om navraag te doen en data terug te kry en dan sit dit in hierdie grafiek, wat dan gaan dit in 'n nuttige manier om te wys. Om te kyk na nog 'n voorbeeld wat dalk 'n bietjie meer bekend is vir julle ouens ons gaan om te draai op Facebook. Facebook se API is die Facebook Grafiek genoem, en basies wat dit beteken, is Facebook sien homself as hierdie massiewe databasis baie van die verskillende dele wat almal sekere verhoudings tot mekaar. Met ander woorde, ek is 'n gebruiker op Facebook, so ek het 'n profiel, en ek het ook sekere vriende, en elkeen van hulle het 'n profiel, en elkeen van my vriende het 'n muur, wat het verskillende kommentaar op dit, en elk van die kommentaar het voorkeure en al daardie soort van ding. Daar is baie van die verskillende dele op Facebook. Dit is 'n uiters komplekse API, en daar is ton wat jy kan doen met dit, maar dit is eintlik redelik maklik om te gebruik. Ek gaan om te begin deur te gaan na graph.facebook.com / billyjanitsch, wat my unieke rekening naam en jou rekening naam sal wees 'n soort van 'n woord as jy gekies het, of is dit dalk net 'n string van getalle. Wat kry ons terug is redelik basiese inligting. Ons sien dat ek 'n eerste naam, wat is Billy, 'n laaste naam, wat is Janitsch. Daar is 'n unieke Facebook ID wat ek het. Jy kan sien dat ek manlike en dat ek my taal instelling Britse Engels. Met ander woorde, ons sien baie basiese inligting hier. Dit is nie te veel nie, maar dit gee ons 'n idee van wat daar is. Ons kan dieselfde ding doen by David Malan, byvoorbeeld. Ek dink sy naam is dmalan. Ons sien David Malan het 'n unieke ID. Hy het 'n naam, eerste naam, middel naam, laaste naam. Ons sien ook dat hy is manlik en het sy taal stel na Engels (VS). Met ander woorde, sien ons redelik basiese inligting hier. Nou, wat gebeur as ons probeer om te kyk na iets anders? Kom ons sê ek is geïnteresseerd in wat Dawid Malan het graag op Facebook. Ek kan doen / likes. Nou het ons hardloop in 'n probleem. Ons het 'n soort van fout wat sê 'n toegang-teken is nodig om die bron aan te vra. Maar as jy dink oor dit, wat maak werklik sin nie, want dit sou wees weird as jy kan toegang tot elke enkele deel van Facebook se databasis net van 'n soort van 'n eenvoudige API, reg? Met ander woorde, vermoedelik jou inligting kan nie verkry word deur enigiemand wat dit wil hê. Hierdie fout is presies wat dit beteken. Sommige API vereis sekere regte ten einde hul data om toegang te verkry tot. En selfs meer gevorderde API's, soos die Facebook-een, sal vereis dat sekere regte om sekere dinge te doen. Ek kan sien hierdie basiese inligting oor David Malan. Ek kan sien dat hy is manlik en dat hy in die VSA woon, maar ek kan regtig nie sien nie enigiets verlede wat. Te kry om dit vir nou, Facebook het hierdie mooi instrument wat is die grafiek API ontdekkingsreisiger, en die idee van wat jy kan sorteer make-up toestemmings vir jouself wat gebaseer is op jou eie rekening en dan sien dinge wat spesifiek jou rekening kan sien. Byvoorbeeld, as ek doen graph.facebook.com/billyjanitsch/likes- Oeps, ek dink ek het my teken hier revalidate. Okay. As ek dit doen weer, groot, nou kan ek sien dat ek hierdie item terug kry wat sê dat ek hou van pool noodles, wat in die kategorie Games en speelgoed. Ek hou van 'n walrus, wat is in die kategorie Animal. Dit is my werklike Facebook-likes. Hulle is soort van verleentheid. Maar ons kan sien hierdie data is almal terug in into. Dit is redelik leesbare. Met ander woorde, ons het hierdie kartering van data na 'n soort van 'n skikking, en elke element van die skikking is 'n hashmap watter kaarte die naam van 'n dergelike en die kategorie van 'n dergelike. Elke soos 'n unieke ID. Daar is alle soorte van verskillende dinge van die data wat ons kan kry, en as jy belangstel in die gebruik van die Facebook-API vir 'n CS50 finale projek of vir iets soos dat dit eintlik redelik uitvoerbaar. Is basies hoe jy rondom die verifikasie ding Facebook maak gebruik van 'n stelsel genoem OAuth, of Open verifikasie, en ek wil nie te kry in dit nou omdat OAuth of die verskillende tipe van verifikasie is geneig om 'n baie te wissel tussen verskillende API's, sodat ek kon spandeer 'n lang tyd gaan oor elkeen, maar hulle is eintlik redelik selfverduidelikend. As jy Google Facebook API dit is baie leesbaar. Daar is 'n hele spec. Byvoorbeeld, hierdie is die dokumentasie vir die Facebook API, en jy kan sien ek is op die gebruiker bladsy, sodat ek kan leer oor die verskillende soorte van dinge wat beskikbaar is sover inligting te kry en ook die verskillende regte wat ek nodig het om dit te bekom. Soos ons gesien het, het ons nie nodig toestemmings om toegang te verkry tot die naam of die geslag, maar as dit nie ons hoef toestemmings vir die meeste dinge. Hierdie bladsy, of liewer, hierdie webwerf sal ook vertel hoe om te kry 'n teken om in staat wees om jouself te kontroleer. Die meeste verifikasie stelsels gebruik 'n soort van verborge waar kry jy hierdie unieke waarde, wat is 'n baie lang en random string, en dat die manier waarop hulle kan assosieer die versoek dat jy maak met jou. Met ander woorde, hulle weet dat jy nie enigiets te doen wat agterdogtig met hul data. Hulle weet presies wat jy kry. Hulle weet ook dat jy toestemming het om hierdie inligting te besigtig. As jy 'n Facebook-app en jou app het sekere gebruikers, en die gebruikers het toegelaat dat die app om toegang te verkry tot sekere dele van hul profiel, dan watter API-sleutel of teken dat app is met behulp van sal in staat wees om toegang te verkry tot die data vir die gebruikers. Dit klink ingewikkeld, maar dit is nie te sleg nie, en as jy wil Facebook te gebruik, sou ek sterk aanbeveel dat u speel rond met hul API. Dit is baie cool, en jy kan 'n baie verskillende dinge te doen met dit. As die gebruiker verleen jy hierdie toestemmings jy kan selfs terug te gaan na die API en sê ek wil om werklik te pos na hierdie gebruiker se muur, of ek wil hê hulle 'n foto plaas, en dit is hoekom jy soms op jou news feed daardie irriterende dinge sê jou vriend het hierdie video gekyk op 'n soort van vreemde site of iets soos dit. Dit is omdat daardie app verleen is om toegang te plaas op daardie persoon se muur. Die idee algehele pretty die Facebook-API ingewikkeld, maar ook baie nuttig. Beslis die moeite werd uitcheck as jy nog steeds op soek vir 'n finale projek. Nog 'n suite van API's wat ek gaan om te gaan oor CS50 API's. Laat my zoom hier. CS50 het eintlik 'n hele reeks van API's wat jy kan gebruik vir 'n finale projek of net vir enigiets wat jy maak. En hulle is meestal Harvard verwante, en hulle wissel van die Huds-menu, byvoorbeeld aan die Harvard Events API wat sal toelaat dat jy toegang tot 'n lys van verskillende gebeurtenisse wat gaan aan by Harvard en daardie soort van ding. En so kan ons op enige een van hierdie en kry 'n spec vir dit, wat jy in staat wees om te vind vir enige API, en die idee is om dit kan jy weet, 'n, spesifiek wat van die API te vra en hoe om dit aan te vra. Met ander woorde, as ek wil hê dat alle gebeure wat gebeur môre dan het ek het natuurlik gee dit 'n datum wat ek wil in 'n sekere formaat, en B, sal dit my vertel presies wat dit gaan om terug te gee aan my. Dit sal sê: Ek gaan om terug te keer jy hierdie into voorwerp, of soos jy kan sien, is daar verskillende formate. Jy kan ook die standaard van die data as 'n CSV, byvoorbeeld. Maar jy weet presies hoe dat die data is gaan om te kyk wanneer jy dit terug te kry sodat jy kan verwag om sekere dinge te doen met dit. Ons kan scroll down en kyk, byvoorbeeld, as ons wil hê die API om navraag te doen 'n kalender te kry, dan kan ons gebruik maak van hierdie spesifieke URL en gee dit sekere parameters wat gaan die data wat ons wil presies te wees. En so ook, as ons wil hê dat die data terug in 'n sekere formaat, dan kan ons vra dit om die data in 'n CSV-uitvoer, en dit is net 'n ander parameter dat ons verby die API. Baie cool dinge om daar te doen. Ek sou beslis aanbeveel uitcheck die CS50 API's. Ek gaan om te kyk na hierdie Harvard Food API in die besonder vir 'n bietjie. Een ding wat ek het eintlik ontwerp is hierdie Harvard Noms webwerf, wat gebruik maak van die CS50 Food API die Huds spyskaart vir die dag te haal. En vir die uitbreiding skool mense, Huds is die eetkamer diens aan die Harvard. Wat jy kry, is hierdie bladsy bevat al die etes vir die dag, so sien ons middagete. Ons het 'n paar verskillende kategorieë. Ons het die boontjie en die hele graan stasie. Ons het 'n die bruin rys stasie. Ons kan sien vir 'n brunch ons het hierdie paar voedsel-items. As ons kliek op hulle, dan kry ons die voedingswaarde-inligting. Jy sien dit is die voeding inligting vir pomelo's, in geval jy wonder. En dit weer doen, gaan ons eweknie in die agterkant hier 'n bietjie en sien wat presies dit doen om hierdie inligting te kry. En dit blyk nie eintlik baie kompleks wees op alle. Hierdie lêer lyk 'n bietjie slordig, maar hou in gedagte dat hierdie is die hantering van die hele webwerf, en as ek af scroll sien ons hierdie verandering data funksie. Nou, net om duidelik te wees is dit geskrywe, in CoffeeScript, wat is 'n taal wat jy waarskynlik nie gesien het nie voor. Maar dit is redelik leesbare, so ek sal loop deur dit asof dit pseudokode. Verandering datum is 'n funksie wat gaan in hierdie datum waarde, En dit is ook te neem in 'n eerste, wat ons nie omgee vir soveel. Maar die belangrike ding is dat dit hierdie datum nie. en daardie datum is die dag wat ons wil al die voedsel items aan te vra vir. En dan kan jy sien ons het hier 'n bietjie van die sintaksis, wat is basies die ontleding van daardie datum in 'n leesbare formaat. Met ander woorde, die API vereis die datum in 'n sekere formaat. Jy kan nie net sê 16 November 2012 AD. Dit sal nie weet wat om te doen met dit. Dit wil die datum in 'n spesifieke formaat. Al wat ons hier doen, gee dit presies wat formaat, wat is 'n jaar waarde en dan 'n koppelteken, 'n maand waarde, ander koppelteken en die datum waarde. En ons het ook sê dat ons wil hê dat die data uitset in into. Nou is ons die maak van hierdie AJAX versoek, en soos ek vroeër genoem, jQuery het hierdie super nuttige AJAX funksie wat al wat jy hoef te doen is om spesifiseer 'n paar parameters af hier, en sal dit gee jou terug presies wat jy wil. Ons is vertel dat die URL wat ons dit wil hê om te gaan na hierdie CS50 Food API, wat ons het van die spec. Ons sê dat ons wil hê dat die data in into en dat ons gaan om te gee dit die data wat ons het vasgestel hier. Dit is die dag wat ons wil hê dat die voedsel-items vir. En dan sal al wat ons hoef te doen, is 'n soort van sukses funksie te definieer, wat is basies wat gebeur wanneer die API terugkeer dat data. Met ander woorde, het ons verpak al van die parameters wat ons wil, wat in hierdie geval is die dag wat ons dit wil hê en die feit dat ons wil dit in into, en ons het dit af na die API, so moet julle nou die API sê, okay, Hier is jou data, ek het dit vir jou terug. Ons het die sukses funksie, wat beteken gegee dat die API suksesvol terug sommige data wat ons doen met dit? En dit blyk dat alles wat ons doen is bel hierdie update menu funksie met alles wat die API teruggekeer het, sodat ons kan soek vir daardie en sien dat alles wat ons doen, is met behulp van 'n klomp van die nuwe sintaks hier die HTML hierdie nuwe data te werk en in te voeg. Wat dit toelaat, is ons het hierdie pyle aan weerskante, en ons kan kliek, en nou is ons op soek na die data vir die volgende dag en weer vir die volgende dag, en elke keer as dit is die opdatering van daardie datum waarde en die raadpleging van die API, om terug sommige data en om dit in die webwerf. Weereens, kan jy sien, super, super nuttig. Hierdie app het my 'n paar uur om saam te hack, en ek het 'n bietjie meer ervaring, natuurlik, maar jou CS50 finale projek kan lyk baie soos hierdie. APIs is super sterk vir die hoeveelheid moeite wat hulle neem. Die laaste ding wat ek gaan om te gaan oor 'n paar meer API's in die algemeen. Ek sal nie so ver te kry so ver as wat hulle doen nie spesifiek in hulle, maar ek sal gee jou 'n idee van wat daar buite is. 2 werklik nuttig, as jy belangstel in die data-analise of visualisering of iets soos dit, is Freebase en Wikipedia. Wikipedia-vermoedelik julle almal weet is 'n gratis aanlyn ensiklopedie, en dit het eintlik 'n API, so as jy wil, byvoorbeeld, kry jy al van die tekste en die artikels vir die seekat kan jy baie maklik doen. Net sê hey, Wikipedia API, wil ek graag die data teruggekeer soos hierdie, en ek wil dit in hierdie formaat, en die artikel wat ek wil is seekat, en baie vinnig sal gee jou terug dat die inligting. Dit kan baie nuttig as jy wil 'n soort van die werf te maak dit is 'n beter kyker vir Wikipedia of iets soos dit. Freebase is 'n soort van 'n soortgelyke, maar dit is 'n bietjie moeiliker as ver as API. Freebase is dat dit 'n aanlyn ensiklopedie soos Wikipedia wat baie en baie van die verskillende inligting oor alle vorme van verskillende onderwerpe bevat, maar dit is gestoor in 'n relasionele databasis, wat is effens anders as Wikipedia. Wikipedia het sy artikels en artikels met skakels na ander artikels, maar vir die grootste deel, as jy wil die data vir die seekat, gaan jy na die seekat artikel, dat die data, en jy het 'n klomp van die teks oor seekatte, so dit is groot. Freebase werk in 'n effens meer ingewikkeld wyse alles wat verwant is aan mekaar. Met ander woorde, as ons op soek na seekat dan is dit het 'n klomp van die kategorieë wat verband hou met dit. Byvoorbeeld, dit is 'n dier, is dit leef onderwater, dit het 'n sekere liggaamstemperatuur. Ek weet nie. En al hierdie kategorieë is skakels na ander plekke waar jy kan gaan dinge om te sien met dieselfde kategorie. Met ander woorde, sou die seekat datastel bevat 'n skakel na die data wat vir alle diere, en dit sou laat my rond te beweeg in die databasis regtig vinnig. Dit kan baie nuttig wees as jy iets doen soos vergelykings. Met ander woorde, 'n sekere ding, wat jy wil sien wat anders dit verwant aan en sien hoe anders dit is nie verwant aan. Daardie soort van ding. Dit kan nuttig wees in 'n aantal maniere. As jy op soek is na vir meer van 'n uitdaging, en in staat wees om meer komplekse dinge om te doen Ek sal dit oorweeg om 'n blik op die Freebase API. Maar grootliks, Wikipedia is 'n baie eenvoudige plek om te gaan so ver as om inligting. Nog 'n plek wat ek sal kyk na Last.fm, en ek is eintlik gaan om te gaan na die webwerf in die geval van sommige mense is nie vertroud is nie, maar Last.fm is basies 'n musiek- smaak en aanbevelings webwerf. Jy kan 'n rekening. Jy kan oplaai musiek van jou musiek speler begin op die webwerf, en basies dit sal begin om jou musiek aanbevelings wat gebaseer is op wat jy luister na. Byvoorbeeld, as jy gaan na jou profiel bladsy - dit is myne- jy kan sien jy 'n lys van onlangs geluister na snitte. Jy kan sien algehele gunsteling kunstenaars, al daardie soort van ding, en weer, daar is 'n groot API agter Last.fm,  en jy kan dit gebruik baie en baie van die regtig cool dinge om te doen. Byvoorbeeld, sal ek gaan na 'n vriend se bladsy wat hierdie Last.fm Tools webwerf. Dit is eintlik 'n ander platform wat op die Last.fm API gebou, en dit het 'n aantal van die mooi interessante dinge. As ek log in met my gebruikersnaam, byvoorbeeld, Ek kan vra om dit 'n tag wolk te genereer, byvoorbeeld, en wat dit gaan doen is gee my terug 'n beeld van al die verskillende genres en dat die soort van ding wat ek wil om te luister na. Hoe is dit om dit te doen? Dit is baie basies sê die Last.fm API hier is hierdie gebruiker. Ek wil graag die genre van elke lied te weet dat hulle ooit geluister na, en jy kan dit doen deur die maak van 'n redelik eenvoudige AJAX oproep aan die Last.fm API. Jy sal 'n groot lys terug te kry, en dan natuurlik 'n paar ander dinge word gedoen dit te omskep in 'n woord wolk, maar jy kan sien algehele dit is baie maklik om toegang te verkry, en baie maklik om te gebruik. Really nice vir 'n aantal van die dinge. Ek dink dit is omtrent al wat ek sal algehele sê. Een laaste ding wat ek sal noem oor API's in die algemeen is dat jy soms loop in iets genaamd koers te beperk, en die idee van die koers beperking is dat jy nie wil API's te misbruik. Met ander woorde, dit is regtig mooi dat 'n baie van hierdie webtuistes API's wat jy kan gaan tot en gebruik vir gratis. Maar, as jy die maak van miljoene of biljoene van versoeke per dag, Byvoorbeeld, as jy vas in 'n oneindige lus wat oneindig bevraagteken 'n soort van API en kry 'n groot bedrag van die data terug, natuurlik dit is nie goed, so wat 'n baie van die API's doen, is hierdie koers beperking funksie wat sê jy kan net 1000 versoeke per dag per IP-adres of iets soos dit. En as jy 'n baie van die toets en daardie soort van ding te doen, jy sal soms loop in, en dit sal heeltemal onverwags sluit jy af en sê nee, ek is nie gee jy enige meer inligting. Wat jy wil doen, is om volgens die reëls speel. Jy wil om seker te maak dat jy die API spec versigtig. As dit het sekere reëls geheg aan dit, soos jy kan slegs X navrae per dag of jy kan net toegang tot 'n deel van die databasis 'n sekere aantal kere of iets soos wat jy wil om seker te maak jy vashou aan dit. Solank as wat jy binne daardie reëls speel sal jy waarskynlik 'n baie lekker tyd deur gebruik te maak van die API's. Jou algehele afhaal is API's is werklik, werklik nuttig. Daar is 'n API vir bykans enige groot web diens daar buite. Pretty much enige deel van die Google Tools Suite, Google Maps, Google Earth, Gmail, almanak, al hierdie dinge het APIs. Jy kan dit gebruik vir beide get data van die bediener en stuur van data na die bediener. Met ander woorde, as jy wou 'n kalender app te maak wat kan werk iemand se almanak, daar is 'n API vir dat. As jy wil iets wat gaan om jou te vertel waar te maak die plek van 'n sekere adres is dat jy die Google Maps API kan gebruik vir. API's is fantasties nuttig, en hulle is oral. As jy belangstel in 'n soort van die idee, daar is waarskynlik 'n verwante API wat jy kan gebruik om 'n baie van die data te kry baie vinnig en baie eenvoudig. As jy nog steeds op soek vir 'n projek of as jy net wil om te speel met iets in die algemeen, API's is beslis moeite werd is om te doen. Dankie, en ek is gelukkig om enige vrae te beantwoord wat julle kan. Goed, baie baie dankie. [CS50.TV]