[Powered by Google Translate] [Seminar] [A Programmer's Inleiding tot API's]
[Billy Janitsch] [Harvard University] [Tommy MacWilliam]
[Dit is CS50.] [CS50.TV]
>> Hallo, iedereen, ik ben Billy, en vandaag ga ik het hebben over API's,
of application programming interfaces,
name in het kader van de CS50 afstudeeropdrachten en dat soort dingen.
In het algemeen wat is een API?
In zeer algemene termen, het is een soort van een man midden dat 2 stuks mogelijk maakt
van software voor communicatie met elkaar.
Dat is een soort van zeer ruime definitie en is dat niet relevant is voor wat we zoeken naar.
Wat we echt willen is een soort van nuttige middenweg
om ergens te communiceren met een soort van database.
>> Hier is een grafiek, en in principe is het idee dat
wij zijn een aanvraag, en we willen gegevens op te halen uit een database,
maar we willen niet de database direct kan ondervragen.
In plaats daarvan willen we gaan door dit soort middelste man, de API.
Het idee achter die nummers 2 en 3 op de kaart
beide zullen zeer gecompliceerd en rommelig.
Met andere woorden, als de API query de database,
het waarschijnlijk gaat worden met behulp van SQL tabellen en al dat soort dingen,
en we hebben geleerd een beetje over in CS50, maar over het algemeen,
je hebt gemerkt dat het een beetje van een pijn.
Het wordt heel, heel ingewikkeld en rommelig, vooral als je het maken van
complexe queries en dat soort dingen.
>> Wat we echt willen is een soort van nuttige en eenvoudige manier
om die gegevens op te halen, en dat is het idee achter de nummers 1 en 4 op de kaart.
Met andere woorden, we willen een heel eenvoudige manier om de API te vertellen wat te krijgen voor ons
en een heel eenvoudige manier om terug te krijgen die gegevens.
Er is een grote manier dat deze gegevens meestal wordt verzonden en ontvangen,
die JSON, of JavaScript Object Notation.
Dat kan variëren van een beetje zo ver als hoe je stuurt het verzoek naar de API.
Met andere woorden, als je wilt wat bepaalde hoeveelheid gegevens,
hoe vertel je de API te krijgen die gegevens kan een beetje variëren.
Meestal gaat het om het maken van een soort van netwerk aanvraag.
Met andere woorden, de toegang tot een soort van URL die gaat naar de API te vertellen
precies wat je wilt, maar de gegevens worden bijna altijd teruggestuurd,
Met andere woorden, nummer 4 in JSON.
>> Wat is JSON precies?
Zoals ik al zei, JavaScript Object Notation.
Het is eigenlijk de universele standaard voor het verzenden en ontvangen van gegevens.
Het idee is dat je deze 3 categorieën van dingen.
Je hebt arrays, hashmaps, en primitieven.
Arrays en hashmaps je hebt bij een beetje leek in CS50,
maar je hebt soort van gekregen een zeer strikte zin van wat ze zijn.
Met andere woorden, met arrays je weet dat ze gebonden te typen,
zodat u slechts een soort van het type dat gaat de hele array.
JSON is een stuk soepeler met dat soort dingen.
In principe is het idee is dat je de bouw dit object,
die bestaan ​​uit een van deze 3 dingen
en kunnen bestaan ​​uit meerdere exemplaren van, en ze kunnen worden genest.
>> Hier is een soort van een voorbeeld van JSON,
dat is deze accolades hier vertegenwoordig je HashMap,
en een HashMap is eigenlijk een afbeelding van een soort van de belangrijkste
een soort van waarde.
Je zult hier zien dat we de eigenschappen sleutel hebben,
en dat is het in kaart brengen op een array, dat is dit hele gebeuren.
We zien een ander element van de HashMap, dat deze toets isAwesome,
die kaarten aan een primitieve waarde true, met andere woorden, een boolean.
Primitieven kunnen strings. Ze kunnen integers.
Ze kunnen bools, iets dergelijks.
En zie je de inhoud van deze array die eigenschappen wijst op 2 strings in zich heeft,
zelf-gelijkende en prachtig.
Dat zijn twee eigenschappen van JSON, en we zien dat JSON is awesome.
Om te kijken naar dat wat nader ik ga bouwen
een meer complex voorbeeld van JSON hier.
>> Laten we beginnen met een array, bijvoorbeeld, alleen een lege array.
Maar dat is een soort van saai, dus we gaan om het te vullen een beetje,
en zoals ik al zei, zijn arrays in JSON typen gebonden,
dus we konden ook hier een string, die hi is,
en dat is een ander element van die array.
En ook kunnen we deze hier toevoegen een hashmapping, die gaat een paar mappings hebben.
Het gaat om een ​​afbeelding van naam aan de string Billy hebben.
We hebben een afbeelding van naam Billy, en we hebben een afbeelding van
favoriete kleur naar blauw.
Dat is in principe een goed voorbeeld van JSON.
Het soort komt in-whoops, moet een komma er-alle van de verschillende delen ervan.
Nogmaals, het is niet het type helemaal gebonden, dus je kunt elke vorm van soorten
in alles wat je wilt, en het idee is dat het zelf-gelijkende.
Met andere woorden, dit hier is een JSON object, net als dit hele ding,
zoals alleen dit, dus je kunt een primitieve een object,
een array zijn een object of een HashMap een object.
>> Zoals je kan soort van zien, JSON is echt, echt handig in dat het zo veelzijdig.
U kunt eventuele gegevens die u kunt bedenken opgeslagen in JSON.
Dat maakt het een heel mooi taal te gebruiken met API's
omdat het vrij veel betekent dat het niet uitmaakt wat gegevens die u wilt
er zal een manier om het terug te krijgen in JSON zijn.
Een paar eigenschappen die JSON bijzonder goed voor dit soort dingen.
Zoals u kunt zien, in vergelijking met een heleboel dingen die je hebt gewerkt met in CS50
Het is relatief eenvoudig om ook te lezen en zeer eenvoudig te schrijven.
Je kunt inspringen het uit als je wilt, zoals ik deed in dat voorbeeld,
die geeft je een mooi, mooi versie die je kunt heel goed zien.
Maar bovendien, het is ook gemakkelijk te lezen en te schrijven voor een computer.
Met andere woorden, het is eenvoudig te parsen en gemakkelijk coderen,
hetgeen betekent dat het vrij snel wat lezen gegevens betreft,
en JSON kan heel snel worden gegenereerd.
>> Het is ook heel gemakkelijk te bereiken verschillende delen van JSON en dat soort dingen.
Dat is mooi, en bovendien dat het zelfgelijkend,
met andere woorden, het feit dat je kunt JSON binnen JSON JSON binnen hebben
is echt leuk voor het opslaan van gegevens.
Een ander deel dat in het algemeen is erg handig in het werken met API's is jQuery.
Je hebt een beetje JavaScript geleerd, dat is een leuke manier
naar HTML en CSS te manipuleren binnen een website.
Maar het kan soort van een pijn om code in gewone JavaScript,
vooral omdat JavaScript is een echt verbose taal.
Je moet een heleboel syntax te leren, en gewoon om heel eenvoudige dingen te doen
het kost veel van de code, dus jQuery is een bibliotheek voor JavaScript.
Met andere woorden, het is een JavaScript-bestand dat u kunt laden
en gebruik vervolgens jQuery functies om bepaalde dingen te doen.
En jQuery maakt in principe uw leven een stuk makkelijker.
Het vereenvoudigt wat zou honderden lijnen in JavaScript te nemen tot een paar regels in jQuery.
>> Het is vooral handig als u gebruik maakt van API's, omdat het algemeen
hoe je gebruikmaakt van API's is door het maken van AJAX verzoeken,
en ik geloof dat David heeft gezegd in lezing die AJAX verzoeken
zijn over het algemeen als je een verzoek van het netwerk het maken van een soort van server
en om terug een soort van gegevens en bijwerken van een pagina direct.
Overwegende dat de in plain JavaScript dat zou gek aantallen lijnen
om alle headers te valideren en alles doen wat van dat soort dingen,
jQuery heeft een echt eenvoudige functie genaamd AJAX,
en alles wat je hoeft te doen in AJAX is geven de parameters die u wilt de API te geven,
de locatie van de API en eventuele aanvullende vorm van opties die u wilt configureren.
Het is echt, echt mooi en erg handig voor dit soort dingen.
Dat is alles wat we nodig hebben om te beginnen met onze handen vuil in API's.
>> Ik ga om een ​​paar voorbeelden en hun verschillende eigenschappen explore
en waarom ze nuttig zijn voor verschillende soorten dingen.
Het eerste wat ik eigenlijk laten zien is iets dat ik mee bezig ben
bij mijn onderzoek lab, dat is een Ngram Viewer,
en eigenlijk het idee van een Ngram Viewer is kunt u zoeken naar een soort van woord
of zin en zie hoe vaak het is verschenen in een bepaalde set van tekst in de tijd.
Dit voorbeeld hier is deze dataset van baby's
die werden geboren in New York tussen 1920 en 2000.
We kunnen bijvoorbeeld ook zoeken, de naam Jennifer,
en we zien dat de pre-1960 is echt niet zo veel gebruikt,
en dan als we in latere jaren Het wordt meer en meer gebruikt.
We kunnen ook vergelijkingen, dus als we Jennifer vergelijken bijvoorbeeld, Thomas,
we kunnen zien Thomas is behoorlijk wijd verspreid in de geschiedenis,
terwijl Jennifer is een meer recente naam.
Dat kunnen we doen, dat soort dingen.
>> Hoe werkt deze applicatie zijn werk?
Het werkt in principe via een API.
Met andere woorden, wij hebben hier bepaalde parameters.
We hebben de parameters van wat we eigenlijk op zoek naar,
die deze namen, en dan hebben we een paar andere eigenschappen,
als de Y-as en de X-as.
U kunt hebben we een paar verschillende opties te zien voor zover de
tijdsresolutie te gebruiken en dat soort dingen.
We hebben deze opties zo veel welke gegevens wij eigenlijk willen uit de database,
en we willen dat de gegevens terug te krijgen in een aantal bruikbare manier.
Normaal gesproken, als we queries op de database direct zou sorteren van een pijn te doen
want vermoedelijk deze gegevens over babynamen woont in een database ergens,
en het zou echt ingewikkeld om handmatig moeten opvragen is
en precies bepalen welke gegevens terug te keren.
Met andere woorden, we hebben alleen de zorg over Jennifer en Thomas in dit geval,
en we alleen de zorg over op een bepaalde as en al dat soort dingen.
>> Hoe komen we rond dit?
Om te graven in deze API een beetje meer Ik zal je laten zien een voorbeeld van dit platform
die een iets andere dataset.
Deze dataset, in plaats van babynamen, is eigenlijk alleen maar de hele
afdrukken publicatie database van Open Library,
dat is een gigantische bron van teksten die in de laatste 100 jaar of zo.
Het idee is dat we hebben deze compositorische van miljoenen en miljoenen van tekst,
en nu kunnen we zoeken naar verschillende woorden en zinnen binnen
Hier is een voorbeeld dat varieert een beetje anders uit het vorige voorbeeld
Ik liet je, dat is hebben we deze 3 zoekopdrachten,
oorlog, oorlog, en het Franse woord voor oorlog, die is guerre.
En we zoeken binnen 3 verschillende delen van de totale database.
Met andere woorden, in deze eerste vraag we alleen gezocht in de USA,
in de tweede alleen in het Verenigd Koninkrijk, en de derde alleen van werken in Frankrijk uitgegeven.
We zien een aantal interessante patronen ontstaan.
Zo zien we rechts rond hier die-
oeps, ik messed up de as een beetje, maar je kunt hier zie rechts in deze reeks
rond de Burgeroorlog is er een grote piek in de Amerikaanse editie
maar niet zo'n grote piek in de andere twee, en dat is natuurlijk omdat
de Amerikaanse Burgeroorlog werd er op dat punt.
>> We zien een aantal leuke dingen daar,
maar wat we echt over de zorg is hoe we deze gegevens hebben.
Ik neem je mee achter de schermen in deze app in een klein beetje.
Een handige truc is als je werkt met de site en de aard van willen weten
wat er achter de schermen, kunt u het openstellen van de developer tools.
Ik ga gebruiken Chrome ontwikkeltools, en om bij die
je kunt doen control, shift, J, en dat brengt u naar de JavaScript-console.
Er zijn een paar tabs hier.
Ze kunnen allemaal behoorlijk nuttig zijn onder verschillende omstandigheden, maar ik zorg over het netwerk
tab op dit moment, en ik eigenlijk moet vernieuwen om dat werkend te krijgen.
Oh, sorry.
Het houdt van het geven van een willekeurig voorbeeld.
Oke, we gebruiken dit voorbeeld in plaats daarvan dan.
>> Het idee is dat er hier deze API,
en je kunt precies zien wat de API komt terug.
Dit is wat de applicatie krijgt terug van de API te hebben gestuurd dat verzoek.
Laat me in te zoomen een beetje,
en we kunnen eigenlijk zien het is gewoon een reeks belangrijke waarde-paren in JSON.
Met andere woorden, we hebben dit HashMap hier die in kaart brengen van waarden.
Met andere woorden, het in kaart brengen jaren waarden.
In 1765 welk woord we in eerste instantie gezocht naar wordt 90 keer
van 1 miljoen, dus we krijgen terug dit resultaat.
Het is niet echt JSON omdat we dit kleine resultaat header hier,
maar merk op dat dit hele object hier is gewoon een hele grote JSON blob.
We hebben een scala hier die dit hele element bevat,
en je kunt zien dat hele element daar eindigt, en dan hebben we nog een grote element
dat gaat helemaal naar beneden naar het einde, en dat eindigt hier.
We hebben een hele grote array met 2 objecten in het,
en elk van deze objecten is een HashMap.
U kunt zien dat binnen elk van deze hashmaps hebben we een mapping
van deze index waarde op 0 en deze waarde om de waarde van een andere HashMap,
die weer is het in kaart brengen X-as waarden Y-as waarden.
>> U kunt zien dat JSON krijgt een beetje gecompliceerd, Algemeen, maar,
het is eigenlijk heel handig, en het is zeer gemakkelijk te bereiken in vergelijking met
andere verschillende vormen van notatie.
Zo ver als wat we eigenlijk het verzenden van gegevens naar de API te krijgen,
Ik ga om te gaan in de back-end een beetje hier.
Dit is de grote JavaScript-bestand dat is voor elk van de interacties van de web app,
en dus hebben we niet de zorg over de meeste van deze, maar we geven om er wat van.
Zo hebben we de zorg over deze buildQuery functie,
en het idee van deze functie is in principe het is rond te kijken de pagina,
uitzoeken wat de gebruiker wil, bevragen met andere woorden,
het controleren van die dozen waar ze hebben inbreng van hun zoektermen,
het controleren van de verschillende Y-en X-as waarden die ze hebben gekozen en al dat soort dingen,
en het gaat uit te spugen deze query waarde, die kan ik dan af naar de API.
>> Dit ziet er ingewikkeld, en het is vrij ingewikkeld
maar wat ik ga doen, in feite, ik ben al om dit te doen, wat goed is-
is dat ik ga naar de console te krijgen om precies af te drukken dat zoekwaarde
dat het stuurt af voor de API.
Dat is eigenlijk hier. Sorry, het geeft een heleboel dingen.
Maar dit is wat we over de zorg, dit object hier.
Dit is de query object.
Met andere woorden, dit is precies wat de webapplicatie stuurt aan de API,
en dus laten we eens kijken in een klein beetje, en we zien hebben we hier een paar waarden.
We zien hebben we dit aantal Type, die voorvallen per miljoen woorden,
en dat is precies wat we hebben gekozen in de Y-as hier.
Dat is waar dat vandaan komt.
We hebben een database waarde, wat betekent dat er een aantal bepaalde databank
dat deze gegevens leeft in, en we willen specifiek toegang tot die gegevens
in tegenstelling tot de babynamen data, bijvoorbeeld.
Dan hebben we deze groepen waarde,
die zegt dat we willen zoeken op jaar, in tegenstelling tot
andere X aswaarde.
Dan hebben we een methode, die een aantal API's zal doen meerdere dingen.
In andere woorden, deze API ook terugkeren andere soorten data,
maar in dit geval willen we dat in kaart brengen van X-as waarden Y-as waarden.
Dat is wat dat is het veelzeggend om daar te doen,
en we hebben deze zoekopdracht grenzen array, waarvan 2 waarden bevat.
De eerste is wat we hier zien, dat is allemaal van de waarden
vervat in dat eerste kleine vak bovenaan.
>> Met andere woorden, we willen kijken naar het woord strijd, en we willen het filteren
door Engels teksten binnen de Amerikaanse literatuur.
Wij hebben dit land, dat is de VS.
We hebben een taal, dat is Engels, dus we hebben al deze verschillende onderdelen
die allemaal zijn het vertellen van de API precies wat we willen.
We weten niet wat de gegevens die we terug nog is,
maar we weten dat de gegevens naar een bepaalde vorm aannemen.
Dit voorbeeld is een soort van de ingewikkelde kant,
en je zou niet per se te worden met behulp van een API dit complex,
maar dit is aan te tonen u het bereik en de kracht van wat API's kan doen.
Met andere woorden, een relatief eenvoudige zoeksysteem we in principe een invoervak
met een paar andere selectors in verschillende plaatsen.
>> Laat me weer uit te zoomen hier buiten.
We hebben een input box met een paar verschillende metadata selecties,
Wij hebben Y-as en X-as selecties.
Wij hebben niet echt dat veel velden,
en we kunnen heel gemakkelijk zien we in staat om een ​​soort van API opgevraagd
en terug te krijgen gegevens en vervolgens zet het in deze grafiek,
die vervolgens zal deze weer te geven op een nuttige manier.
Om te kijken naar een ander voorbeeld, dat misschien een beetje meer vertrouwd met jullie
we gaan nu naar Facebook.
Facebook's API heet de Facebook Graph,
en eigenlijk wat dat betekent is Facebook ziet zichzelf als deze enorme database
van veel verschillende onderdelen dat bepaalde relatie tot elkaar hebben.
Met andere woorden, ik ben een gebruiker op Facebook, dus ik heb een profiel,
en ik heb ook een aantal vrienden, en elk van hen heeft een profiel,
en elk van mijn vrienden een wand, die verschillende reacties op het heeft,
en elk van deze opmerkingen heeft sympathieën en al dat soort dingen.
>> Er zijn veel verschillende delen op Facebook.
Het is een enorm complexe API, en er is tonnen die je kunt doen met het,
maar het is eigenlijk vrij eenvoudig te gebruiken.
Ik ga om te beginnen door te gaan naar graph.facebook.com / billyjanitsch,
dat is mijn unieke accountnaam en uw accountnaam zal ofwel
een soort woord als je hebt gekozen, of het misschien gewoon een reeks cijfers.
Wat we terug is vrij eenvoudig informatie.
We zien dat ik een voornaam, die Billy, een achternaam, dat is Janitsch hebben.
Er is een unieke Facebook ID die ik heb.
Je kunt zien dat ik mannelijk ben en dat ik mijn taalinstelling
naar Brits Engels.
Met andere woorden, we zien heel basisinformatie hier.
Het is niet te veel, maar het geeft ons een idee van wat er staat.
>> We kunnen hetzelfde doen om David Malan, bijvoorbeeld.
Ik denk dat zijn naam is dmalan.
We zien David Malan heeft een unieke ID.
Hij heeft een naam, voornaam, middelste naam, achternaam.
We zien ook dat hij mannelijk is en heeft zijn taal is ingesteld op Engels.
Met andere woorden, we zien vrij basic informatie hier.
Nu, wat gebeurt er als we proberen om te controleren of iets anders?
Laten we zeggen dat ik ben geïnteresseerd in wat David Malan heeft vond op Facebook.
Ik kan / wil. Nu hebben we een probleem tegenkomt.
We hebben een soort van fout die een toegangstoken zegt
is nodig om dit onderdeel te vragen.
Maar als je erover nadenkt, dat maakt eigenlijk logisch, want het zou raar zijn
als je zou kunnen toegang krijgen tot elk onderdeel van de database van Facebook
alleen vanuit een soort van eenvoudige API, toch?
Met andere woorden, vermoedelijk uw informatie kan niet worden geopend door iedereen die het wil.
>> Deze fout is precies wat dat betekent.
Sommige API's vereisen bepaalde rechten om hun toegang tot de gegevens.
En nog meer geavanceerde API's, zoals de Facebook-een,
zal vereisen bepaalde rechten om bepaalde dingen te doen.
Ik zie deze basisinformatie over David Malan.
Ik kan zien dat hij mannelijk is en dat hij leeft in de VS,
maar ik kan niet echt iets zien voorbij.
Om rond dit te krijgen voor nu, Facebook heeft deze handige tool
dat is de grafiek API ontdekkingsreiziger, en het idee van die u kunt sorteren van
make-up machtigingen voor jezelf op basis van uw eigen rekening
en bekijk dingen die specifiek uw account kunt bekijken.
Bijvoorbeeld, als ik dat doe graph.facebook.com/billyjanitsch/likes-
whoops, ik denk dat ik mijn token hier opnieuw te valideren.
Oke.
Als ik dat doe dat nog eens, geweldig, nu zie ik dat ik dit object terug te krijgen
die zegt dat ik zwembad noedels, die in de categorie Games en Toys wilt.
Ik hou van walrussen, die in de categorie Animal.
Dit zijn mijn werkelijke Facebook likes.
Ze zijn soort van gênant.
>> Maar we kunnen zien deze gegevens is allemaal terug in JSON.
Het is vrij leesbaar.
Met andere woorden, wij hebben deze afbeelding van data een soort van een array,
en elk element van deze array een HashMap welke kaarten
De naam van een soortgelijk en de categorie van een soortgelijk.
Elke zoals is voorzien van een unieke ID.
Er zijn allerlei verschillende dingen van de gegevens die we kunnen krijgen,
en als je geïnteresseerd bent in het gebruik van de Facebook API voor een CS50 afstudeerproject
of voor iets dergelijks het is eigenlijk heel goed te doen.
In principe hoe je rond de authenticatie ding is Facebook
maakt gebruik van een systeem genaamd OAuth, of Open Authentication,
en ik wil niet nu krijgen in omdat OAuth of de verschillende soorten
van authenticatie heeft de neiging om sterk variëren tussen de verschillende API's,
dus ik kon besteden een lange tijd gaan over elk een,
maar ze zijn eigenlijk vrij vanzelfsprekend.
>> Als u Google Facebook API is zeer leesbaar.
Er is een hele spec.
Zo, dit is de documentatie voor de Facebook-API,
en je kunt zien dat ik op de pagina Gebruiker, dus ik kan alles leren over de verschillende soorten van de dingen
die beschikbaar zijn zoveel data krijgen
en ook de verschillende machtigingen die ik nodig heb om ze te openen.
Zoals we zagen, hoeven we niet rechten om de naam of het geslacht te openen,
maar verder dan dat we moeten machtigingen voor de meeste dingen.
Deze pagina, of beter gezegd, deze website zal u ook vertellen hoe je
een teken om te kunnen om jezelf te authenticeren.
De meeste authenticatie systemen maken gebruik van een soort van token
waar je dit unieke waarde, dat is een heel lange en willekeurige string,
en op die manier kunnen ze associëren het verzoek dat je maakt met je mee.
Met andere woorden, ze weten dat je niet iets verdachts met hun gegevens doen.
Ze weten precies wat je krijgt.
Ze weten ook dat je toestemming om die informatie bekijken.
>> Als u hebt gemaakt een Facebook-app en je app heeft bepaalde gebruikers,
en die gebruikers hebben toegestaan ​​dat app om bepaalde delen van hun profiel,
dan wat API-sleutel of token dat die app gebruikt
kunnen de gegevens voor die gebruikers toegang.
Dit klinkt misschien ingewikkeld, maar het is niet al te slecht,
en als je wilt dat u Facebook gebruikt Ik zou het ten zeerste dat u
overwegen spelen met hun API.
Het is erg cool, en je kunt een heleboel verschillende dingen mee doen.
Als de gebruiker verleent u deze machtigingen kunt u zelfs terug te gaan naar de API
en zeggen ik wil eigenlijk plaatsen aan de muur van deze gebruiker, of ik wil laten plaatsen van een foto,
en dat is waarom op uw news feed je soms die vervelende dingen
zeggende: je vriend heeft bekeken deze video op een soort van rare site of iets dergelijks.
Dat komt omdat die app is verleend de toegang tot plaatsen op de muur van die persoon.
Het idee over het algemeen, is de Facebook API vrij ingewikkeld, maar ook erg handig.
Zeker de moeite waard als je nog steeds op zoek naar een afstudeerproject.
>> Een andere reeks API's die ik ga te gaan over is CS50 API's.
Laat me in te zoomen hier.
CS50 daadwerkelijk samen een hele reeks API's
die u kunt gebruiken voor een afstudeerproject of gewoon voor iets dat je maakt.
En ze zijn meestal Harvard verbonden, en zij afwijken van de HUDS menu,
bijvoorbeeld om deze Harvard Evenementen API, die zal u laten toegang tot een lijst met
verschillende gebeurtenissen die aan de gang aan Harvard en dat soort dingen.
En dus kunnen we klikken op een van deze en krijg een spec voor het,
die je zult kunnen vinden voor elke API, en het idee is
Het laat je weten, A, in het bijzonder wat verzoeken om van de API en hoe het te vragen.
Met andere woorden, als ik wil alle gebeurtenissen die gebeuren morgen
dan moet ik om natuurlijk geven die datum dat ik wil in een bepaald formaat,
en B, het zal me precies vertellen wat het gaat om terug te geven aan mij.
Het zal zeggen ik ga terug je dit JSON object,
of zoals je kunt zien, zijn er verschillende formaten.
>> U kunt ook de terugkeer van de gegevens als een CSV, bijvoorbeeld.
Maar weet u precies hoe die gegevens eruit komt te zien als je het terug
dus je kunt verwachten dat bepaalde dingen mee te doen.
We kunnen naar beneden scrollen en zie, bijvoorbeeld, als we willen dat de API opgevraagd
een kalender te krijgen, dan kunnen we gebruik maken van deze bepaalde URL
en geef het aantal parameters die zullen worden de gegevens die we willen precies.
En ook, als we willen dat de gegevens weer in een bepaald formaat,
dan kunnen we verzoeken de gegevens in een CSV uit te voeren,
en dat is gewoon een andere parameter die we doorgeven aan de API.
Veel leuke dingen om daar te doen.
Ik zou zeker aanraden om de CS50-API's.
>> Ik ga op dit Harvard Eten API kijken in het bijzonder voor een klein beetje.
Een ding dat ik eigenlijk heb ontworpen is deze Harvard Noms website,
die gebruik maakt van de CS50 Eten API op te halen het HUDS menu voor de dag.
En voor uitbreiding school mensen, HUDS is het servies in Harvard.
Wat je krijgt is deze pagina die alle van de maaltijden bevat voor de dag, zo zien we de lunch.
We hebben een paar verschillende categorieën. We hebben de bonen en volkoren station.
Wij hebben de bruine rijst station.
We zien voor de brunch hebben we deze paar voedingsmiddelen.
Als we er op klikt, dan krijgen we de voedingswaarde-informatie.
Je ziet dit is de voedingswaarde-informatie voor grapefruit, voor het geval je het je afvragen.
En dus nogmaals, we gaan naar peer in de back-end hier een klein beetje
en zien wat dit precies doet om deze gegevens op te halen.
Het blijkt niet daadwerkelijk erg complex at all.
Dit bestand ziet er een beetje rommelig, maar houd in gedachten dat dit de gehele website hanteren,
en als ik naar beneden scrollen zien we deze verandering data functie.
>> Nu, om duidelijk te zijn, dit is geschreven in CoffeeScript,
dat is een taal die u waarschijnlijk nog niet eerder gezien.
Maar het is vrij leesbaar, dus ik zal er doorheen lopen alsof het pseudocode.
Datum wijzigen is een functie die gaat nemen aan deze datum waarde,
en het is ook gaat nemen in een eerste, die we niet schelen zo veel.
Maar het belangrijkste is dat het deze datum heeft,
en die datum is de dag dat we willen al het voedsel items te vragen voor.
En dan zie je dat we hier een klein beetje van de syntaxis,
dat is in principe het ontleden die datum in een leesbaar formaat.
Met andere woorden, de API vereisen dat de datum in een bepaald formaat.
Je kunt niet zomaar zeggen: 16 november 2012 AD.
Het zal niet weten wat te doen met dat. Het wil de datum in een bepaald formaat.
Het enige wat we hier doen is het geven van precies dat formaat,
dat is een jaar waarde en vervolgens een koppelteken, een maand waarde,
een andere koppelteken en de datum waarde.
En we hebben ook zeggen dat we willen dat de uit te voeren gegevens in JSON zijn.
>> Nu zijn we het maken van deze AJAX verzoek, en zoals ik al eerder zei,
jQuery heeft deze super handige AJAX functie die alles wat je hoeft te doen is aangeven
een paar parameters hier beneden, en het geeft je weer precies wat je wilt.
We vertellen dat de URL wij het willen gaan is dit CS50 Eten API,
die we kregen van de spec.
We zeggen dat we de gegevens in JSON en dat willen
we gaan geven deze gegevens die we hebben gedefinieerd hier boven.
Dit is de dag dat we het voedsel items wilt voor.
En dan alles wat we hoeven te doen is te definiëren een soort van succes-functie,
dat is eigenlijk wat er gebeurt als de interface retourneert deze gegevens.
Met andere woorden, hebben we verpakt alle parameters die we willen,
die in dit geval is de dag dat we het willen en het feit dat we het willen in JSON,
en stuurden we het uit aan de API, dus nu de API zegt, oke,
Hier worden uw gegevens, ik heb het terug voor je.
We hebben het succes functie, waardoor aangezien de API
met succes terug wat gegevens, wat doen we ermee?
>> En het blijkt dat alles wat we doen is bellen deze update menufunctie
met wat de API is teruggekeerd, dus we kunnen zoeken naar die
en zien dat alles wat we doen is een aantal nieuwe syntax hier in met gebruik
om de HTML te werken en steek deze nieuwe gegevens.
Wat dit laat is hebben we deze pijlen aan beide zijden, en klikken we kunnen,
en nu zijn we op zoek naar de gegevens voor de volgende dag weer voor de volgende dag,
en elke keer is het bijwerken van die datum waarde en het opvragen van de API,
om terug een aantal gegevens en zetten het op de site.
Ook hier kunt u zien, super, super handig.
Deze app kostte me een paar uur om samen te hacken,
en ik heb wat meer ervaring, natuurlijk, maar je CS50 afstudeerproject
kunt kijken iets heel erg als dit.
>> API's zijn super krachtig voor de hoeveelheid werk die zij nemen.
Het laatste wat ik ga te gaan over een paar API's in grote lijnen.
Ik zal niet zo ver te krijgen in deze voor zover wat ze doen het bijzonder,
maar ik zal je een idee geven van wat er die er zijn.
2 echt handig degenen, als je geïnteresseerd bent in de data-analyse of visualisatie
of iets dergelijks, zijn Freebase en Wikipedia.
Wikipedia-vermoedelijk jullie allemaal weten-is een gratis online encyclopedie,
en het heeft eigenlijk een API, dus als je wilt, bijvoorbeeld,
krijgen alle van de teksten en de artikelen voor octopus
u kunt heel gemakkelijk doen.
Zeg gewoon hey, Wikipedia API, zou ik graag de gegevens terug als deze,
en ik zou het leuk vinden in dit formaat, en het artikel dat ik wil is octopus,
en zeer snel het zal u terug die informatie.
Dat kan erg handig als je wilt een soort van site te maken
Dat is een betere viewer voor Wikipedia of iets dergelijks.
>> Freebase is een soort van soortgelijke, hoewel het een beetje harder voor zover API.
Freebase is net als Wikipedia in dat het een online encyclopedie
die bevat veel en veel verschillende gegevens over allerlei verschillende onderwerpen,
maar het is opgeslagen in een relationele database, die is iets anders dan Wikipedia.
Wikipedia heeft haar statuten en artikelen gekoppeld aan andere artikelen,
maar voor het grootste deel, als u wilt dat de gegevens voor octopus,
ga je naar de octopus artikel, krijgen die gegevens, en je hebt een heleboel tekst
over octopussen, dus dat is geweldig.
Freebase werkt in een iets ingewikkelder wijze dat
alles tot elkaar.
Met andere woorden, als we op zoek bent naar voor octopus
dan heeft het een heleboel categorieën die ermee verbonden zijn.
>> Zo is een dier, leeft water,
het een bepaalde lichaamstemperatuur.
Ik weet het niet.
En al deze categorieën zijn links naar andere plaatsen waar je kunt gaan
om dingen te zien met diezelfde categorie.
Met andere woorden, de data set octopus een link naar de data voor alle dieren,
en dat zou laat me bewegen in de database heel snel.
Dit kan erg handig zijn als je doet iets als vergelijkingen.
Met andere woorden, gegeven een bepaald ding, je wilt zien
wat anders het is gerelateerd aan en zie wat het niet is gerelateerd aan.
Dat soort dingen. Het kan nuttig zijn in een aantal manieren.
Als u op zoek bent naar meer van een uitdaging en om te kunnen wat meer complexe dingen te doen
Ik zou overwegen het nemen van een blik op de Freebase API.
Maar grotendeels, Wikipedia is een zeer eenvoudige plek om zo ver als het krijgen van informatie te gaan.
Een andere plek waar ik naar gaat kijken is Last.fm, en ik ben eigenlijk ga naar de site
in het geval sommige mensen niet bekend zijn, maar Last.fm is eigenlijk een muziek
smaken en aanbevelingen website.
Je kunt een account aanmaken.
U kunt beginnen met het uploaden van muziek van uw muziekspeler
op de website, en in principe zal het beginnen met het geven u muziek aanbevelingen
gebaseerd op wat je luistert.
>> Bijvoorbeeld, als je naar je profiel pagina-dit is van mij-
je kunt zien heb je een lijst met recent beluisterde tracks.
U kunt zien dat de totale favoriete artiesten, al dat soort dingen,
en nogmaals, er is een grote API achter Last.fm,
en u kunt het gebruiken om heel veel echt leuke dingen te doen.
Bijvoorbeeld, ik ga naar pagina van een vriend die heeft dit Last.fm Hulpmiddelen website.
Dit is eigenlijk een ander platform dat is gebouwd op de Last.fm API,
en het doet een aantal mooie interessante dingen.
Als ik inloggen met mijn gebruikersnaam, bijvoorbeeld,
Ik kan vragen naar een wolk genereren, bijvoorbeeld
en wat dat gaat doen is mij een beeld van
alle verschillende genres en dat soort dingen die ik luister graag naar.
Hoe is het om dit te doen?
Zeer kort gezegd: het zegt aan de Last.fm API is hier deze gebruiker.
Ik wil graag het genre van elk nummer weten dat ze ooit hebben geluisterd,
en kun je dat doen door het maken van een vrij eenvoudige AJAX aanroep naar de Last.fm API.
Je krijgt terug een grote lijst, en dan natuurlijk een aantal andere dingen wordt gedaan
om te zetten in een word cloud, maar je kunt zien algehele
het is heel gemakkelijk te bereiken en zeer makkelijk te gebruiken.
Echt leuk voor een aantal dingen.
>> Ik denk dat is ongeveer alles wat ik algemeen zeggen.
Een laatste ding zal ik over API's te vermelden in het algemeen is dat
je zult wel eens tegenkomen iets genaamd snelheidsbeperking,
en het idee van snelheidsbepalende is dat je niet wilt API's misbruiken.
Met andere woorden, het is echt leuk dat veel van deze websites API's
dat u kunt gaan tot en het gebruik gratis.
Maar als je het maken van miljoenen of miljarden aanvragen per dag,
bijvoorbeeld, als je vast zit in een oneindige lus, die eindeloos is het bevragen
een soort van API en om terug een enorme hoeveelheid gegevens,
uiteraard dat niet goed is, dus wat veel doen van API's is hebben deze snelheidsbeperking functie
die zegt dat je kunt alleen 1.000 aanvragen per dag per IP-adres of iets dergelijks.
En als je doet een hoop testen en dat soort dingen,
je zult wel eens tegenkomen dat, en opeens dan schakelt hij zich u af
en zeggen nee, ik ben niet geven je niet meer gegevens.
>> Wat u wilt doen is spelen volgens de regels.
U wilt ervoor zorgen dat u de API spec zorgvuldig te lezen.
Als het heeft bepaalde regels die eraan verbonden zijn, zoals je kunt alleen X queries per dag
of u kunt alleen toegang krijgen tot een deel van de database een bepaald aantal keren
of iets dergelijks die u wilt ervoor zorgen dat u zich aan dat.
Zolang je speelt binnen die regels zul je waarschijnlijk hebben een erg leuke tijd met behulp van API's.
Uw algehele afhaalmaaltijden is API's zijn echt, echt handig.
>> Er is een API voor bijna elke grote webdienst die er zijn.
Vrijwel elk deel van de Google Tools Suite, Google Maps, Google Earth,
GMail, Google Calendar, al die dingen hebben API's.
U kunt ze gebruiken om zowel get gegevens van de server en stuurt gegevens naar de server.
Met andere woorden, als je wilde een kalender app te maken die kunnen worden bijgewerkt
iemands Google Agenda, is er een API voor.
Als je iets wilt dat gaat je vertellen waar te maken
de locatie van een bepaald adres is kunt u de Google Maps API gebruiken voor.
API's zijn fantastisch nuttig, en ze zijn overal.
Als u geïnteresseerd bent in een soort van idee,
er is waarschijnlijk een gerelateerde API die u kunt gebruiken om veel gegevens te krijgen
heel snel en heel eenvoudig.
>> Als je nog steeds op zoek naar een project of als je gewoon wilt om te spelen rond
met iets in het algemeen, API's zijn zeker de moeite waard.
Bedankt, en ik ben blij zijn om eventuele vragen die jullie kunnen beantwoorden.
Oke, heel erg bedankt.
[CS50.TV]