[Powered by Google Translate] [Seminar] [programer je Uvod u API] [Billy Janitsch] [Sveučilište Harvard] [Tommy MacWilliam] [Ovo je CS50.] [CS50.TV] Bok, svima, ja sam Billy, a danas ću da se govori o API-ja, ili sučelja za programiranje aplikacija, posebno u kontekstu CS50 konačnih projekata i takve stvari. U principu ono što je API? U vrlo širem smislu, to je svojevrsni srednji čovjek koji omogućava dva komada softvera da komuniciraju jedni s drugima. To je vrsta vrlo široku definiciju i da nije relevantno za ono što gledamo. Ono što stvarno želite je neka vrsta korisnog srednjeg terenu komunicirati s nekom vrstom baze podataka negdje. Evo tablice, a zapravo ideja je da mi smo aplikacija, a želimo dobiti podatke iz baze podataka, ali ne želimo da upita baze podataka izravno. Umjesto toga želimo ići kroz ove vrste srednji čovjek, API. Ideja da je broj 2 i 3 na grafikonu oboje će biti vrlo kompliciran i neuredan. Drugim riječima, kad se API upite baze podataka, to je vjerojatno idući u biti koristeći SQL tablice i sve takve vrste stvari, i naučili smo nešto o tome u CS50, ali sveukupno, ste primjetili da je malo boli. Ona dobiva vrlo, vrlo kompliciran i neuredan, pogotovo kada ste izradu složene upite i takve stvari. Ono što stvarno želite je neka vrsta korisnog i jednostavan način dobiti te podatke, a to je ideja iza brojeva 1 i 4 na karti. Drugim riječima, želimo stvarno jednostavan način za reći API što bi za nas i stvarno jednostavan način da biste dobili te podatke natrag. Postoji jedan glavni način na koji se podaci obično se šalju i primaju, što je JSON, ili JavaScript Objekt notacija. To može varirati malo koliko kako poslati zahtjev za API. Drugim riječima, ako želite neku određenu količinu podataka, kako reći API kako bi dobili da podaci mogu varirati malo. Obično to uključuje izradu nekakvu mreže zahtjev. Drugim riječima, pristup nekakvu URL koji će reći API točno ono što želite, ali podaci se gotovo uvijek poslao natrag, Drugim riječima, broj 4 u JSON. Što je JSON točno? Kao što sam rekao, JavaScript Object notaciji. To je u osnovi univerzalni standard za prijenos i primanje podataka. Ideja je da imate ove tri kategorije stvari. Imate polja, hashmaps i primitivaca. Nizovi i hashmaps ste gledali na malo u CS50, ali ste vrsta dobivši vrlo strogi osjećaj za ono što su oni. Drugim riječima, s polja znaš da oni upišite vezan, tako da imate samo jedan kakve vrste koja ide kroz cijeli niz. JSON je puno blaži s tim stvarima. Uglavnom ideja je da izgradnja ovog objekta, koji može biti sastavljen od bilo koje od tih 3 stvari i može biti sastavljena od više one od njih, i oni mogu biti ugniježđene. Ovdje je vrsta primjer JSON, koji je ove vitičastim zagradama ovdje predstavljaju svoju hashmap, i hashmap je u osnovi mapiranje iz neke vrste ključem na nekakvoj vrijednosti. Vidjet ćete da se ovdje imamo nekretnine tipku, i da je mapiranje na polju, što je sve ovo. Vidimo još jedan element hashmap, što je to ključ isAwesome, koji mapira primitivnog vrijednosti istina, drugim riječima, boolean. Primitivi mogu biti nizovi. Oni mogu biti cijeli. Oni mogu biti bools, bilo što slično. A vidite sadržaj ovog niza koji ukazuje na svojstva ima dvije žice u njemu, self-slična i prekrasna. Oni su dva svojstva JSON, a vidimo da JSON je strašan. Da pogledate da malo pobliže ću izgraditi složeniji primjer JSON ovdje. Počnimo s nizom, na primjer, samo prazan niz. No, to je vrsta dosadno, tako da ćemo ga napuniti malo, i kao što sam rekao, nizovi u JSON su upišite vezan, tako da smo mogli imati niz ovdje, što je hi, i to je još jedan element tog niza. A isto tako, mogli bismo dodati hashmapping ovdje, koji će imati nekoliko mapiranja. To će imati mapiranje iz imenom na niz Billy. Imamo mapiranje iz imenom na Billyja, a imamo i kartiranje omiljena boja plava. To je u osnovi dobar primjer JSON. To je vrsta dobiva u-ups, potrebno zarez tamo-sve različitih dijelova njega. Opet, to nije tip dužan na sve, tako da možete imati bilo kakve vrste unutar sve što želite, a ideja je da je samo-sličan. Drugim riječima, ovo ovdje je JSON objekt, kao što je ova cijela stvar, kao što je upravo to, tako da možete imati primitivna biti objekt, Niz biti objekt ili hashmap biti objekt. Kao što možete vidjeti vrsta, JSON je jako, jako koristan u smislu da je tako svestran. Možete imati sve moguće podatke koje možete zamisliti pohranjene u JSON. To ga čini jako lijepo jezik za korištenje s API-ja jer to prilično puno znači da bez obzira što podaci koje želite tamo će biti neki način da će ga vratiti u JSON. Prije nekoliko svojstava koje čine JSON posebno dobro za ovu vrstu stvar. Kao što možete vidjeti, u odnosu na puno stvari koje ste radili sa u CS50 to je relativno vrlo jednostavan za čitanje i vrlo lako napisati. Možete ga uvući se, ako želite, kao što sam radio u tom primjeru, koja vam daje lijep, lijep verziju koju možete vidjeti jako dobro. No, osim toga, to je također lako čitati i pisati za računalo. Drugim riječima, to je lako analizirati i jednostavan za kodiranje, što znači da je to prilično brzo koliko čitanja podataka je u pitanju, i JSON može biti generiran jako brzo. To je također vrlo lako pristupiti na različite dijelove JSON i takve stvari. To je lijepo, a osim toga, činjenica da je samo-sličan, Drugim riječima, činjenica da možete imati JSON unutar JSON unutar JSON je stvarno lijepo za pohranu podataka. Drugi dio koji je općenito jako korisno u radu s API-ja je jQuery. Vi ste naučili malo JavaScripta, što je lijep način manipulirati HTML i CSS unutar web stranice. Ali to može biti vrsta boli kod u običnom JavaScriptu uglavnom zato JavaScript je stvarno preopširan jezik. Morate naučiti puno sintakse, i samo to učiniti vrlo jednostavne stvari to traje puno koda, tako jQuery je knjižnica za JavaScript. Drugim riječima, to je JavaScript datoteka koje možete učitati , a zatim koristiti jQuery funkcije učiniti određene stvari. I jQuery osnovi čini vaš život puno lakši. To pojednostavljuje ono što će se stotine linija u JavaScriptu na samo nekoliko redaka u jQuery. To je posebno korisno ako koristite API-ja, jer općenito kako ćete se pristup API-je za izradu AJAX zahtjeva, i vjerujem da David nije spomenuo u predavanju koje AJAX zahtjeva općenito kada ste stvaranje mreže zahtjev za nekom vrstom poslužitelja i dobivanje natrag nekakvu podataka i ažuriranje stranica trenutno. Dok je u običnom JavaScript da bi lude brojeve redaka potvrditi sve zaglavlja i učiniti sve te vrste stvari, jQuery ima stvarno jednostavan funkciju zove AJAX, i sve što morate učiniti je dati AJAX parametre koje želite dati API, lokacija API i dodatni vrsta mogućnosti koje želite konfigurirati. To je jako, jako lijepo i vrlo korisno za ovu vrstu stvar. To je sve što nam je potrebno za početak uzimajući naše ruke prljave in API. Idem dovesti do nekoliko primjera i istražiti njihove različite osobine i zašto su oni korisni za različite vrste stvari. Prva stvar koju sam zapravo ću vam pokazati nešto što sam radio na na mom istraživačkom laboratoriju, koji je Ngram Viewer, iu osnovi ideja o Ngram Viewer je možete tražiti neke vrste riječi ili fraza i vidjeti koliko često se to pojavio se u određenom setu teksta tijekom vremena. Ovaj primjer ovdje je to skup podataka o bebama koji su rođeni u New Yorku između 1920 i 2000. Možemo pretraživati, na primjer, za ime Jennifer, i vidimo da pre-1960 stvarno nije koristio sve što je mnogo, i onda kao što smo dobili u kasnijim godinama to postaje sve više koristi. Možemo također učiniti usporedbe, pa ako usporedimo Jennifer se, na primjer, Thomas, možemo vidjeti Toma je bio prilično rasprostranjen u cijeloj povijesti, dok Jennifer je novije ime. Mi možemo učiniti takvu stvar. Kako se ova aplikacija radi? Uglavnom, to radi preko API-ja. Drugim riječima, imamo određene parametre ovdje. Imamo parametre ono što mi zapravo u potrazi za, koji su ta imena, a onda ćemo imati i nekoliko drugih svojstava, kao osi Y i X osi. Možete vidjeti imamo nekoliko različitih opcija što se tiče Vrijeme rezolucija koristiti i takve stvari. Imamo ove opcije što se tiče onoga što podaci zapravo želimo iz baze podataka, i želimo dobiti te podatke vratiti na neki koristan način. Obično, ako smo upite baze podataka izravno će sortirati od biti bol učiniti jer vjerojatno ti podaci o baby imena živi u nekoj bazi negdje, i to bi stvarno biti komplicirano da ga upita ručno i odlučiti što točno podaci za povratak. Drugim riječima, samo mi je stalo Jennifer i Thomas u ovom slučaju, a mi samo stalo na određenoj osi i sve te vrste stvari. Kako ćemo dobiti oko ovoga? Da kopaju u ovom API malo više pokazat ću vam još jedan primjer ove platforme koji koristi malo drugačiji skup podataka. Ovaj skup podataka, umjesto da se beba imena, je zapravo samo cijeli ispisati publikaciju baze Open Library, što je div izvor tekstova objavljenih tijekom posljednjih sto godina ili tako. Ideja je da se ovaj compository u milijune i milijune teksta, što sada možemo tražiti različite riječi i fraze i. Evo primjera koji se razlikuje malo drugačije od prethodnog primjera Ja vam pokazao, što je imamo ove tri upita za pretraživanje, rat, rat, i francuska riječ za rat, koji je guerre. I mi smo u potrazi unutar tri različite dijelove ukupnog baze podataka. Drugim riječima, u ovom prvom upitu mi samo tražimo u SAD-u, u drugom samo u Velikoj Britaniji, a treći samo iz radova objavljenih u Francuskoj. Mi vidimo neke zanimljive uzorke isplivati. Na primjer, možemo vidjeti upravo ovdje koji- Ups, ja zabrljao osi malo, ali možete vidjeti upravo u tom rasponu ovdje oko građanskog rata tamo je veliki smeč u američkom izdanju ali ne kao veliki smeč u druge dvije, i to je očito, jer Američki građanski rat se događa u tom trenutku. Možemo vidjeti neke cool stvari tamo, ali ono što mi je stvarno stalo je kako smo dobili ove podatke. Ja ću vas odvesti iza kulisa u ovom app u malo. Uredan trik je ako radite sa stranice i vrsti žele znati ono što se događa iza kulisa, možete otvoriti alate developer. Ja ću biti koristeći Chrome razvojne alate, i da se onima možete učiniti kontrolu, pomak, J, i koji vas vodi na JavaScript konzole. Postoji nekoliko kartica ovdje. Oni svi mogu biti prilično korisno pod različitim okolnostima, ali mi je stalo mreži Kartica upravo sada, a ja zapravo morati osvježiti kako bi dobili da rade. Oh, žao mi je. To voli dati slučajni primjer. Ok, mi ćemo koristiti ovaj primjer, umjesto tada. Ideja je da je ovo API ovdje, i možete vidjeti točno ono što API se vraća. To je ono što je zahtjev vratimo iz API što je poslao taj zahtjev. Dopustite mi povećali malo, a mi u osnovi može vidjeti da je to samo niz ključnih vrijednosti parova u JSON. Drugim riječima, mi imamo tu hashmap ovdje da je mapiranje vrijednosti. Drugim riječima, to je mapiranje godina vrijednostima. U 1765 god riječ mi u početku tražili koristi 90 puta od milijun, tako da smo dobivanje natrag ovaj rezultat. To nije točno JSON jer imamo ovaj mali rezultat zaglavlje ovdje, ali obavijest da je cijeli ovaj predmet ovdje je samo veliki veliki JSON blob. Imamo niz ovdje koji sadrži cijeli ovaj element, i možete vidjeti da je cijeli element koji završava tamo, i onda imamo još jedan veliki elementa da ide sve na putu prema dolje do kraja, i da se ovdje završava. Imamo jako veliki niz s dva predmeta u njoj, i svaki od tih predmeta je hashmap. Možete vidjeti u svakom od tih hashmaps imamo preslikavanje ove vrijednosti indeksa na 0, a ta vrijednost je vrijednost na drugu hashmap, koji je ponovno mapiranje vrijednosti os X na Y osi vrijednosti. Možete vidjeti JSON dobiva malo komplicirano, ali sveukupno, to je zapravo vrlo korisno, a to je vrlo lako za pristup u odnosu na drugi različiti oblici zapisa. Što se tiče onoga što mi zapravo šalju podatke API dobiti, Ja idem u leđa kraj malo ovdje. Ovo je velika JavaScript datoteku koja je rukovanje svim interakcijama web app, i tako mi nije stalo većinu toga, ali mi je stalo nešto od toga. Na primjer, mi brinemo o ovom buildQuery funkciji, i ideja ove funkcije je u osnovi to gleda po stranici, figuring out ono što korisnik želi upita, drugim riječima, provjeru tih polja gdje smo Ulaz svoje pojmove, provjeru različite Y i X osi vrijednosti da ste izabrali i sve takve stvari, i to će ispljunuti ovaj upit vrijednost, koji sam tada može poslati off API. Ovo izgleda komplicirano, a to je prilično komplicirano ali ono što ću učiniti, u stvari, ja sam već to, što je velik- je da ću dobiti konzolu ispisati točno da upita vrijednost da je slanje off API. To je zapravo ovdje. Nažalost, ona izlazi puno stvari. Ali to je ono što mi je stalo, ovaj objekt ovdje. Ovo je upit objekt. Drugim riječima, to je točno ono što je web aplikacija šalje na API, pa pogledajmo unutar malo, i vidimo imamo nekoliko vrijednosti ovdje. Mi vidimo imamo ovu računati tip, što je pojava na milijun riječima, što je upravo ono što smo izabrali u Y osi ovamo. To je mjesto gdje da dolazi iz. Imamo baze vrijednost, što znači da postoji neki određeni baze podataka da se ti podaci živi u, i želimo pristupiti te podatke posebno za razliku od imena za bebe podataka, na primjer. Onda imamo ovaj skupine vrijednost, koji je rekao da želimo tražiti po godini, za razliku od bilo koja druga os X vrijednost. Onda imamo metodu, koju neki API će učiniti više stvari. Drugim riječima, ovo API također može vratiti i druge vrste podataka, ali u ovom slučaju, želimo da kartiranje X osi vrijednosti na y osi vrijednosti. To je ono što da se to govori da to postoji, i mi imamo tu niz pretragu granica, koja sadrži dvije vrijednosti. Prvi je ono što smo vidjeli ovdje, koji je sve vrijednosti sadržana unutar tog prvog malo okvir na vrhu. Drugim riječima, želimo tražiti riječi bitke, a mi želimo da ga filtrirati po engleskim tekstovima u američkoj književnosti. Imamo ovu zemlju, koji je SAD-u. Imamo jezik, što je engleski, pa mi imamo sve od tih različitih dijelova da svi govore API točno ono što želimo. Mi ne znamo što su podaci koje smo dobili natrag je još, ali znamo da podaci će se određeni oblik. Ovaj primjer je vrsta na komplicirane strani, i ne bi nužno koristiti API ovaj kompleks, ali to je da vam pokazati raspon i snagu što API može učiniti. Drugim riječima, koristeći relativno jednostavan upita sustav smo u osnovi imaju ulazni okvir s nekoliko drugih selektora u različitim mjestima. Dopustite mi povećali vratiti ovdje. Imamo ulaznog okvir s nekoliko različitih metapodataka odabira, i imamo Y os i os x odabira. Mi zapravo i ne moraju da se mnogo polja, i možemo vidjeti vrlo lako smo mogli upita nekakav API i dobiti podatke natrag, a zatim ga staviti u ovoj tablici, koji se potom će ga prikazati u koristan način. Da pogledate još jedan primjer koji bi mogli biti malo više upoznat s vama idemo okrenuti na Facebook. Facebook API zove Facebook Graf, i zapravo što to znači je Facebook sebe vidi kao ovaj masivni bazu podataka od puno različitih dijelova koji svi imaju određene odnose jedni prema drugima. Drugim riječima, ja sam korisnik na Facebooku, tako da imam profil, i ja također imaju određene prijatelje, a svaki od njih ima profil, i svaki od mojih prijatelja ima zid, koji ima različite komentare na njemu, a svaki od tih primjedbi ima voli i sve takve stvari. Postoji mnogo različitih dijelova na Facebooku. To je iznimno složen API, a tu je tona što možete učiniti s njom, ali to je zapravo prilično jednostavan za korištenje. Ja ću početi tako da odete na graph.facebook.com / billyjanitsch, koji je moj jedinstveni naziv računa i naziv računa ili će biti neka vrsta riječi ako ste ga izabrali, ili to može biti samo niz brojeva. Ono što smo dobili natrag je prilično osnovne informacije. Vidimo da imam ime, koje je Billy, prezime, što je Janitsch. Tu je jedinstveni ID koji Facebook imam. Možete vidjeti da sam muško i da imam postavku jezika britanski engleski. Drugim riječima, mi smo vidjeli vrlo osnovne informacije ovdje. To je ne previše, ali to ne daje nam predodžbu o tome što je tamo. Mi možemo učiniti istu stvar za Davida Malan, na primjer. Mislim njegovo ime je dmalan. Vidimo David Malan ima jedinstveni ID. On ima ime, prezime, srednje ime, prezime. Također smo vidjeli da je on muškarac i ima svoj jezik skup na američkom engleskom. Drugim riječima, mi smo vidjeli prilično osnovne informacije ovdje. Sada, što se događa ako ćemo pokušati provjeriti nešto drugo? Ajmo reći da sam zainteresiran za ono što je David Malan je volio na Facebooku. Ja mogu učiniti / voli. Sada smo izvoditi u problem. Imamo neku pogrešku koja kaže pristupni token potrebno je zatražiti taj izvor. No, ako mislite o tome, da zapravo ima smisla, jer bi to bilo čudno ako bi mogli pristupiti svaki pojedini dio Facebookov baze podataka Upravo iz neke vrste jednostavnog API, zar ne? Drugim riječima, vjerojatno vaši podaci se ne može pristupiti svatko tko ga želi. Ova se pogreška je upravo ono što to znači. Neki API zahtijevaju određene dozvole kako bi pristupili svoje podatke. A čak i više naprednih API-ja, kao jedan Facebooku, zahtijevat će određene dozvole učiniti određene stvari. Ja mogu vidjeti ovaj osnovne informacije o Davida Malan. Vidim da je on muškarac i da on živi u SAD-u, ali ja stvarno ne mogu vidjeti ništa prošlosti da. Da biste dobili okolo ovaj, za sada, Facebook ima ovu lijepu alat koji je graf API istraživač, a ideja da je možete sortirati od make up dozvole za sebe na temelju vlastitog računa i onda vidjeti stvari koje posebno računa možete pogledati. Na primjer, ako mi je činiti graph.facebook.com/billyjanitsch/likes- ups, valjda sam ponovno provjeriti moju token ovdje. Ok. Ako sam to učiniti opet, super, sad vidim da se ovaj objekt natrag koji kaže da mi se sviđa bazen rezanci, koji su u kategoriji Igre i igračke. Volim morževe, koji su u kategoriji životinja. To su moja stvarna Facebook sviđa. Oni su vrsta neugodno. No, možemo vidjeti taj podatak se sve vraća u JSON. To je prilično čitljiv. Drugim riječima, mi imamo tu mapiranje podataka na nekakvoj niz, i svaki element ovog niza je hashmap koja mapira ime kao i kategorija kao što su. Svaki poput ima jedinstveni ID. Tu su sve vrste različitih stvari podataka koje možemo dobiti, a ako ste zainteresirani za korištenje Facebook API za CS50 konačni projekt ili za nešto kao da je to zapravo sasvim izvodljiv. Uglavnom kako ste dobili oko autentičnosti stvar je Facebook koristi sustav koji se zove OAuth, ili otvoriti autentifikaciju, i ne želim da se u njoj sada, jer OAuth ili druga vrsta autentikacije sklon varirati puno između različitih API-ja, tako da sam mogao provesti dugo vremena ide preko svake jedne, ali oni su zapravo prilično samorazumljivo. Ako Google Facebook API je vrlo čitljiva. Tu je cijeli spec.. Na primjer, ovo je dokumentacija za Facebook API, i možete vidjeti da sam na stranici User, tako da ja mogu naučiti sve o različitim vrstama stvari koji su dostupni da se što se tiče podataka i, također, različite dozvole koje trebam da bi im pristupili. Kao što smo vidjeli, ne trebamo dozvolu za pristup ime ili spol, ali izvan toga trebamo dozvole za većinu stvari. Ova stranica, ili bolje rečeno, ova web stranica također će vam reći kako doći Token biti u mogućnosti da se provjeri. Većina autentičnosti sustava koristiti neku vrstu tokena gdje ćete dobiti ovu jedinstvenu vrijednost, što je jako dugo i slučajni niz, i na taj način oni mogu povezati zahtjev da ste čineći s vama. Drugim riječima, oni znaju da ne radite ništa sumnjivo sa svojim podacima. Oni znaju točno što ste uzimajući. Oni također znaju da imate dozvolu za pregled tu informaciju. Ako ste napravili Facebook app i vaš app ima određene korisnike, i onim korisnicima omogućili da aplikaciji pristup određenim dijelovima svog profila, onda ono što API ključ ili tokena da je aplikacija pomoću će moći pristupiti podacima za one korisnike. To možda zvuči komplicirano, ali to nije previše loše, i ako želite koristiti Facebook ja bih visoko preporučiti da razmislite igranje okolo sa svojim API. To je vrlo cool, a vi možete učiniti mnogo različitih stvari s njim. Ako korisnik daje vam te dozvole čak možete vratiti na API i reći želim da se zapravo post na ovom korisničkom zidu, ili želim ih objaviti fotografiju, i to je razlog zašto na feed ponekad ćete dobiti one dosadne stvari Rečenica tvoj prijatelj je gledao ovaj video na nekakvoj čudan stranice ili nešto slično. To je zato da app je odobren pristup na post o toj osobi zidu. Ideja ukupnom poretku, Facebook API prilično je komplicirano, ali također jako korisno. Definitivno vrijedno checking out ako ste još uvijek u potrazi za konačni projekt. Drugi paket API da ću ići preko je CS50 API. Dopustite mi povećali ovdje. CS50 zapravo je staviti zajedno cijeli niz API-ja koje možete koristiti za konačni projekt ili samo za ono što ste odluka. I oni su uglavnom vezane Harvarda, i oni se razlikuju od HUDS izbornika, na primjer, na ovom Harvard Događanja API, koji će vam pristup popis različitih događaja koji se događa na Harvardu i takve stvari. I tako možemo kliknuti na bilo kojem od tih i dobiti spec. za njega, koje ćete moći pronaći za bilo API, a ideja je to vam omogućuje da znate,, posebno što se zatražiti od API i kako ga tražiti. Drugim riječima, ako želim sve događaje koji se događaju sutra onda moram očito da je to taj datum da želim u određenom formatu, i B, to će mi reći točno ono što se događa dati natrag na mene. To će reći da ću se vratiti vam ovaj JSON objekt, ili kao što možete vidjeti, postoje različiti oblici. Također možete vratiti podatke kao CSV, na primjer. Ali znate kako je točno da su podaci će izgledati kada ga vratiti tako da možete očekivati ​​da će učiniti određene stvari s njim. Možemo pomaknite se dolje i vidjeti, na primjer, ako želimo da upita API da biste dobili kalendar, onda možemo koristiti ovaj poseban URL i dati mu neke parametre koji su idući u biti podaci koje želimo točno. I tako, ako želimo podatke natrag u određenom formatu, onda možemo ga pitati za izlaz podataka u CSV, i to je samo još jedan parametar koji smo prolazi na API. Mnogo cool stvari koje treba učiniti tamo. Ja bi svakako preporučujemo checking out CS50 API. Idem pogledati ovaj API Harvard Prehrambeno posebno za malo. Jedna stvar sam zapravo osmišljen je ova web stranica Harvard Noms, koja koristi CS50 Hrana API za preuzimanje HUDS izbornik za taj dan. A za proširenje školskih ljudi, HUDS je blagovaonica usluga na Harvardu. Ono što dobivate je ovo stranica koja sadrži sve obroke za taj dan, pa ćemo vidjeti ručak. Imamo nekoliko različitih kategorija. Imamo grah i cijela zrna stanicu. Imamo smeđa riža stanicu. Možemo vidjeti za marendu smo ovih nekoliko prehrambenih artikala. Ako kliknete na njih, onda smo dobili informaciju prehrane. Vidite ovo je prehrana informacije za grejpa, u slučaju da se pitate. I tako opet, idemo na peer u leđa kraj ovdje malo i vidjeti što se točno to radi kako bi dobili ove podatke. A što se ispostavilo da nije zapravo biti vrlo složen na sve. Ova datoteka izgleda malo neuredan, ali imajte na umu da je to rukovanje cijelu web stranicu, i ako sam se pomaknite prema dolje vidimo tu funkciju podataka promjena. Sada, samo da bude jasno, to je zapisano u CoffeeScript, koji je jezik koji vjerojatno nisu vidjeli prije. No, to je prilično čitljiv, tako da ću proći kroz njega kao da je pseudocode. Promijeni datum je funkcija koja će se u ovom datumu vrijednosti, a također će se uzeti u prvi, koji mi nije stalo koliko. No, važna stvar je da je taj datum, i taj datum je dan koji želimo zatražiti sve prehrambene proizvode za. I onda vidite da imamo malo sintaksu ovdje, koja je u osnovi parsiranje taj datum u čitljivom obliku. Drugim riječima, API zahtijeva datum u određenom formatu. Ne možete samo reći 16. studenoga 2012 AD. To ne će znati što učiniti s tim. Ona želi datuma u određenom obliku. Svi mi radimo ovdje se to daje točno taj format, koja je godina vrijednost, a zatim crtica, mjesec vrijednost, druga crtica i datum vrijednost. I mi također kažu mi želimo da podaci budu izlaz u JSON. Sada činimo ovu AJAX zahtjev, a kao što sam spomenuo ranije, jQuery ima ovu super korisnu funkciju koja AJAX sve što trebate učiniti je odrediti nekoliko parametara ovdje dolje, i ona će vam vratiti upravo ono što želite. Mi smo ga reći da URL želimo da ide na ovo CS50 Hrana API koje smo dobili od spec.. Mi kažemo da želimo podatke u JSON i da idemo dati ove podatke koje smo definirane ovdje. Ovo je dan želimo namirnica za. I onda sve što morate učiniti je definirati nekakav uspjeh funkcije, koja je u osnovi ono što se događa kada API vraća te podatke. Drugim riječima, mi smo pakiran do svih parametara koje želimo, koja je u ovom slučaju je dan da ga želimo i činjenica da ga želimo u JSON, , a mi ga poslao na API-ja, tako da sada API govori, ok, Ovdje se vaši podaci, ja sam ga dobio natrag za vas. Imamo uspjeh funkciju, što znači s obzirom da je API uspješno vraća neke podatke, što ćemo učiniti s njim? I ispada da je sve što učiniti je nazvati ova funkcija ažuriranje izbornik s bilo API se vratio, tako da možemo tražiti da i vidjeti da je sve što radimo je korištenjem hrpa nove sintakse ovdje ažurirati HTML i umetnite ove nove podatke. Što to omogućuje je imamo ove strelice na obje strane, a možemo kliknuti, i sada gledamo podatke za sljedeći dan i opet za sljedeći dan, i svaki put kad se ažuriranje tu vrijednost datuma i upite API, dobivanje natrag neke podatke i stavljajući ga u mjestu. Opet, što možete vidjeti, super, super koristan. Ovaj app Trebalo mi je nekoliko sati da hack zajedno, i imam malo više iskustva, očito, ali vaš CS50 konačni projekt Možete pogledati nešto vrlo slično ovome. API su super moćan za iznos od napora da oni uzimaju. Posljednja stvar ću ići preko je malo više API šire. Neću se koliko u njima što se tiče onoga što im je činiti posebno, ali ja ću vam dati ideju o tome što je vani. 2 stvarno korisni one, ako ste zainteresirani u analizi podataka ili vizualizaciju ili bilo što slično, su Freebase i Wikipedia. Wikipedia-vjerojatno svi znate, je besplatna online enciklopedija, i to je zapravo API, pa ako želite, na primjer, dobiti sve tekstove i članke za hobotnicom možete vrlo lako učiniti. Dovoljno je reći hej, Wikipedia API, ja bih podatke vratio kao ovaj, i ja bih se sviđa u ovom formatu, a članak Htio bih je hobotnica, i vrlo brzo će vam vratiti tu informaciju. To može biti jako korisno ako želite napraviti nekakvu stranice da je bolje preglednik za Wikipediji ili nešto slično. Slobodna baza je vrsta slična, iako je to malo teže što se tiče API. Slobodna baza je poput Wikipedije u smislu da je online enciklopedija koji sadrži puno i puno različitih podataka o svim vrstama različitim temama, ali to je pohranjen u relacijsku bazu podataka, što je malo drugačiji od Wikipedije. Wikipedija ima svoje članke i članke vezane za drugim člancima, ali za najveći dio, ako želite podatke za hobotnice, idete na hobotnice članka, dobiti te podatke, i imate gomilu teksta o hobotnicama, tako da je super. Freebase radi u malo više komplicirano način u to sve povezane jedna s drugom. Drugim riječima, ako smo u potrazi za hobotnicom onda ima hrpa kategorija povezane s njom. Na primjer, to je životinja, ona živi pod vodom, ona ima određenu tjelesnu temperaturu. Ne znam. I sve ove kategorije su linkovi na drugim mjestima gdje možete otići vidjeti stvari s tim istoj kategoriji. Drugim riječima, skup podataka hobotnica će sadržavati link na skup podataka za sve životinje, i da bi me pustiti kretati u bazi podataka jako brzo. To može biti vrlo korisno ako radite nešto poput usporedbe. Drugim riječima, s obzirom na određena stvar, želite vidjeti što drugo što je povezano i vidjeti što drugi to nije u rodu. To je vrsta stvar. To može biti korisno u brojne načine. Ako ste u potrazi za više od izazov i da bi mogli napraviti neke složenije stvari Ja bi uzeti u obzir uzimanje pogledati Freebase API. No, uglavnom, Wikipedija je vrlo jednostavna mjesto da ide što se tiče dobivanja informacija. Drugo mjesto koje ću pogledati je Last.fm, a ja zapravo idem na licu mjesta u slučaju neki ljudi nisu upoznati, ali Last.fm je u osnovi glazba okusa i preporuke web stranice. Možete napraviti račun. Možete početi upload glazbu iz music playera na web stranici, a zapravo će početi dajući vam glazbene preporuke na temelju onoga što slušati. Na primjer, ako idete na svoj profil stranica-to je moje- možete vidjeti imate popis nedavno slušao pjesme. Možete vidjeti ukupni omiljene umjetnike, sve takve stvari, i opet, tu je velika API iza Last.fm,  i možete ga koristiti za napraviti puno i puno stvarno cool stvari. Na primjer, ja ću otići kod prijatelja stranici koja ima ove stranice Last.fm Alati. To je zapravo drugi platforma koja je izgrađena na Last.fm API, i to nekoliko lijepih zanimljivih stvari. Ako sam se prijaviti sa svojim korisničkim imenom, na primjer, Mogu ga pitati za generiranje tag oblak, primjerice, i ono što se događa učiniti je dati mi vratiti sliku svi različiti žanrovi i takve stvari koje volim slušati. Kako se to radi? Vrlo osnovi to je govoreći na Last.fm API evo ovaj korisnik. Volio bih znati žanr svakoj pjesmi koju su ikada slušali, i što možete učiniti da što prilično jednostavan AJAX poziv na Last.fm API. Vi ćete se vratiti veliki popis, a onda očito neke druge stvari se radi da se to pretvorilo u riječi oblak, ali možete vidjeti ukupni to je vrlo lako pristupiti i vrlo jednostavan za korištenje. Stvarno lijepo za niz stvari. Mislim da je o svemu ću reći u ukupnom poretku. Jedna posljednja stvar ću spomenuti o API-u općenito je da ponekad ćete naići na nešto što se zove stopa ograničava, i ideja stopa ograničavajući se vi ne želite da zlostavljaju API. Drugim riječima, to je stvarno lijepo da puno tih stranica imaju API da možete otići i koristiti besplatno. Međutim, ako radite milijune ili milijarde zahtjeva po danu, Primjerice, ako ste zaglavili u beskonačnu petlju da beskrajno je upite nekakav API i dobivanje natrag veliku količinu podataka, očito da to nije dobro, pa što puno API učiniti je imati ova stopa ograničavanja značajku da kaže da može napraviti samo 1.000 zahtjeva dnevno po IP adresi ili nešto slično. A ako radite puno testiranja i takve stvari, ponekad ćete naići na to, i odjednom to će vas isključiti i reći ne, ja ne dajući vam bilo više podataka. Što želite učiniti je igrati po pravilima. Vi želite da biste bili sigurni da ste pročitali API spec. pažljivo. Ako on ima određena pravila priključen na njega, kao da samo može napraviti X upita dnevno ili možete pristupiti jedino dio baze podataka određeni broj puta ili nešto slično što želite da biste bili sigurni da se držati toga. Dokle god igrati unutar tih pravila, vjerojatno ćete imati jako lijepo vrijeme koristeći API. Vaš ukupni takeaway je API-ovi su jako, jako korisno. Tu je API za gotovo bilo velikih web servis vani. Prilično mnogo bilo koji dio Google Alati Suite, Google Maps, Google Earth, Gmail, Google Kalendar, sve te stvari imaju API. Možete ih koristiti za obje dobiti podatke od poslužitelja i slati podatke na server. Drugim riječima, ako ste htjeli napraviti kalendar app koji može ažurirati nečija Google Kalendar, tu je API za to. Ako želite napraviti nešto što će vam reći gdje položaj određene adrese je možete koristiti Google Maps API za to. API su fantastično korisno, a oni su posvuda. Ako ste zainteresirani za nekakvu ideju, tu je vjerojatno povezano API koje možete koristiti da biste dobili puno podataka vrlo brzo i vrlo jednostavno. Ako ste još uvijek u potrazi za projekt ili ako baš želite poigrati s nečim u cjelini, API-ovi su definitivno isplati raditi. Hvala, i ja sam rado odgovoriti na sva pitanja koja ste vi svibanj imati. Ok, hvala puno. [CS50.TV]