[Powered by Google Translate] [Seminè sou] [Yon ti rale yon pwogramè nan APIs] [Billy Janitsch] [Inivèsite Harvard] [Tommy MacWilliam] [Sa a se CS50.] [CS50.TV] Hi, tout moun, mwen Billy, ak jodi a mwen pral yo dwe ap pale de APIs, oswa interfaces pwogramasyon aplikasyon an, espesyalman nan yon kontèks CS50 pwojè final ak ki sòt de bagay. An jeneral sa a se yon API? An tèm trè laj, li nan sòt de yon nonm nan mitan ki pèmèt 2 moso nan lojisyèl yo kominike youn ak lòt. Sa a se yon kalite definisyon trè gran, epi se pa sa ki enpòtan pou ki sa nou ap chèche a. Ki sa nou vle reyèlman se kèk sòt de tè mitan itil yo kominike avèk kèk sòt de baz done kèk kote. Isit la nan yon tablo, yon ak fondamantalman lide a se ke nou se yon aplikasyon, epi nou vle jwenn done ki sòti nan yon baz done, men nou pa vle sijè rechèch baz done a dirèkteman. Olye de sa nou vle ale nan sa a sòt de nonm nan mitan, API la. Lide a dèyè ki se nimewo 2 ak 3 sou tablo ki yo tou de pral kapab trè konplike ak lèd. Nan lòt mo, lè API la ap enteroje baz done a, Li pwobableman pwal yo dwe lè l sèvi avèk tab SQL ak nan tout sa sòt de bagay, epi nou te aprann yon ti jan sou li nan CS50, men an jeneral, ou te remake ke li nan yon ti jan nan yon doulè. Li vin trè, trè konplike ak lèd, espesyalman lè w ap fè queries konplèks ak ki sòt de bagay sa. Ki sa nou vle reyèlman se kèk sòt de fason itil ak senp jwenn ke done, ak ki nan lide nan dèyè nimewo 1 ak 4 sou tablo a. Nan lòt mo, nou vle yon fason vrèman senp di API nan sa ki jwenn pou nou epi se yon fason vrèman senp yo ka resevwa ke done tounen. Gen se yon fason prensipal ki se ke done anjeneral voye ak resevwa, ki se JSON, oswa JavaScript Notasyon objè. Ki ka varye yon ti kras osi lwen ke ki jan ou voye demann lan bay API la. Nan lòt mo, si ou vle gen kèk sèten kantite done, ki jan ou di API a jwenn ke done yo ka varye yon ti kras. Pi souvan sa enplike nan fè kèk sòt de demann rezo-a. Nan lòt mo, gen aksè nan kèk sòt de URL ki nan pral di API la egzakteman sa w vle, men done sa yo, se prèske toujou voye tounen lakay yo nan lòt mo, nimewo 4 nan JSON. Ki sa ki JSON egzakteman? Kòm mwen te di, JavaScript Notasyon objè. Li nan fondamantalman estanda a inivèsèl pou transmèt ak resevwa done. Lide a se ke ou gen kategori sa yo 3 nan bagay sa yo. Ou gen ranje, hashmaps, ak primitif. Matris ak hashmaps ou te gade yon ti jan nan CS50, men ou te sòt de pran yon sans trè sevè nan ki sa yo ye. Nan lòt mo, ak ranje ou konnen ke yo ap tape mare, konsa ou gen sèlman yon sèl sòt de kalite ki ale nan tout etalaj a tout antye. JSON se yon anpil plis tolerance ak ki sòt de bagay sa. Fondamantalman lide a se ou konstwi sa a objè, ki ka konpoze de nenpòt kilès nan 3 bagay sa yo epi li ka konpoze nan yo menm plizyè nan yo, epi yo ka pare solèy. Sòt isit la nan yon egzanp sou JSON, ki se sa yo parantèz Curly isit la reprezante hashmap ou a, ak yon hashmap se fondamantalman yon kat soti nan kèk sòt de kle nan kèk sòt de valè. Ou pral wè isit la ke nou gen kle nan pwopriyete yo, ak ki nan planifikasyon sou yon etalaj, ki se bagay sa a tout antye. Nou wè yon lòt eleman nan hashmap la, ki se sa a isAwesome kle yo, ki kat nan yon valè primitif nan verite a, nan lòt mo, yon Boolean. Primitif ka strings. Yo ka nonm antye relatif. Yo ka bools, anyen tankou sa. Epi ou wè sa ki nan sa a etalaj ki pwopriyete pwen gen 2 strings nan li, pwòp tèt ou-menm jan ak bèl bagay. Moun sa yo se 2 pwopriyete JSON, epi nou wè ke JSON se pè. Fè yon gade nan ki yon ti kras pi byen mwen pral konstwi yon egzanp plis konplèks nan JSON isit la. Kite la kòmanse avèk yon etalaj, pou egzanp, jis yon etalaj vid. Men sa a sòt de raz, se konsa nou pral ranpli li moute yon ti jan, ak jan mwen te di, ranje nan JSON yo tape mare, pou nou te kapab gen tou yon fisèl isit la, ki se hi, ak sa a, se yon lòt eleman nan ki etalaj. Konsa tou, nou te ka ajoute yon hashmapping isit la, ki se pral gen yon mapin kèk. Li nan pral gen yon kat soti nan non fisèl Billy la. Nou gen yon kat soti nan non Billy, epi nou gen yon kat nan pi renmen koulè ble. Sa a se fondamantalman yon bon ekzanp de JSON. Li kalite rantre nan-whoops, bezwen yon vigil gen-tout nan pati yo diferan nan li. Yon fwa ankò, li pa tape mare l 'nan tout, kidonk, ou ka gen nenpòt ki kalite kalite andedan anyen ou vle, ak lide a se li nan tèt-menm jan an. Nan lòt mo, dwa sa a isit la se yon objè JSON, kòm se bagay sa a tout antye, kòm se jis sa a, kidonk, ou ka gen yon primitif dwe yon objè, yon etalaj pou yon objè oswa yon hashmap dwe yon objè. Jan ou kapab kalite wè, JSON se reyèlman, reyèlman itil nan ke li nan konsa versatile. Ou ka gen nenpòt done posib ke ou ka vin ansent ki estoke nan JSON. Ki fè li yon lang reyèlman bon yo sèvi ak ak APIs paske li bèl anpil vle di ke pa gen pwoblèm sa done ke ou vle gen nan pral fè kèk fason jwenn li tounen nan JSON. Yon pwopriyete kèk ki fè JSON patikilyèman bon pou sa a sòt de bagay sa. Kòm ou ka wè, konpare ak yon anpil nan bagay sa yo ke ou ve yo te ap travay ak nan CS50 li nan comparativement trè fasil pou li e pou tou trè fasil ekri. Ou ka itilize li soti si ou vle, tankou mwen te fè nan ki egzanp, sa ki ba ou yon bèl, vèsyon trè ke ou kapab wè vrèman byen. Men, ankò, li la tou fasil yo li ak ekri pou yon òdinatè. Nan lòt mo, li fasil analizan ak fasil Programme, ki vle di ke li nan bèl vit osi lwen ke lekti done a ap konsène, ak JSON kapab pwodwi reyèlman byen vit. Li la tou trè fasil jwenn aksè nan diferan pati nan JSON ak ki sòt de bagay. Sa a bèl, epi Anplis de sa, reyalite a ke li nan tèt-ki similè yo, nan lòt mo, lefèt ke ou ka gen JSON nan JSON nan JSON se reyèlman bon pou estoke done. Yon lòt pati ki se jeneralman reyèlman itil nan travay ak APIs se jQuery. Ou te aprann yon ti kras nan JavaScript, ki se yon fason bèl manipile HTML ak CSS nan yon sit entènèt. Men, li kapab kalite gen yon doulè nan kòd nan plenn JavaScript, lajman paske JavaScript se yon vrèman sil lang. Ou gen yo aprann yon anpil nan sentaks, ak jis fè bagay trè senp li pran yon anpil nan kòd, se konsa jQuery se yon bibliyotèk pou JavaScript. Nan lòt mo, li nan yon dosye JavaScript ke ou ka chaje ak Lè sa a, itilize fonksyon jQuery fè sèten bagay. Ak jQuery fondamantalman fè lavi ou anpil antye pi fasil. Li senplifye sa ki ta pran dè santèn de liy nan JavaScript desann nan yon liy kèk moun nan jQuery. Li nan patikilyèman itil si w ap sèvi ak APIs paske jeneralman kouman yo pral gen aksè nan APIs se pa fè Ajax demann, e mwen kwè David te mansyone nan konferans ki Ajax demann yo jeneralman lè w ap fè yon demann rezo a kèk sòt de sèvè yo ak pou jwenn tounen kèk sòt de done ak jour yon paj enstantane. Lè nou konsidere ke nan JavaScript plenn ki ta pran nimewo fou nan liy valide tout Tèt yo, epi fè tout sa nan ki sòt de bagay, jQuery gen yon fonksyon vrèman senp rele Ajax, ak tout sa ou dwe fè nan Ajax se bay paramèt sa yo ke ou vle bay API la, ki kote API a ak nenpòt ki sòt plis nan opsyon ke ou vle nan konfigirasyon. Li nan reyèlman, reyèlman bèl ak trè itil pou sa a jan de bagay konsa. Sa a tout sa nou bezwen kòmanse resevwa men nou sal nan APIs. Mwen pral pote yo moute yon egzanp kèk ak eksplore pwopriyete diferan yo epi poukisa yo ap itil pou diferan kalite bagay sa yo. Premye bagay mwen pral aktyèlman montre ou se yon bagay ke mwen ap travay sou nan laboratwa rechèch mwen an, ki se yon Viewer Ngram, ak fondamantalman lide nan yon Viewer Ngram se ou kapab fè rechèch pou kèk kalite pawòl oubyen yon fraz epi wè konbyen fwa li a parèt nan yon seri sèten nan tèks sou tan. Egzanp sa a isit la se sa a seri done nan ti bebe yo ki te fèt nan New York ant 1920 ak 2000. Nou kapab fè rechèch, pou egzanp, pou Jennifer a non, e nou wè ke pre-ane 1960 li vrèman pa te itilize tout sa ki anpil, ak Lè sa a, kòm nou te an ane pita li a vin itilize pi plis ak plis. Nou kapab tou fè konparezon, kidonk si nou konpare Jennifer, pou egzanp, Toma, nou ka wè Thomas te gen bèl répandus toupatou nan listwa, Lè nou konsidere ke Jennifer se yon non plis ki resan. Nou ka fè sa jan de bagay konsa. Kòman sa fèt aplikasyon an? Fondamantalman, li ap travay via yon API. Nan lòt mo, nou gen sèten karakteristik isit la. Nou gen paramèt yo nan sa n ap aktyèlman pou chèche, ki se sa yo non, ak Lè sa a, nou gen yon kèk pwopriyete lòt, tankou aks la Y ak aks X la. Ou ka wè nou gen yon kèk opsyon diferan osi lwen ke nan rezolisyon tan itilize ak ki sòt de bagay sa. Nou gen opsyon sa yo osi lwen ke ki sa done nou aktyèlman vle soti nan baz done a, e nou vle jwenn ki done tounen nan kèk fason itil. Nòmalman, si nou te rekèt baz done a dirèkteman li ta sòt de gen yon doulè fè paske prezimableman sa a done sou non ti bebe ap viv nan kèk baz done yon kote, ak li ta reyèlman konplike 'gen yo sijè rechèch li manyèlman epi deside egzakteman ki sa done retounen. Nan lòt mo, nou sèlman pran swen sou Jennifer ak Toma nan ka sa a, epi nou sèlman pran swen sou sou yon aks ak sèten nan tout sa sòt de bagay. Ki jan nou jwenn alantou sa a? Ale pifon nan sa a API yon ti kras plis mwen pral montre w yon lòt egzanp nan sa a platfòm ki itilize yon yon ti kras diferan gwoup done ki. Sa a seri done, olye pou yo te non ti bebe, se aktyèlman jis tout la enprime baz done piblikasyon nan Bibliyotèk Open, ki se yon sous jeyan nan tèks pibliye nan tout ane ki sot pase 100 oswa sa. Lide a se nou gen sa a compository de milyon ak dè milyon de tèks, ki nou kapab kounye a rechèch pou mo ak fraz diferan pous Isit la nan yon egzanp ki varye yon ti kras diferan de egzanp lan anvan Mwen te montre ou, ki se nou gen sa yo queries rechèch 3, lagè, lagè, ak pawòl Bondye a franse pou fè lagè, ki se gè. Ak nou 're chache nan 3 seksyon diferan nan baz done a total. Nan lòt mo, nan sa a sijè rechèch premye n ap sèlman chache nan USA a, nan yon sèl nan dezyèm sèlman nan UK a, ak twazyèm lan sèlman de travay ki te pibliye nan Frans. Nou wè kèk modèl enteresan deyò. Pou egzanp, nou wè dwa alantou isit la ki- Wouch, mwen messed moute aks la yon ti jan, men ou ka wè dwa nan sa a ranje isit la alantou Lagè Sivil la gen yon Spike gwo nan edisyon Ameriken an men pa tankou yon Spike gwo nan de nan lòt, ak sa a, se evidamman paske Ameriken Lagè Sivil la te rive nan pwen sa a. Nou ka wè kèk bagay fre a, men ki sa nou reyèlman sousye de ki jan nou te resevwa sa a done. M ap pran ou dèyè sèn yo nan sa a app nan yon ti jan ti kras. Yon jwe fent pwòp se si w ap travay ak sit la ak kalite vle konnen sa k ap pase sou dèyè sèn nan, ou ka louvri moute zouti yo pwomotè. Mwen pral yo dwe lè l sèvi avèk zouti pou devlope Chrome a, epi pou li ale nan sa yo ou ka fè kontwòl, chanjman, J, ak ki pran ou nan konsole a ki JavaScript. Gen yon ongle kèk isit la. Yo ka tout dwe trè itil nan sikonstans diferan, men mwen pran swen sou rezo a tab kounye a, e mwen gen aktyèlman rafrechi jwenn ki ap travay. Oh, regrèt. Li renmen bay yon egzanp o aza. Okay, nou pral itilize sa a egzanp olye Lè sa a,. Lide a se gen nan sa a API isit la, epi ou ka wè ekzakteman ki sa API la ap retounen. Sa a se sa ki aplikasyon an ap resevwa tounen soti nan API la gen voye ki mande sa. Kite m 'rale nan yon ti jan, epi nou ka fondamantalman wè li nan jis yon seri de pè valè kle nan JSON. Nan lòt mo, nou gen sa a hashmap isit la ki nan planifikasyon valè. Nan lòt mo, li nan planifikasyon ane nan valè. Nan 1765 tou sa pawòl nou okòmansman fouye pou yo itilize 90 fwa soti nan 1 milyon dola, se konsa nou ap vin tounen sa a rezilta. Li nan pa egzakteman JSON depi nou gen sa a header rezilta ti kras isit la, men avi ke sa a objè antye isit la se jis yon gwo gwo JSON pate. Nou gen yon etalaj isit la ki gen sa a eleman antye, epi ou ka wè ke eleman antye fini la, ak Lè sa a, nou gen yon lòt eleman gwo ki ale tout wout la desann nan fen a, ak ki fini isit la. Nou gen yon etalaj reyèlman gwo ak 2 objè ki nan li, ak chak nan sa yo objè se yon hashmap. Ou ka wè nan chak nan sa yo hashmaps nou gen yon kat sa a valè endèks a 0 ak valè sa a valè a nan yon lòt hashmap, ki ankò se planifikasyon valè aks X Y valè aks. Ou ka wè JSON vin yon ti jan konplike, men an jeneral, li la aktyèlman trè itil, epi li trè fasil jwenn aksè nan konpare ak lòt diferan fòm notasyon. Osi lwen ke sa n ap aktyèlman voye done API a jwenn, Mwen pral ale nan fen a tounen yon ti jan isit la. Sa a se gwo JavaScript dosye a ki nan manyen tout entè-aksyon yo nan app a entènèt, epi pou nou pa pran swen sou pi fò nan sa a, men nou fè swen sou kèk nan li. Pou egzanp, nou pran swen sou sa a fonksyon buildQuery, ak lide nan fonksyon sa a se fondamantalman li nan kap alantou paj la, lè n ap kalkile konnen ki sa ki itilizatè a vle sijè rechèch, nan lòt mo, tcheke sa yo bwat kote yo te D 'tèm rechèch yo, tcheke Y a diferan ak X valè aks yo ke yo te chwazi ak nan tout sa sòt de bagay sa, ak li a pral krache soti sa a valè rechèch, ki mwen ka Lè sa a, voye yo ale nan API la. Sa a sanble konplike, epi li se bèl konplike men ki sa mwen pral-an reyalite, mwen te deja fè sa, ki se gwo- se ke mwen pral jwenn konsole nan enprime soti egzakteman ki sijè rechèch valè ke li nan voye yo ale nan API la. Sa a se aktyèlman isit la menm. Padon, li sorti yon anpil nan bagay sa yo. Men sa se ki sa nou pran swen sou, sa a objè dwa isit la. Sa a se objè a sijè rechèch. Nan lòt mo, sa a se ekzakteman ki sa aplikasyon nan entènèt ap voye API la, e konsa se pou yo gade andedan yon ti jan, epi nou wè nou gen kèk valè isit la. Nou wè nou gen sa a ki kalite konte, ki se evènman pou chak milyon dola mo, ki se ekzakteman ki sa nou te chwazi nan aks la Y sou isit la. Sa a kote ki nan vini soti nan. Nou gen yon valè baz done, ki vle di ke gen nan kèk baz done sèten ke sa a done ki abite nan, epi nou vle gen aksè a ki done espesyalman kòm yo te opoze ak done yo ti bebe non, pou egzanp. Lè sa a, nou gen sa a valè gwoup, ki se ki di ke nou vle fouye nan ane kòm opoze a nenpòt ki lòt aks X valè. Lè sa a, nou gen yon metòd, ki gen kèk APIs pral fè bagay sa yo miltip. Nan lòt mo, sa a API kapab tou retounen lòt kalite done, men nan ka sa a, nou vle pou kat nan X valè aks Y valè aks. Sa a ki sa k ap di li fè a, e nou gen sa a rechèch limit etalaj, ki gen 2 valè. Premye a se ki sa nou wè isit la, ki se tout valè yo a genyen nan ke bwat premye ti kras nan tèt la. Nan lòt mo, nou vle gade pou batay la mo, e nou vle filtre li pa tèks angle nan literati Ameriken. Nou gen peyi sa a, ki se USA. Nou gen yon lang, ki se angle, konsa nou gen tout moun sa yo diferan pati ke yo tout di API nan egzakteman ki sa nou vle. Nou pa konnen ki sa done sa yo ke nou jwenn tounen se ankò, men nou konnen ke done a pral pran yon fòm a sèten. Sa a egzanp se sòt de sou bò konplike, epi ou pa ta nesesèman dwe sèvi ak yon API sa a konplèks, men sa a se montre ou ki nivo ki ak pouvwa nan sa ki APIs ka fè. Nan lòt mo, lè l sèvi avèk yon sistèm rechèch relativman senp nou fondamantalman gen yon bwat D ' ak yon seleksyon kèk lòt nan diferan kote. Kite m 'rale tounen soti isit la. Nou gen yon bwat D 'ak yon seleksyon kèk Metadata diferan, e nou gen aks y ak X seleksyon aks. Nou pa gen aktyèlman jaden ke anpil, epi nou ka wè trè fasil nou ap kapab sijè rechèch kèk sòt de API epi pou yo jwenn done retounen lakay yo epi Lè sa a, mete l 'nan tablo sa a, ki se Lè sa a, ale nan montre li nan yon fason itil. Fè yon gade nan yon lòt egzanp ki ta kapab yon ti jan plis abitye nan ou nèg nou pral tounen vin jwenn Facebook. Se API Facebook a rele graf la Facebook, ak fondamantalman ki sa sa vle se Facebook wè tèt li kòm sa a baz done masiv nan anpil nan diferan pati ke tout gen relasyon sèten nan chak lòt. Nan lòt mo, mwen se yon itilizatè sou Facebook, Se konsa, mwen gen yon pwofil, epi tou mwen te gen zanmi sèten, epi chak nan yo gen yon pwofil, ak chak nan zanmi m 'te gen yon miray, ki te gen kòmantè diferan sou li, ak chak nan sa yo kòmantè gen likes ak nan tout sa sòt de bagay sa. Genyen anpil bagay nan diferan pati Facebook. Li se yon API lajman konplèks, ak gen nan tòn ou kapab fè avèk li, men li la aktyèlman trè senp yo itilize. Mwen pral kòmanse soti pa ale nan graph.facebook.com / billyjanitsch, ki se non kont inik m 'yo, ak non kont ou la ap swa kèk kalite mo si ou te chwazi li, oswa li ta ka jis pou yon afè de chif yo. Ki sa nou jwenn tounen se enfòmasyon trè de baz yo. Nou wè ke mwen gen yon non premye, ki se Billy, yon non sot pase yo, ki se Janitsch. Genyen nan yon inik Facebook ID ki m 'genyen. Ou ka wè sa mwen m gason epi ke mwen gen anviwònman lang mwen nan Britanik angle. Nan lòt mo, nou ap wè enfòmasyon trè debaz isit la. Li pa twò anpil, men li ban nou yon lide sou sa ki nan la. Nou ka fè menm bagay la bay David Malan, pou egzanp. Mwen panse ke non l 'se dmalan. Nou wè David Malan gen yon ID inik. Li gen yon non, premye non, dezyèm non non, pase non. Nou menm tou nou wè ke li se gason ak ki genyen ansanm lang l 'yo US angle. Nan lòt mo, nou ap wè enfòmasyon trè debaz isit la. Koulye a, kisa k ap rive si nou eseye tcheke deyò yon lòt bagay? Se pou nou di mwen ki enterese nan sa David Malan te renmen sou Facebook. Mwen kapab fè / likes. Koulye a, nou te kouri antre nan yon pwoblèm. Nou gen kèk sòt de erè ki di yon siy aksè yo egzije pou mande pou resous sa a. Men, si ou panse sou li, ki aktyèlman fè sans paske li ta dwe etranj si ou te ka jwenn aksè chak pati sèl nan baz done Facebook a jis nan kèk sòt de API senp, dwa? Nan lòt mo, prezimableman enfòmasyon ou a pa kapab accessible pa nenpòt moun ki vle li. Sa a erè se jisteman ki sa sa vle di. Gen kèk APIs mande pou otorizasyon sèten yo nan lòd jwenn aksè nan done yo. E menm plis avanse APIs, tankou Facebook a yon sèl, yo pral mande pou otorizasyon sèten fè sèten bagay. Mwen ka wè sa a enfòmasyon debaz sou David Malan. Mwen ka wè ke li se gason, se li ki ap viv nan peyi Etazini an, men mwen pa ka vrèman wè anyen sot pase sa. Pou jwenn alantou sa a pou kounye a, Facebook te gen zouti sa a bèl ki se graf API Explorer a, ak lide nan ki se ou ka sòt de fè moute otorizasyon pou tèt ou ki baze sou pwòp kont ou ak Lè sa a, wè bagay sa yo ke espesyalman kont ou kapab wè. Pou egzanp, si m 'fè graph.facebook.com/billyjanitsch/likes- whoops, Mwen devine mwen gen rvalide siy m 'isit la. Oke. Si m 'fè pou ankò, gwo, koulye a mwen wè ke mwen jwenn sa a objè tounen ki di ke mwen renmen nouy pisin yo, ki se nan jwèt yo kategori ak jwèt. Mwen renmen mors yo, ki se nan Animal nan kategori. Sa yo se reyèl mwen fè Facebook likes. Yo ap kalite anbarasan. Men, nou ka wè ki sa a done tout retounen nan JSON. Li trè lizib. Nan lòt mo, nou gen sa a kat nan done a kèk sòt de yon etalaj, ak chak eleman nan sa a se yon etalaj hashmap ki kat non an nan yon tankou ak kategori a nan yon tankou. Chak tankou gen yon ID inik. Gen tout kalite bagay sa yo diferan nan done ke nou ka jwenn, ak si w ap enterese nan lè l sèvi avèk API a Facebook pou yon pwojè CS50 final oswa pou anyen tankou ke li nan aktyèlman byen posib. Fondamantalman ki jan ou jwenn alantou bagay la validation se Facebook sèvi ak yon sistèm yo rele OAuth, oswa Otantifikasyon Open, e mwen pa vle jwenn nan li kounye a paske OAuth oswa kalite nan diferan nan validation gen tandans varye anpil ant APIs diferan, konsa mwen te kapab pase yon bon bout tan ale sou chak youn, men yo ap aktyèlman trè klè, kifè. Si ou Google Facebook API li trè lizib. Genyen nan yon espèk tout antye. Pou egzanp, sa a se dokiman an pou Facebook API la, epi ou ka wè mwen sou paj la User, se konsa mwen ka aprann tout bagay sou kalite sa yo diferan de bagay sa yo ki disponib jwenn kòm byen lwen kòm done epi tou li otorizasyon ki diferan ki mwen bezwen yo nan lòd jwenn aksè nan yo. Kòm nou te wè, nou pa bezwen otorizasyon jwenn aksè nan non la oswa sèks la, men pi lwen pase ke nou bezwen otorizasyon pou pifò bagay sa yo. Paj sa a, ou pito, sit entènèt sa a ap tou fè w konnen kouman yo ka resevwa yon siyal pou kapab legalized tèt ou. Pifò sistèm validation itilize kèk sòt de siy ki kote ou jwenn sa a valè inik, ki se yon fisèl reyèlman long ak o aza, ak fason sa a yo ka asosye demann lan ke w ap fè avèk ou. Nan lòt mo, yo konnen ke ou pa ap fè anyen ki sispèk ak done yo. Yo konnen egzakteman sa w ap resevwa. Yo menm tou yo konnen ke ou gen pèmisyon wè enfòmasyon sa a. Si ou te fè yon app Facebook ak app ou a gen itilizatè sèten, ak moun ki itilizatè yo gen pèmèt ke app gen aksè a yon seri pati nan pwofil yo, Lè sa a, kèlkeswa sa API kle oswa siy ke ke app a lè l sèvi avèk yo pral kapab jwenn aksè done yo pou moun ki itilizatè. Sa a ta ka son konplike, men li la pa twò move, epi si ou vle sèvi ak Facebook mwen ta konseye anpil w konsidere jwe otou ak API yo. Li trè fre, ak ou kapab fè yon bann bagay sa yo diferan ak li. Si itilizatè a ba w sa yo otorizasyon ou ka menm tounen nan API la epi di mwen vle aktyèlman afiche nan miray sa a itilizatè a, oswa mwen vle fè yo afiche yon foto, ak Se poutèt sa sou manje nouvèl ou, ou pral pafwa jwenn bagay sa yo anmèdan lè li di ke zanmi ou a ap gade videyo sa a sou kèk sòt de sit etranj oswa yon bagay tankou sa. Sa a se paske sa app te akòde aksè a afiche sou miray moun sa a. Lide a an jeneral, API a Facebook se bèl konplike, men tou reyèlman itil. Definitivman vo kouran soti nan, si w ap toujou ap chèche pou yon pwojè final la. Yon lòt suite nan APIs ki mwen pral ale sou se CS50 APIs. Kite m 'rale nan isit la. CS50 gen aktyèlman mete ansanm yon seri antye nan APIs ke ou ka itilize pou yon pwojè final oswa jis pou anyen ke w ap fè. Apre sa, yo ap sitou Harvard sipò yo, epi yo varye soti nan meni an HUDS, pou egzanp, pou sa a Harvard Evènman API, ki pral kite ou gen aksè a yon lis evènman diferan ki pral sou nan Harvard ak ki sòt de bagay sa. Se konsa, nou ka klike sou nenpòt youn nan sa yo epi pou yo jwenn yon espèk pou li, ki ou pral kapab jwenn pou nenpòt ki API, ak lide a se li pèmèt ou konnen, A, espesyalman sa pou mande pou soti nan API a epi ki jan pou mande pou li. Nan lòt mo, si mwen vle tout evènman ki ap pase demen Lè sa a, mwen te gen evidamman bay li dat sa a ke mwen vle nan yon fòma sèten, ak B, li pral fè m 'konnen ekzakteman ki sa li la pral bay tounen nan m'. Li ka di mwen pral retounen ou sa a objè JSON, oswa tankou ou ka wè, gen fòma diferan. Ou ka tou retounen done yo kòm yon CSV, pou egzanp. Men, ou konnen egzakteman kouman ki done a pral gade lè ou jwenn li tounen pou ou kapab atann yo fè kèk bagay avèk li. Nou ka desann ak wè, pou egzanp, si nou vle sijè rechèch API la yo ka resevwa yon kalandriye a, Lè sa a, nou kapab itilize sa a URL an patikilye ak bay li sèten karakteristik ki fè yo pral rete an done sa yo ke nou vle egzakteman. Konsa tou, si nou vle done yo tounen nan yon fòma sèten, Lè sa a, nou ka mande l 'bay randman done a nan yon CSV, ak sa a, se jis yon lòt paramèt ke nou ap pase API la. Anpil bagay fre fè a. Mwen ta definitivman rekòmande kouran soti nan APIs la CS50. Mwen pral fè yon gade nan sa a API Manje Harvard an patikilye pou yon ti tan. Youn nan bagay mwen te aktyèlman ki fèt se sa a Harvard non sit entènèt, ki itilize API la Manje CS50 rekipere meni an HUDS pou jounen an. Ak pou moun lekòl ekstansyon, HUDS se sèvis la kote moun nan Harvard. Ki sa ou jwenn se paj sa a ki gen tout manje yo pou yon jou a, se konsa nou wè manje midi. Nou gen yon kèk kategori diferan. Nou gen pwa a ak tout estasyon farin ble a. Nou gen estasyon an diri mawon. Nou ka wè pou kolasyon nou gen bagay sa yo manje kèk. Si nou klike sou yo, Lè sa a, nou jwenn enfòmasyon an nitrisyon. Ou wè sa a se enfòmasyon ki sou nitrisyon pou chadèk, nan ka ou te mande. Se konsa, ankò, nou ap ale nan kanmarad nan fen a tounen isit la yon ti jan ak wè sa ki egzakteman sa a ap fè jwenn done sa yo. Epi li vire soti pa aktyèlman ap trè konplèks nan tout. Sa a ranpli sanble yon ti kras lèd, men kenbe nan tèt ou ke sa a se manyen sou sit wèb la an antye, ak si mwen desann nou wè chanjman sa a done fonksyon. Koulye a, jis yo dwe klè, sa a ki ekri nan CoffeeScript, ki se yon lang ke ou pwobableman pa t 'wè anvan. Men, li la bèl lizib, se konsa mwen pral mache atravè li kòm si li te pseudocode. Dat Chanjman se yon fonksyon ki nan pral pran nan sa a valè dat, epi li la tou pral pran nan yon premye, ki nou pa pran swen sou kòm anpil. Men, bagay la enpòtan an se ke li genyen dat sa a, ak dat sa a se jou a ke nou vle mande tout nan atik yo pou manje pou. Lè sa a, ou wè nou gen yon ti kras nan sentaks isit la, ki se fondamantalman analyse dat sa a nan yon fòma ki lizib. Nan lòt mo, API a mande dat la nan yon fòma a sèten. Ou pa ka jis di, 16th Novanm 2012 AD. Li pa pral konnen ki sa fè ak sa. Li vle dat la nan yon fòma espesifik. Tout sa nou ap fè isit la se bay li egzakteman ki fòma, ki se yon valè ane ak Lè sa a, yon tirè, yon valè mwa, yon lòt tirè ak valè nan dat sa a. Ak nou menm tou nou di nou vle done yo yo dwe pwodiksyon an JSON. Koulye a, nou ap fè demann sa a Ajax, e kòm mwen mansyone pi bonè, jQuery gen sa a super itil Ajax fonksyon ki tout sa ou bezwen fè se presize yon paramèt kèk desann isit la, epi li pral ba ou tounen ekzakteman ki sa ou vle. Nou ap di li ki URL la nou vle li pou yo ale nan se sa a API Manje CS50, ki nou te resevwa nan men espèk la. Nou di ke nou vle done ki nan JSON e ke nou pwal bay li sa a done ki nou te defini moute isit la. Sa a se jou a, nou vle atik yo pou manje pou. Lè sa a, tout sa nou dwe fè se defini kèk sòt de fonksyon siksè, ki se fondamantalman sa ki pase lè API an retounen ki done. Nan lòt mo, nou te pake moute tout paramèt sa yo ke nou vle, ki nan ka sa a se jou a ke nou vle li ak lefèt ke nou vle l 'nan JSON, epi nou voye li nan API a, se konsa kounye a API la ap di, oke, isit la se done ou a, mwen te resevwa l 'tounen pou ou. Nou gen fonksyon an siksè, ki vle di bay sa API la avèk siksè retounen kèk done, ki sa nou fè avèk li? Epi li sanble ke tout sa nou fè se rele sa a fonksyon meni aktyalizasyon ak tou sa li te API a tounen, se konsa nou kapab fè rechèch pou ki ak wè ke tout sa nou ap fè se lè l sèvi avèk yon pakèt moun sou sentaks nouvo isit la mete ajou HTML la ak insert sa a done nouvo. Ki sa sa pèmèt se nou gen sa yo flèch sou chak bò, epi nou ka klike sou, e kounye a nou ap chèche nan done yo pou jou apre a epi ankò pou jou apre a, ak chak fwa li nan ajou ki valè dat ak rekèt API la, vin tounen kèk done ak mete l 'nan sit la. Yon fwa ankò, ou ka wè, super, super itil. Sa a app te pran m 'yon kèk èdtan Hack yo ansanm, e mwen gen yon ti jan pi plis eksperyans, evidamman, men CS50 ou pwojè final ka gade yon bagay anpil tankou sa a. APIs yo Super pwisan pou kantite lajan an nan efò yo ke yo pran. Bagay la pase mwen pral ale sou se yon APIs kèk plis lajman. Mwen pa pral jwenn osi lwen nan yo osi lwen ke sa yo fè espesyalman, men m ap ba ou yon lide nan sa ki nan yo deyò. 2 reyèlman itil ki pòv yo, si w ap enterese nan analiz done oswa vizyalizasyon oswa yon bagay tankou sa, yo se Freebase ak Wikipedia. Wikipedia-prezimableman ou tout konnen-a se yon ansiklopedi lib sou entènèt, epi li aktyèlman gen yon API, se konsa si ou vle, pou egzanp, jwenn tout tèks yo ak atik yo pou poulp ou ka trè fasil fè sa. Jis di hey, Wikipedia API, mwen ta renmen done yo tounen tankou sa a, ak Mwen ta renmen l 'nan fòma sa a, ak atik la mwen ta renmen se poulp, ak trè vit li pral ba ou tounen enfòmasyon sa a. Sa kapab reyèlman itil si ou vle fè kèk sòt de sit sa a, se yon vizeur pi bon pou Wikipedia oswa yon bagay tankou sa. Freebase se sòt de ki similè yo, malgre se yon ti jan pi rèd osi lwen ke API. Freebase, se tankou Wikipedia nan ke li nan yon ansiklopedi sou entènèt ki gen anpil ak anpil done diferan sou tout kalite sijè diferan, Men, li la ki estoke nan yon baz done relasyon, ki se yon ti kras diferan de Wikipedia. Wikipedia gen atik li yo ak atik lye nan atik lòt, men pou pati ki pi, si ou vle done yo pou poulp, ou ale nan atik la poulp, jwenn ke done, epi ou gen yon pakèt moun sou tèks sou pyeuvr, se konsa sa a, se gwo. Freebase ap travay nan yon fason ki nan ki yon ti kras plis konplike tout bagay se ki gen rapò ak youn ak lòt. Nan lòt mo, si nou ap chèche pou poulp Lè sa a, li gen yon pakèt moun sou kategori asosye ak li. Pou egzanp, li nan yon bèt, li viv anba dlo, li gen yon tanperati kò a sèten. Mwen pa konnen. Ak tout nan kategori sa yo yo se lyen ki mennen nan lòt kote kote ou ka ale yo wè bagay sa yo ak ki kategori menm. Nan lòt mo, poulp gwoup done ki la ta gen yon ap mennen nan done yo fikse pou tout bèt, ak ki ta kite m 'deplase nan nan baz done a vrèman byen vit. Sa a ka trè itil si ou ap fè yon bagay tankou konparezon. Nan lòt mo, bay yon bagay sèten, ou vle wè ki lòt bagay li nan ki gen rapò ak ak wè sa ki lòt bagay li pa ki gen rapò ak. Sa sòt de bagay sa. Li kapab itil nan yon nimewo nan fason. Si ou ap chèche pou plis nan yon defi ak pou kapab fè kèk bagay ki pi konplèks Mwen ta konsidere pran yon gade nan Freebase API la. Men, lajman, Wikipedia se yon kote ki trè senp yo ale osi lwen ke ap resevwa enfòmasyon. Yon lòt kote ke mwen pral gade a se Last.fm, ak mwen aktyèlman pral pou yo ale nan sit la nan nan ka gen kèk moun ki pa abitye, men Last.fm se fondamantalman yon mizik gou ak sou sit entènèt rekòmandasyon. Ou kapab fè yon kont. Ou ka kòmanse mizik uploading soti nan jwè mizik ou sou sit entènèt la, ak fondamantalman li pral kòmanse ban nou rekòmandasyon mizik ki baze sou ki sa ou koute. Pou egzanp, si ou ale nan pwofil ou a nan paj-sa a se mwen- ou ka wè ou gen yon lis ki gen dènyèman te koute tren. Ou ka wè an jeneral atis pi renmen, nan tout ki sòt de bagay sa, e ankò, gen yon API gwo dèyè Last.fm,  ak ou ka itilize li fè anpil ak anpil bagay sa yo vrèman fre. Pou egzanp, mwen pral ale nan paj yon zanmi nan moun ki gen sa a Last.fm Zouti sou sit wèb. Sa a se aktyèlman yon lòt platfòm ki nan bati sou Last.fm API la, ak li fè sa yon nimewo de bagay sa yo trè enteresan. Si m 'ouvri sesyon an avèk non itilizatè m' yo, pou egzanp, Mwen ka mande l 'bay jenere yon gwo nwaj tag, pou egzanp, epi ki sa ki nan pral fè se bay m 'tounen yon imaj de tout estil yo diferan ak ki sòt de bagay ke mwen renmen pou koute. Kouman yo li fè konsa? Trè fondamantalman li nan li di l Last.fm API la isit la nan sa a itilizatè. Mwen ta renmen konnen genre a nan chak chante yo ke yo te janm tande sa mwen di, epi ou ka fè sa pa fè yon trè senp Ajax rele Last.fm API la. Ou ap jwenn tounen yon lis gwo, ak Lè sa a, se evidamman kèk bagay lòt ap fèt vire l 'nan yon gwo nwaj mo, men ou ka wè an jeneral li trè fasil jwenn aksè nan ak trè fasil yo itilize. Vrèman bèl pou yon nimewo de bagay sa yo. Mwen panse ke la sou tout sa, m'a di an jeneral. Youn nan bagay dènye mwen pral mansyone sou APIs an jeneral se ke ou pral pafwa kouri antre nan yon bagay yo rele to limite, ak lide nan to limite se ou pa vle abize APIs. Nan lòt mo, li vrèman bèl ki yon anpil nan sit entènèt sa yo gen APIs ke ou ka ale nan epi sèvi ak yo pou gratis. Sepandan, si ou ap fè dè milyon oswa dè milya de demann chak jou, pou egzanp, si w ap kole nan yon riban enfini ki nan enfiniman rekèt kèk sòt de API ak vin tounen yon kantite lajan gwo done, evidamman sa a, se pa bon konsa, sa ki yon anpil nan APIs fè se te to enterè sa a limite karakteristik ki di ou ka sèlman fè 1,000 demann pou chak jou pou chak adrès IP oubyen yon bagay tankou sa. Men, si w ap fè yon anpil nan tès ak ki sòt de bagay sa, ou pral pafwa kouri antre nan sa, epi toudenkou li pral fèmen ou koupe epi di pa gen okenn, mwen pa ban nou nenpòt ki plis done. Ki sa ou vle fè se jwe pa regleman-yo. Ou vle asire w ke ou li espèk nan API ak anpil atansyon. Li si li genyen sèten règ ki tache sou li, tankou ou ka sèlman fè queries X pou chak jou oswa ou ka sèlman gen aksè a yon pati nan baz done a yon sèten kantite fwa oswa yon bagay tankou sa ou vle asire w ke ou bwa sa. Pandan tout tan menm jan ou jwe nan règ sa ou pral pwobableman gen yon moman vrèman bèl lè l sèvi avèk APIs. Takeaway an jeneral ou an se APIs yo se reyèlman, reyèlman itil. Genyen yon API pou prèske sèvis nenpòt gwo wèb yo deyò. Bèl anpil nenpòt ki pati nan Suite la Zouti Google, Google Maps, Google Latè, Gmail, Google Kalandriye, nan tout bagay sa yo gen APIs. Ou ka itilize yo a tou de done jwenn nan sèvè a epi voye done nan sèvè a. Nan lòt mo, si ou te vle fè yon app kalandriye ki ka mete ajou Google Kalandriye yon moun, gen nan yon API pou sa. Si ou vle fè yon bagay ki a pral di w ki kote ki kote yon adrès sèten se ou ka itilize Google Maps API la pou sa. APIs yo fantastikman ki itil, epi yo ap toupatou. Si w ap enterese nan kèk sòt de lide, gen nan pwobableman yon API ki gen rapò ak ke ou ka itilize yo ka resevwa yon anpil nan done trè vit epi anpil tou senpleman. Si w ap toujou ap chèche pou yon pwojè oswa si ou jis vle yo jwe nan ak yon bagay an jeneral, nan APIs yo definitivman vo fè. Di Bondye mèsi, epi mwen kontan reponn nenpòt kesyon ke ou nèg ka genyen. Okay, mèsi anpil. [CS50.TV]