[Powered by Google Translate] [Seminarium] [en programmerare Introduktion till API] [Billy Janitsch] [Harvard University] [Tommy MacWilliam] [Detta är CS50.] [CS50.TV] Hej, alla, jag är Billy, och idag ska jag tala om API, eller programmeringsgränssnitt, särskilt i samband med CS50 slutliga projekt och sånt. I allmänhet vad är ett API? I mycket grova drag är det en slags mellanhand som gör 2 st av programvara för att kommunicera med varandra. Det är en sorts mycket bred definition och är det inte relevant för vad vi tittar på. Vad vi verkligen vill är något slags nyttig medelväg att kommunicera med någon sorts databas någonstans. Här är ett diagram, och i princip tanken är att Vi är ett program och vi vill få data från en databas, men vi vill inte att söka i databasen direkt. Istället vill vi att gå igenom denna typ av mellanhand, API. Tanken bakom detta är nummer 2 och 3 i diagrammet båda kommer att vara mycket komplicerat och rörigt. Med andra ord, när API avfråga databasen, Det är förmodligen kommer att använda SQL-tabeller och alla den sortens saker, och vi har lärt oss lite om det i CS50, men totalt sett, du har märkt att det är lite av en smärta. Det blir mycket, mycket komplicerad och rörig, speciellt när du gör komplexa frågor och sånt. Vad vi verkligen vill är något slags användbara och enkelt sätt att få dessa uppgifter, och det är tanken bakom siffrorna 1 och 4 på sjökortet. Med andra ord vill vi ett riktigt enkelt sätt att berätta API vad som ska få för oss och ett riktigt enkelt sätt att få dessa uppgifter tillbaka. Det är ett av huvudskälen sätt att data oftast skickas och tas emot, vilket är JSON eller JavaScript Object Notation. Som kan variera lite så långt som hur du skickar begäran till API. Med andra ord, om du vill ha viss mängd data, hur du säger API för att få dessa data kan variera lite. Vanligtvis handlar om att göra någon form av nätverk begäran. Med andra ord, komma någon form av URL som kommer att berätta API exakt vad du vill, men data är nästan alltid skickas tillbaka, med andra ord, nummer 4 i JSON. Vad är JSON exakt? Som jag sa, JavaScript Object Notation. Det är i grunden en universell standard för att sända och ta emot data. Tanken är att du har dessa 3 kategorier av saker. Du har arrayer, hashmaps och primitiva. Matriser och hashmaps du har tittat på lite i CS50, men du har typ av fått en mycket strikt mening av vad de är. Med andra ord, med arrayer vet du att de är typ bunden, så du har bara en sorts typ som går hela uppsättningen. JSON är mycket mer överseende med sånt. I grund och botten är tanken du skapa detta objekt, som kan bestå av någon av dessa 3 saker och kan bestå av flera sådana av dem, och de kan kapslas. Här är typ av ett exempel på JSON, vilket är dessa klammerparenteser här representerar din HashMap, och en HashMap är i grunden en kartläggning av någon form av nyckel till någon form av värde. Du ser här att vi har egenskaper nyckeln och det är mappning på en array, vilket är hela den här saken. Vi ser en annan del av HashMap, som är denna nyckel isAwesome, vilka kartor till ett primitivt värdet true, med andra ord, ett booleskt. Primitiver kan strängar. De kan vara heltal. De kan vara bools, något sådant. Och du ser innehållet i denna array som fastigheter pekar på har 2 strängar i det, själv liknande och underbara. Det är 2 egenskaper JSON, och vi ser att JSON är awesome. För att titta på det lite närmare jag kommer att bygga en mer komplex exempel JSON här. Låt oss börja med en array, exempelvis, bara en tom array. Men det är typ av tråkigt, så vi kommer att fylla upp en bit, och som jag sa, är arrayer i JSON typ bunden, så vi kunde också ha en sträng här, vilket är hej, och det är en annan del av denna grupp. Och likaså kan vi lägga till en hashmapping här, som kommer att ha några avbildningar. Det kommer att ha en kartläggning från namn till strängen Billy. Vi har en kartläggning från namn till Billy, och vi har en kartläggning av favoritfärg till blå. Det är i grunden ett bra exempel på JSON. Det slags hamnar i-hoppsan, behöver ett kommatecken där-alla olika delar av den. Återigen, det är inte typ bunden alls, så du kan ha någon form av olika typer inuti vad du vill, och tanken är att det är själv-liknande. Med andra ord är detta just här en JSON-objekt, som är allt det här, som är just detta, så du kan ha en primitiv vara ett objekt, en matris vara ett objekt eller en HashMap vara ett objekt. Som du kan typ av se, är JSON riktigt, riktigt bra att det är så mångsidig. Du kan ha eventuella data som du kan tänka lagras i JSON. Det gör det till en riktigt trevlig språk att använda med API: er eftersom det ganska mycket innebär att oavsett vilka data som du vill det kommer att finnas något sätt att få det tillbaka i JSON. Några egenskaper som gör JSON särskilt bra för den här sortens saker. Som ni kan se, jämfört med en massa saker som du har arbetat med under CS50 Det är jämförelsevis lätt att läsa och också mycket lätt att skriva. Du kan dra ut om du vill, som jag gjorde i detta exempel, som ger dig en trevlig, vacker version som du kan se riktigt bra. Men dessutom är det också lätt att läsa och skriva för en dator. Med andra ord, är det lätt att tolka och lätt att koda, vilket innebär att det är ganska snabbt när det gäller att läsa data är berörda, och JSON kan genereras riktigt snabbt. Det är också väldigt lätt att få tillgång till olika delar av JSON och sånt. Det är trevligt, och dessutom det faktum att det är själv-liknande, med andra ord, det faktum att du kan ha JSON inom JSON inom JSON är verkligen trevligt för att lagra data. En annan del som är generellt riktigt bra att arbeta med API: er är jQuery. Du har lärt lite JavaScript, vilket är ett trevligt sätt att manipulera HTML och CSS på en webbplats. Men det kan typ av vara jobbigt att kod i vanlig JavaScript, till stor del beroende JavaScript är ett riktigt utförlig språk. Du måste lära dig en massa syntax och bara göra enkla saker Det tar en hel del kod, så jQuery är ett bibliotek för Javascript. Med andra ord, det är en JavaScript-fil som du kan ladda och sedan använda jQuery funktioner för att göra vissa saker. Och jQuery gör i princip ditt liv mycket enklare. Det förenklar vad som skulle ta hundratals linjer i JavaScript ner till några rader i jQuery. Det är särskilt användbart om du använder API: er eftersom generellt hur du ska använda API: er är genom att göra AJAX förfrågningar, och jag tror David har nämnt i föreläsning som AJAX förfrågningar är i allmänhet när du gör ett nätverk begäran till någon form av server och få tillbaka någon form av data och uppdatera en sida omedelbart. Medan det i vanlig JavaScript som skulle ta galna antal linjer att validera alla rubriker och göra allt den sortens saker, jQuery har en riktigt enkel funktion som kallas AJAX, och allt du behöver göra i AJAX är att ge de parametrar som du vill ge API, platsen för API och ytterligare sorts alternativ som du vill konfigurera. Det är riktigt, riktigt nice och mycket användbar för denna typ av sak. Det är allt vi behöver för att börja få våra händer smutsiga i API: er. Jag ska ta upp några exempel och utforska deras olika egenskaper och varför de är användbara för olika typer av saker. Det första jag ska faktiskt visa dig är något som jag jobbar på på min forskningslabb, vilket är en ngram Viewer, och i princip tanken på en ngram Viewer är att du kan söka efter någon form av ord eller en fras och se hur ofta det dök upp i en viss uppsättning av text över tiden. Detta exempel här är dessa uppgifter uppsättning av spädbarn som föddes i New York mellan 1920 och 2000. Vi kan söka, till exempel för namnet Jennifer, och vi ser att pre-1960 det verkligen inte användes så mycket, och sedan när vi kommer in senare år det blir används mer och mer. Vi kan också göra jämförelser, så om vi jämför Jennifer till exempel, Thomas, kan vi se Thomas har varit ganska vanligt genom historien, medan Jennifer är en nyare namn. Vi kan göra en sådan sak. Hur fungerar det här programmet till? I grund och botten, det fungerar genom ett API. Med andra ord har vi vissa parametrar här. Vi har parametrarna för vad vi egentligen söker efter, som är dessa namn, och sedan har vi några andra egenskaper, som Y-axeln och X-axeln. Du kan se att vi har ett par olika alternativ när det gäller tidsupplösningen att använda och sånt. Vi har dessa alternativ så långt som vilka uppgifter vi faktiskt vill ha från databasen, och vi vill få att data tillbaka på något bra sätt. Vanligtvis om vi frågande databasen direkt skulle sortera om vara jobbigt att göra eftersom Förmodligen data om baby namn lever i någon databas någonstans, och det skulle vara mycket komplicerat att behöva fråga den manuellt och bestämma exakt vilka data att återvända. Med andra ord, vi bryr oss bara om Jennifer och Thomas i detta fall, och vi bryr sig bara om en viss axel och alla den typen av saker. Hur får vi runt detta? Att gräva i detta API lite mer jag ska visa dig ett annat exempel på denna plattform som använder en något annorlunda uppsättning data. Dessa data set, istället för att vara baby namnen, är egentligen bara hela skriva ut publikationsdatabas av Open Library, som är en jätte källa av texter publicerats under de senaste 100-tal år. Tanken är att vi har denna compository av miljontals text, som vi nu kan söka efter olika ord och fraser i. Här är ett exempel som varierar lite annorlunda från det tidigare exemplet Jag visade dig, vilket är att vi har dessa 3 sökfrågor, krig, krig och det franska ordet för krig, som är Guerre. Och vi söker inom 3 olika sektioner av den totala databasen. Med andra ord, i denna första fråga vi bara söker i USA, i den andra en bara i Storbritannien, och den tredje bara från verk som produceras i Frankrike. Vi ser några intressanta mönster fram. Till exempel ser vi precis runt här som- oops, trasslat jag upp axeln lite, men du kan se rätt i detta område här runt inbördeskriget det finns en stor spik i den amerikanska upplagan men inte så stor stegring i de andra två, och det är självklart att det amerikanska inbördeskriget hände vid den punkten. Vi kan se några coola saker där, men vad vi verkligen bryr oss om är hur vi fick dessa data. Jag tar dig bakom kulisserna i denna app på lite. En snygg knep är om du arbetar med webbplatsen och typ av vill veta vad som händer bakom kulisserna, kan du öppna upp utvecklarverktyg. Jag kommer att använda Chrome utvecklarverktyg, och för att få dem du kan göra kontroll, skift, J och som tar dig till JavaScript-konsolen. Det finns några flikar här. De kan alla vara ganska användbart under olika omständigheter, men jag bryr mig om nätverket fliken just nu, och jag har faktiskt uppdatera för att få det att fungera. Åh, förlåt. Det gillar att ge en slumpmässig exempel. Okej, vi här använder du exemplet istället då. Tanken är att det är det här API här, och du kan se exakt vad API återvänder. Detta är vad programmet är att få tillbaka från API har sänt begäran. Låt mig zooma in lite, och vi kan i princip se det är bara en rad viktiga värdepar i JSON. Med andra ord har vi här HashMap här som är kartläggning värden. Med andra ord, det kartläggning år till värden. År 1765 vad ord vi inledningsvis sökte används 90 gånger av 1 miljoner, så vi få tillbaka detta resultat. Det är inte precis JSON eftersom vi har den här lilla resultat huvud här, men märker att det hela objektet här är bara en stor stor JSON klump. Vi har en rad här som innehåller hela den här delen, och du kan se att hela elementet slutar där, och sedan har vi en annan stor faktor som går ända ner till slutet, och det slutar här. Vi har en riktigt stor array med 2 föremål i den, och vart och ett av dessa objekt är en HashMap. Du kan se i var och en av hashmaps vi en kartläggning detta index värde 0 och detta värde värde till ett annat HashMap, som återigen är avbildningsvärden X-axeln till Y axelvärden. Du kan se JSON blir lite komplicerat, men totalt sett, det är faktiskt mycket användbar, och det är mycket lätt att komma i jämförelse med andra olika former av notation. Såvitt vad vi egentligen skicka data till API för att få, Jag ska gå in i bakändan lite här. Detta är den stora JavaScript-fil som är handläggningen av alla de interaktion mellan webbprogrammet, så vi bryr oss inte om det mesta av detta, men vi bryr oss om en del av det. Till exempel bryr vi om detta buildQuery funktion, och tanken med denna funktion är i grunden det ser runt på sidan, räkna ut vad användaren vill söka, med andra ord, kontrollera de boxar där de har in sina söktermer, kontrollera de olika Y-och X-värden axel som de har valt och alla sånt, och det kommer att spotta ut denna fråga värde, som jag kan sedan skicka iväg till API. Det ser komplicerat, och det är ganska komplicerat men vad jag ska göra, i själva verket, jag redan gör detta, vilket är bra, är att jag ska få konsolen att skriva ut exakt den frågan värde att det är att skicka iväg till API. Det är faktiskt här. Tyvärr matar det en hel del saker. Men detta är vad vi bryr oss om, detta objekt här. Detta är frågan objektet. Med andra ord är detta precis vad webbapplikationen skickar till API, och så låt oss titta i lite, och vi ser att vi har några värden här. Vi ser att vi har denna räkna typ, som är händelser per miljon ord, vilket är precis vad vi har valt i Y-axeln hit. Det är där det kommer ifrån. Vi har en databas värde, vilket innebär att det finns någon viss databas att dessa uppgifter lever i, och vi vill komma åt dessa data specifikt i motsats till de baby namnen uppgifterna, till exempel. Sedan har vi det här grupper värde, som säger att vi vill söka efter år i motsats till någon annan X-axel värde. Sedan har vi en metod, som vissa API: er kommer att göra flera saker. Med andra ord kan denna API returnera även andra typer av data, men i detta fall vill vi att kartläggning av X-axelvärden till Y axelvärden. Det är vad som säga till den att göra det, och vi har den här sökningen begränsar array, som innehåller 2-värden. Den första är vad vi ser här, är som alla värden som finns i den första lilla rutan högst upp. Med andra ord, vill vi söka efter ordet striden, och vi vill filtrera av engelska texter inom amerikansk litteratur. Vi har detta land, som är USA. Vi har ett språk, som är engelska, så vi har alla dessa olika delar som alla talar API precis vad vi vill. Vi vet inte vad de data som vi får tillbaka är ännu, men vi vet att data kommer att ta en viss form. Detta exempel är typ av på den komplicerade sidan, och du skulle inte nödvändigtvis använda en API denna komplexa, men detta är att visa dig olika och kraften i vad API kan göra. Med andra ord, med hjälp av en relativt enkel fråga system vi har i princip en inmatningsruta med några andra väljare på olika platser. Låt mig zooma ut hit. Vi har en inmatningsruta med några olika metadata val, och vi har Y-axeln och X markeringar axeln. Vi behöver faktiskt inte så många områden, och vi kan se mycket lätt vi kan fråga någon form av API och få data tillbaka och sedan lägga det i detta diagram, som sedan kommer att visa den i ett användbart sätt. För att titta på ett annat exempel som kan vara lite mer bekant för er vi kommer att vända sig till Facebook. Facebooks API kallas Facebook-Diagram, och i princip vad det betyder är Facebook ser sig själv som denna massiva databas av massor av olika delar som alla har vissa relationer till varandra. Med andra ord, jag är en användare på Facebook, så jag har en profil, och jag har också vissa vänner och var och en av dem har en profil, och var och en av mina vänner har en vägg som har olika synpunkter på det, och var och en av dessa kommentarer har gillar och allt sånt. Det finns massor av olika delar till Facebook. Det är en enormt komplex API, och det finns massor du kan göra med den, men det är faktiskt ganska enkelt att använda. Jag ska börja med att gå till graph.facebook.com / billyjanitsch, som är min unika kontonamn och ditt kontonamn kommer antingen att vara någon form av ord om du har valt det, eller det kan bara vara en sträng av siffror. Vad vi får tillbaka är ganska grundläggande information. Vi ser att jag har ett förnamn, vilket är Billy, ett efternamn, vilket är Janitsch. Det finns ett unikt Facebook-ID som jag har. Du kan se att jag är man och jag har min språkinställning till brittisk engelska. Med andra ord, vi ser mycket grundläggande information här. Det är inte för mycket, men det ger oss en uppfattning om vad som finns där. Vi kan göra samma sak till David Malan, till exempel. Jag tror att hans namn är dmalan. Vi ser David Malan har ett unikt ID. Han har ett namn, förnamn, mellannamn, efternamn. Vi ser också att han är man och har sin språk inställd på amerikansk engelska. Med andra ord, vi ser ganska grundläggande information här. Nu, vad händer om vi försöker kolla något annat? Låt oss säga att jag är intresserad av vad David Malan har gillat på Facebook. Jag kan göra / gillar. Nu har vi stött på ett problem. Vi har någon sorts fel som säger en åtkomsttoken krävs för att begära denna resurs. Men om du tänker på det, gör som faktiskt rimligt eftersom det skulle vara konstigt om du kunde komma åt varje enskild del av Facebooks databas bara från någon form av enkel API, eller hur? Med andra ord, förmodligen din information inte kan nås av alla som vill det. Detta fel är just vad det betyder. Vissa API kräver vissa behörigheter för att komma åt sina data. Och ännu mer avancerad API, som Facebook en, kräver vissa behörigheter för att göra vissa saker. Jag kan se denna grundläggande information om David Malan. Jag kan se att han är man och att han bor i USA, men jag kan inte riktigt se något förbi det. För att komma runt detta för nu har Facebook här trevligt verktyg vilket är grafen API Explorer och tanken på det är att du kan sortera på göra upp behörigheter för dig baserat på ditt eget konto och sedan visa saker som specifikt kontot kan visa. Till exempel, om jag gör graph.facebook.com/billyjanitsch/likes- hoppsan, jag antar att jag måste förlänga min token här. Okej. Om jag gör det igen, bra, nu ser jag att jag får detta objekt tillbaka som säger att jag gillar poolen nudlar, som är i kategorin spel och leksaker. Jag gillar valrossar, som är i kategorin djur. Detta är min faktiska Facebook gillar. De är typ av pinsamt. Men vi kan se dessa uppgifter är allt tillbaka i JSON. Det är ganska lättläst. Med andra ord har vi denna mappning av data till någon sorts en matris, och varje del av denna array är en HashMap som kartlägger namnet på en liknande och den kategori av en liknande. Varje liknande har ett unikt ID. Det finns alla möjliga olika saker av data som vi kan få, och om du är intresserad av att använda Facebook API för en CS50 lärdomsprov eller för något sådant är det faktiskt ganska genomförbart. I grund och botten hur du får runt autentisering sak är Facebook använder ett system som kallas OAuth, eller Open Authentication, och jag vill inte komma in i det nu eftersom OAuth eller annan typ av autentisering tenderar att variera mycket mellan olika API: er, så jag kunde tillbringa en lång tid att gå igenom var och en, men de är faktiskt ganska självförklarande. Om du Google Facebook API är det mycket läsvärd. Det finns en hel spec. Till exempel är det i dokumentationen för Facebook API, och du kan se jag är på användarens sida, så jag kan lära dig allt om olika typer av saker som finns att komma så långt som data och även de olika behörigheter som jag behöver för att komma åt dem. Som vi såg, vi behöver inte behörighet att komma åt namn eller kön, men utöver det vi behöver behörighet för det mesta. Den här sidan, eller snarare, denna webbplats kommer också att berätta hur man får ett tecken för att kunna autentisera dig själv. De flesta autentisering system använder någon form av token där du får denna unika värde, vilket är en riktigt lång och slumpmässig sträng, och på så sätt kan de associera begäran att du gör med dig. Med andra ord, de vet att du inte gör något misstänkt med sina uppgifter. De vet exakt vad du får. De vet också att du har behörighet att visa denna information. Om du har gjort en Facebook-app och din app har vissa användare, och vilka användare har låtit att appen få tillgång till vissa delar av sin profil, sedan vad API-nyckel eller token som att APP använder kommer att kunna komma åt data för dessa användare. Detta kanske låter komplicerat, men det är inte så illa, och om du vill använda Facebook skulle jag starkt rekommendera att du överväga att spela runt med sin API. Det är väldigt cool, och du kan göra en massa olika saker med det. Om användaren ger dig dessa behörigheter kan du även gå tillbaka till API och säga att jag vill verkligen skriva den här användarens vägg eller jag vill ha dem skicka ett foto, och det är därför på nyhetsflöde du ibland få dessa irriterande saker ordstävet din vän har sett denna video på något slags konstig plats eller något liknande. Det beror att APP har beviljats ​​tillträde till på den personens vägg. Tanken övergripande är Facebook API ganska komplicerat men också riktigt bra. Definitivt värt att checka ut om du fortfarande letar efter en sista projekt. En annan svit av API: er som jag ska gå över är CS50 API: er. Låt mig zooma in här. CS50 har satt faktiskt ihop en hel serie av API som du kan använda för en sista projekt eller bara för något som du gör. Och de är oftast Harvard relaterade, och de varierar från HUDS menyn, till exempel denna Harvard Events API, vilket låter dig visa en lista över olika händelser som pågår vid Harvard och sånt. Och så att vi kan klicka på någon av dessa och få en spec för det, som du kommer att kunna hitta för alla API, och tanken är Det låter dig veta, A, särskilt vad begära från API och hur du begär det. Med andra ord, om jag vill att alla händelser som sker i morgon då måste jag naturligtvis ge det den dagen som jag vill ha i ett visst format, och B, kommer det att berätta exakt vad det kommer att ge tillbaka till mig. Det kommer att säga att jag kommer att återvända dig denna JSON objekt, eller som ni ser finns det olika format. Du kan också returnera data som en CSV, till exempel. Men du vet exakt hur dessa data kommer att se när du får den tillbaka så du kan förvänta dig att göra vissa saker med det. Vi kan rulla ner och se, till exempel om vi vill söka API att få en kalender, då kan vi använda denna webbadress och ge den vissa parametrar som kommer att vara de data som vi vill exakt. Och på samma sätt, om vi vill tillbaka data i ett visst format, då kan vi be den att mata ut data i en CSV, och det är bara en annan parameter som vi passerar till API. Massor av coola saker att göra där. Jag skulle definitivt rekommendera checkar ut CS50 API. Jag ska titta på detta Harvard Food API i synnerhet för lite. En sak jag har faktiskt utformats är detta Harvard Noms webbplats, som använder CS50 Food API för att hämta HUDS menyn för dagen. Och för människor förlängning skolan är HUDS matsalen tjänsten vid Harvard. Vad du får är den här sidan som innehåller alla måltider för dagen, så vi ser lunch. Vi har några olika kategorier. Vi har bönor och fullkorn station. Vi har brunt ris stationen. Vi ser för brunch vi dessa få livsmedel. Om vi ​​klickar på dem, så får vi information om näringsvärdet. Du ser detta är näringsinformation för grapefrukt, i fall du undrar. Och så igen, vi kommer att blicka in i bakre änden hit lite och se exakt vad detta gör för att få dessa data. Och det visar sig att faktiskt inte vara mycket komplicerad på alla. Denna fil ser lite rörigt, men tänk på att detta hanterar hela webbplatsen, och om jag bläddra nedåt ser vi denna förändring uppgifter funktion. Nu, bara för att vara tydlig, det är skrivet i CoffeeScript, vilket är ett språk som du förmodligen inte har sett förut. Men det är ganska läsbar, så jag ska gå igenom det som om det var pseudokod. Ändra datum är en funktion som kommer att ta i detta datum värde, och det kommer också att ta i en första, som vi inte bryr oss om så mycket. Men det viktiga är att den har detta datum, och denna dag är den dag som vi vill be alla livsmedel för. Och så ser vi lite syntax här, som i princip är att analysera detta datum till ett läsbart format. Med andra ord kräver API datumet i ett visst format. Du kan inte bara säga 16 november 2012 AD. Det kommer inte att veta vad man ska göra med det. Det vill datumet i ett visst format. Allt vi gör här är att ge exakt det formatet, vilket är ett år värde och sedan ett bindestreck, en månad värde, annan bindestreck och datum värdet. Och vi säger också att vi vill att data ska matas in JSON. Nu gör vi det här AJAX begäran och som jag nämnde tidigare, jQuery har denna super bra AJAX funktion som allt du behöver göra är att ange några parametrar ner här, och det kommer att ge dig tillbaka precis vad du vill. Vi säger det att webbadressen vi vill att det ska gå till är detta CS50 Mat API, som vi fick från spec. Vi säger att vi vill att data i JSON och att vi kommer att ge dessa data som vi har definierat här. Detta är den dag vi vill att föda för. Och sedan allt vi behöver göra är att definiera någon form av framgång funktion, vilket egentligen är vad som händer när API återvänder dessa uppgifter. Med andra ord har vi förpackat upp alla de parametrar som vi vill, som i detta fall är den dag som vi vill ha det och det faktum att vi vill ha det i JSON, och vi skickade det till API, så nu API säger, okej, Här är dina data, fick jag det tillbaka till dig. Vi har framgång funktion, vilket innebär eftersom API framgångsrikt returnerar vissa data, vad gör vi med den? Och det visar sig att allt vi gör är att ringa den här uppdateringen menyfunktionen med vad API har återvänt, så vi kan söka efter den och se att allt vi gör är att använda en massa ny syntax här att uppdatera HTML och sätt dessa nya data. Vad detta gör är att vi har dessa pilar på båda sidor, och vi kan klicka, och nu är vi tittar på data för nästa dag och igen för nästa dag, och varje gång det uppdateras denna dag värde och sökfunktionen API, få tillbaka en del data och sätta in den i webbplatsen. Återigen kan du se, super, super bra. Denna app tog mig ett par timmar att hacka ihop, och jag har lite mer erfarenhet, naturligtvis, men din CS50 slutgiltiga projektet kan se ut mycket som detta. API är super kraftfull för hur mycket arbete som de tar. Det sista jag kommer att gå över är några fler API brett. Jag kommer inte komma så långt in dem så långt som vad de gör specifikt men jag ska ge dig en uppfattning om vad som finns där ute. 2 riktigt användbara sådana, om du är intresserad av dataanalys eller visualisering eller något liknande, är Freebase och Wikipedia. Wikipedia-förmodligen vet, är alla en fri encyklopedi, och det har faktiskt ett API, så om du vill, till exempel, få alla texter och artiklar för bläckfisk Du kan enkelt göra det. Säg bara hej, Wikipedia API, jag vill de data som returneras som denna, och jag skulle vilja det i detta format, och artikeln jag vill är bläckfisk, och mycket snabbt det kommer att ge dig tillbaka den informationen. Det kan vara riktigt användbart om du vill göra någon form av plats det är en bättre visare för Wikipedia eller något liknande. Freebase är ganska likartad, även om det är lite svårare när det gäller API. Freebase är som Wikipedia att det är en encyklopedi som innehåller massor av olika data om alla möjliga olika ämnen, men det är lagrat i en relationsdatabas, som skiljer sig något från Wikipedia. Wikipedia har sina artiklar och artiklar kopplade till andra artiklar, men för det mesta, om du vill att data för bläckfisk, du går till bläckfisk artikeln, få att data, och du har ett gäng text om bläckfiskar, så det är bra. Freebase arbetar i en något mer komplicerat sätt genom att allt är relaterade till varandra. Med andra ord, om vi söker efter bläckfisk då den har en massa kategorier som är förknippade med den. Till exempel är det ett djur, lever den under vattnet, den har en viss kroppstemperatur. Jag vet inte. Och alla dessa kategorier finns länkar till andra platser där du kan gå att se saker med samma kategori. Med andra ord skulle bläckfisk datauppsättningen innehålla en länk till de data som för alla djur, och som skulle låta mig flytta runt i databasen verkligen snabbt. Detta kan vara mycket användbart om du gör något som jämförelser. Med andra ord, givet en viss sak, vill du se Vad det rör och se vad det inte rör. Sådant. Det kan vara användbart i ett antal olika sätt. Om du letar efter mer av en utmaning och att kunna göra några mer komplexa saker Jag skulle överväga att ta en titt på Freebase API. Men i stort sett är Wikipedia en mycket enkel plats att gå så långt som att få information. En annan plats som jag ska titta på är Last.fm, och jag faktiskt kommer att gå till webbplatsen om vissa människor inte är bekant, men Last.fm är i grunden en musik smaker och rekommendationer hemsida. Du kan göra ett konto. Du kan börja ladda upp musik från musikspelaren till webbplatsen, och i princip kommer att börja ge dig musikrekommendationer baserat på vad du lyssnar på. Till exempel, om du går till din profilsida-Detta är mitt- du kan se att du har en lista över de senast lyssnade på spår. Du kan se den totala favoritartister, alla sånt, och igen, det finns en stor API bakom Last.fm,  och du kan använda den för att göra massor av riktigt coola saker. Till exempel, jag ska gå till en väns sida som har denna Last.fm Tools hemsida. Detta är faktiskt en annan plattform som är byggd på Last.fm API, och det gör ett antal ganska intressanta saker. Om jag loggar in med mitt användarnamn, till exempel, Jag kan be den att generera en tagg moln, till exempel, och vad det kommer att göra är att ge mig tillbaka en bild av alla olika genrer och sånt som jag gillar att lyssna på. Hur gör den det? Mycket princip det säger till Last.fm API här är den här användaren. Jag skulle vilja veta genren varje låt som de någonsin har lyssnat på, och du kan göra det genom att göra en ganska enkel AJAX samtal till Last.fm API. Du får tillbaka en stor lista, och sedan uppenbarligen vissa andra saker som görs att förvandla det till ett ord moln, men du kan se hela det är väldigt lätt att komma åt och mycket lätt att använda. Riktigt trevligt för ett antal saker. Jag tycker det är ungefär allt jag kommer att säga totalt. En sista sak jag ska nämna om API: er i allmänhet är att du ibland stöter på något som kallas hastighetsbegränsande, och idén om hastighetsbegränsande är du inte vill missbruka API: er. Med andra ord, det är verkligen trevligt att många av dessa webbplatser har API: er som du kan gå till och använda gratis. Men om du gör miljoner eller miljarder förfrågningar per dag, till exempel om du har fastnat i en oändlig loop som oändligt är sökfunktionen någon form av API och få tillbaka en stor mängd data, uppenbarligen det är inte bra, så vad många API göra är att ha den här hastighetsbegränsande funktionen som säger att du bara kan göra 1.000 förfrågningar per dag per IP-adress eller något liknande. Och om du gör en hel del tester och sånt, du ibland stöter på det, och plötsligt stängs av dig och säga nej, jag ger dig inte mer data. Vad du vill göra är att spela efter reglerna. Du vill vara säker på att du läser API spec noggrant. Om det har vissa regler knutna till den, som du bara kan göra X förfrågningar per dag eller så kan du bara komma åt en del av databasen ett visst antal gånger eller något liknande som du vill vara säker på att du håller sig till det. Så länge du spelar i dessa regler kommer du förmodligen ha en riktigt trevlig stund med API: er. Din totala takeaway är API är riktigt, riktigt bra. Det finns ett API för nästan alla stora webbtjänst där ute. Ganska mycket någon del av Googles verktyg Suite, Google Maps, Google Earth, Gmail, Google Kalender, alla dessa saker har API: er. Du kan använda dem till både hämta data från servern och skicka data till servern. Med andra ord, om du ville göra en kalender app som kan uppdatera någons Google Kalender, det finns ett API för det. Om du vill göra något som kommer att tala om var platsen för en viss adress är att du kan använda Google Maps API för det. API är fantastiskt användbara, och de är överallt. Om du är intresserad av någon form av idé, det finns förmodligen en relaterad API som du kan använda för att få en massa uppgifter mycket snabbt och mycket enkelt. Om du fortfarande letar efter ett projekt eller om du bara vill leka med något i allmänhet, API är definitivt värt att göra. Tack, och jag är glad att besvara alla frågor som ni kan ha. Okej, tack så mycket. [CS50.TV]