[Powered by Google Translate] [Seminar] [Introduzzjoni A Programmer li APIs] [Billy Janitsch] [Università ta 'Harvard] [Tommy MacWilliam] [Dan huwa CS50.] [CS50.TV] Hi, kulħadd, jien Billy, u llum jien ser tkun jitkellem dwar APIs, jew interfaces ta 'programmazzjoni applikazzjoni, speċifikament fil-kuntest ta 'CS50 proġetti finali u dik it-tip ta' ħaġa. B'mod ġenerali dak li hija API? F'termini wesgħin ħafna, huwa tip ta 'bniedem tan-nofs li jippermetti 2 biċċiet ta 'softwer li jikkomunikaw ma' xulxin. Li l-tip ta 'definizzjoni wiesgħa ħafna u mhux li rilevanti għal dak li aħna qed tfittex fuq. Dak li aħna verament trid huwa xi tip ta 'triq tan-nofs utli li jikkomunikaw ma 'xi tip ta' database x'imkien. Hawn ċart, u bażikament l-idea hija li aħna applikazzjoni, u aħna rridu nġibu data minn database, imma aħna ma rridux li jikkonsultaw id-database direttament. Minflok irridu li jmorru permezz ta 'dan it-tip ta bniedem tan-nofs, l-API. L-idea wara dan huwa n-numri 2 u 3 fuq il-mappa huma t-tnejn ser ikunu kumplikati ħafna u messy. Fi kliem ieħor, meta l-API hija mistoqsi-database, huwa probabbilment se tkun qed tuża tabelli SQL u kollha ta 'dik it-tip ta' għalf, u aħna stajt tgħallmu ftit dwar dan fil CS50, iżda b'mod ġenerali, inti stajt ndunat li huwa daqsxejn ta 'uġigħ. Jiġrilha ħafna, ħafna kkumplikata u messy, speċjalment meta int tagħmel mistoqsijiet kumplessi u li tip ta 'ħaġa. Dak li aħna verament trid huwa xi tip ta 'mod utli u sempliċi biex tikseb dik id-data, u li l-idea wara numri 1 u 4 fuq il-karta. Fi kliem ieħor, irridu mod verament sempliċi li tgħid il-API dak li tikseb għalina u mod verament sempliċi biex jiksbu dik id-data lura. Hemm mod wieħed ewlieni li din id-data hija normalment mibgħuta u riċevuti, li huwa JSON, jew Notazzjoni Għan JavaScript. Li jistgħu jvarjaw xi ftit safejn kif inti tibgħat it-talba lill-API. Fi kliem ieħor, jekk inti tixtieq xi ċertu ammont ta 'data, kif inti tgħid l-API sabiex tikseb dik id-data jista 'jvarja xi ftit. Normalment dan jinvolvi tagħmel xi tip ta 'talba netwerk. Fi kliem ieħor, aċċess xi tip ta 'URL li għaddej biex tgħid l-API eżattament dak li trid, iżda d-data hija kważi dejjem jintbagħtu lura, fi kliem ieħor, numru 4 fi JSON. X'inhu JSON eżattament? As I said, Notazzjoni Għan JavaScript. Huwa bażikament l-istandard universali sabiex tikkomunika u tirċievi informazzjoni. L-idea hija li inti għandek dawn il-kategoriji 3 ta 'affarijiet. Inti għandek arrays, hashmaps, u primitives. Arrays u hashmaps inti stajt ħares lejn ftit fil CS50, imma inti stajt gotten tip ta 'sens strett ħafna ta' dak li huma. Fi kliem ieħor, ma 'arrays inti taf li dawn qed tip marbuta, sabiex inti biss għandek wieħed tip ta 'tip li tmur madwar il-firxa sħiħa. JSON hija ħafna aktar klementi ma 'dak it-tip ta' ħaġa. Bażikament l-idea hija li inti tibni dan l-oġġett, li jista 'jkun magħmul minn xi wieħed minn dawn l-affarijiet 3 u jistgħu jiġu magħmula minn dawk multipli minnhom, u jistgħu jiġu nested. Tip Hawn ta eżempju ta 'JSON, li huwa dawn parentesi kaboċċi hawn jirrappreżentaw hashmap tiegħek, u hashmap hija bażikament immappjar minn xi tip ta 'ċavetta għal xi tip ta 'valur. Int ser ikollok tara hawnhekk li aħna għandna l-muftieħ proprjetajiet, u li l-immappjar fuq firxa, li huwa dan il-ħaġa sħiħa. Naraw element ieħor ta 'l-hashmap, li hija din isAwesome ewlieni, li mapep għal valur primitive ta veru, fi kliem ieħor, Boolean. Primitives jistgħu jkunu kordi. Dawn jistgħu jiġu interi. Dawn jistgħu jiġu bools, xi ħaġa bħal dik. U inti tara l-kontenut ta 'dan array li l-punti proprjetajiet li tkun 2 kordi fiha, awto-simili u mill-isbaħ. Dawk huma 2-proprjetajiet ta 'JSON, u naraw li JSON huwa tal-biża. Biex tħares lejn dak ftit aktar mill-qrib jien ser jinbena eżempju aktar kumplessa ta 'JSON hawn. Nibdew bl-firxa, per eżempju, biss firxa vojta. Imma dak li tip ta 'boring, hekk aħna qed tmur biex jimlew it up a bit, u kif għidt, arrays fil JSON huma tip marbuta, hekk aħna tista 'wkoll ikollha string hawnhekk, li huwa hi, u li l-ieħor element ta 'dik array. U bl-istess mod, nistgħu żid hashmapping hawn, li se jkollhom mappings ftit. Huwa ser ikollhom immappjar mill-isem tal-Billy sekwenza. Għandna immappjar minn isem li Billy, u għandna immappjar ta ' kulur favorit għal ikħal. Li bażikament eżempju tajjeb ta 'JSON. Huwa tip ta 'gets fis-Whoops, jeħtieġ virgola hemm' kollha tal-partijiet differenti ta 'dan. Għal darb'oħra, mhuwiex tip marbuta fil-livelli kollha, sabiex inti jista 'jkollhom xi tip ta' tipi ġewwa xi ħaġa li trid, u l-idea hija li huwa awto-simili. Fi kliem ieħor, dan id-dritt hawnhekk hija oġġett JSON, kif dan il-ħaġa sħiħa, kif huwa biss dan, sabiex inti tista 'jkollha primitive tkun oġġett, firxa jkun oġġett jew hashmap jkun oġġett. Kif inti tista 'tip ta' tara, JSON huwa tassew, tassew utli li huwa tant versatili. Inti jista 'jkollhom kwalunkwe data possibbli li inti tista' jikkonċepixxu maħżuna fil JSON. Li jagħmilha lingwa tassew sbieħ għall-użu ma APIs minħabba li huwa pjuttost ħafna ifisser li x'ikun data li trid hemm għaddej li jkun hemm xi mod biex jiksbu lura fil JSON. A proprjetajiet ftit li jagħmlu JSON partikolarment tajba għal dan it-tip ta 'ħaġa. Kif tistgħu taraw, meta mqabbla ma 'ħafna affarijiet li inti ħadthom ilhom jaħdmu magħhom CS50 huwa relattivament faċli ħafna biex jinqara u wkoll ferm faċli biex jiktbu. Tista 'inċiż dan jitwettaq jekk inti tixtieq, bħal I kienet tagħmel f'dan eżempju, li tagħtik sbieħ, verżjoni pretty li tista 'tara verament tajjeb. Iżda barra minn hekk, huwa wkoll faċli biex jaqraw u jiktbu għal kompjuter. Fi kliem ieħor, huwa faċli biex parse u faċli biex jikkodifikaw, li jfisser li huwa pjuttost malajr kemm jista 'qari l-informazzjoni huwa kkonċernat, u JSON jista 'jiġi ġġenerat verament malajr. Huwa wkoll ferm faċli biex taċċessaha partijiet differenti tal JSON u li tip ta 'ħaġa. Li sbieħ, u barra minn hekk, il-fatt li huwa self-istess, fi kliem ieħor, il-fatt li inti jista 'jkollhom JSON fil JSON fi JSON huwa tassew sbieħ għall-ħażna tad-data. Parti oħra li hija ġeneralment verament utli fil-ħidma ma APIs huwa jQuery. You ħadthom tgħallmu ftit tal-JavaScript, li huwa mod sabiħ li jimmanipulaw HTML u CSS fuq websajt. Iżda tista tip ta 'tkun uġigħ għall-kodiċi fil-JavaScript sempliċi, aktar minħabba JavaScript huwa lingwa verbose verament. Int għandek jitgħallmu ħafna ta 'sintassi, u biss biex tagħmel affarijiet sempliċi ħafna hija tieħu ħafna ta 'kodiċi, hekk jQuery hija librerija għall JavaScript. Fi kliem ieħor, huwa fajl JavaScript li inti tista 'tagħbija u mbagħad jużaw l-funzjonijiet jQuery biex tagħmel ċerti affarijiet. U jQuery bażikament tagħmel il-ħajja tiegħek lott kollu aktar faċli. Hija tissemplifika dak li jieħu mijiet ta 'linji fl JavaScript sa ftit linji fil-jQuery. Huwa partikolarment utli jekk inti qed tuża APIs għaliex ġeneralment kif inti ser tkun aċċess APIs huwa billi tagħmel talbiet Ajax, u jiena nemmen David ikun semma fid lecture li Ajax talbiet huma ġeneralment meta int tagħmel talba netwerk għal xi tip ta 'server u jkollna lura xi tip ta 'data u l-aġġornament ta' paġna istantanju. Billi JavaScript sempliċi li se jieħu n-numri crazy ta 'linji sabiex jivvalidaw kollha tal-intestaturi u jagħmlu kollha ta 'dik it-tip ta' għalf, jQuery għandu funzjoni verament sempliċi imsejjaħ Ajax, u kull ma għandek tagħmel fil Ajax huwa jagħti l-parametri li inti tixtieq li tagħti l-API, il-post ta 'l-API u kwalunkwe tip ieħor ta' għażliet li inti tixtieq li jiġi kkonfigurat. Huwa tassew, tassew sbieħ u utli ħafna għal dan it-tip ta 'ħaġa. Li kollox jeħtieġ li nibdew jkollna idejn tagħna maħmuġin fil APIs. Jien ser iġibu ftit eżempji u tesplora proprjetajiet differenti tagħhom u għaliex dawn qed utli għal tipi differenti ta 'affarijiet. L-ewwel ħaġa I ser attwalment nuruk hija xi ħaġa li jien jaħdmu fuq fil lab riċerka tiegħi, li hija Viewer Ngram, u bażikament l-idea ta 'Viewer Ngram huwa inti tista' tfittex għal xi tip ta 'kelma jew frażi u tara kemm ta 'spiss huwa deher fil sett ta' test matul iż-żmien. Dan l-eżempju hawn huwa dan is-sett tad-data ta 'trabi li twieldu fi New York bejn 1920 u 2000. Nistgħu tfittxija, per eżempju, għall-Jennifer isem, u naraw li qabel l-1960 huwa verament ma kienx użat kollha li ħafna, u mbagħad kif aħna jsibu rwieħhom snin aktar tard huwa użat isiru aktar u aktar. Nistgħu wkoll tagħmel paraguni, hekk jekk inqabblu Jennifer għal, per eżempju, Thomas, nistgħu naraw Thomas kien pjuttost prevalenti matul l-istorja, billi Jennifer huwa isem aktar reċenti. Nistgħu nagħmlu dan it-tip ta 'ħaġa. Kif taħdem din l-applikazzjoni? Bażikament, hija taħdem permezz ta 'API. Fi kliem ieħor, għandna ċerti parametri hawn. Għandna l-parametri ta 'dak li aħna qed attwalment tiftix għal, li huma dawn l-ismijiet, u allura għandna proprjetajiet oħra ftit, bħall-assi Y u l-assi X. Tista 'tara għandna ftit għażliet differenti safejn il- Riżoluzzjoni ħin biex jintuża u li tip ta 'ħaġa. Aħna dawn l-għażliet safejn liema data aħna fil-fatt tixtieq mid-database, u aħna rridu nġibu dik id-data 'lura b'xi mod utli. Normalment, jekk konna juri dubji-database direttament ikun sort ta jkunu uġigħ biex tagħmel għaliex preżumibbilment din id-data dwar ismijiet tat-trabi jgħix f'xi database x'imkien, u jkun tassew ikkumplikata li jkollhom mistoqsija manwalment u jiddeċiedi eżattament liema data li jirritornaw. Fi kliem ieħor, aħna biss jimpurtahom Jennifer u Thomas f'dan il-każ, u aħna biss jimpurtahom fuq fus partikolari u kollha ta 'dik it-tip ta' għalf. Kif nistgħu tikseb madwar dan? Biex ħaffer din API ftit aktar I ser nuruk eżempju ieħor ta 'din il-pjattaforma li juża sett ta 'dejta kemmxejn differenti. Dan is-sett tad-data, minflok jiġu ismijiet tat-trabi, huwa attwalment biss l kollu print database pubblikazzjoni ta 'Librerija Miftuħ, li huwa sors ġgant ta 'testi ppubblikati matul l-aħħar 100 sena jew hekk. L-idea hija li għandna dan compository ta 'miljuni u miljuni ta' test, li nistgħu issa tiftix għal kliem differenti u frażijiet pulzieri Hawn eżempju li tvarja ftit differenti mill-eżempju ta 'qabel I wera inti, li huwa għandna dawn tfittxija 3, , gwerra gwerra, u l-kelma Franċiża għal gwerra, li huwa Guerre. U aħna qed tfittex fi żmien 3 sezzjonijiet differenti tad-database totali. Fi kliem ieħor, din il-mistoqsija 1 aħna qed biss tiftix fl-Istati Uniti, fit-tieni waħda biss fir-Renju Unit, u t-tielet biss minn xogħlijiet ippubblikati fi Franza. Naraw xi xejriet interessanti jitfaċċaw. Per eżempju, naraw id-dritt madwar hawn li- Oops, I messed up-assi ftit, imma int tista 'tara dritt f'dan il-firxa hawn madwar il-Gwerra Ċivili hemm spike kbira fil-edizzjoni Amerikana iżda mhux tali spike kbira fil-tnejn l-oħra, u li ovvjament għaliex -Gwerra Ċivili Amerikana li kien qed jiġri f'dak il-punt. Nistgħu naraw xi għalf jibred hemmhekk, imma dak li aħna verament jimpurtak huwa kif sirna din id-data. I ser tieħu inti wara l-kwinti f'dan app fi ftit. A trick pulita hija jekk int taħdem mal-sit u t-tip ta 'trid tkun taf x'inhu għaddej wara l-kwinti, inti tista 'tiftaħ l-għodod iżviluppatur. Jien ser tkun qed tuża għodda iżviluppatur Chrome, u biex jiksbu għal dawk inti tista 'tagħmel, kontroll shift, J, u li tieħdok għall-console JavaScript. Hemm tabs ftit hawn. Dawn kollha jistgħu jkunu pjuttost utli taħt ċirkostanzi differenti, iżda I kura dwar in-netwerk tab dritt issa, u I attwalment jkollhom li jġedded biex tikseb dak tax-xogħol. Oh, sorry. Hija jħobb jagħti eżempju każwali. Okay, aħna ser tuża dan l-eżempju minflok imbagħad. L-idea hija hemm dan API hawn, u tista 'tara eżattament dak li l-API huwa jirritorna. Dan huwa dak li l-applikazzjoni tkun qed terġa 'lura mill-API li bagħat din it-talba. Let me zoom fi ftit, u nistgħu bażikament tara huwa biss sensiela ta 'pari valur ewlenin fil JSON. Fi kliem ieħor, għandna dan hashmap hawn li l-immappjar valuri. Fi kliem ieħor, huwa mapping snin għall-valuri. Fil 1,765 kwalunkwe kelma aħna inizjalment mfittxija tkun użata 90 darbiet minn 1 miljun, hekk aħna jkollna lura dan ir-riżultat. Mhuwiex eżattament JSON peress li għandna din header riżultat ftit hawn, iżda avviż li dan l-oġġett kollu hawnhekk huwa biss kbir big blob JSON. Għandna firxa hawn li fih dan l-element kollu, u tista 'tara li l-element kollu jispiċċa hemmhekk, u mbagħad għandna ieħor element kbir li tmur it-triq kollha sa l-aħħar, u li truf hawn. Għandna firxa verament kbir ma '2 oġġetti fiha, u kull waħda minn dawn l-oġġetti hija hashmap. Tista 'tara fi ħdan kull waħda minn dawk hashmaps għandna immappjar ta 'dan il-valur indiċi għal 0 u l-valur dan il-valur għall-ieħor hashmap, li għal darb'oħra huwa immappjar valuri assi X għall-valuri assi Y. Tista 'tara JSON gets ftit ikkumplikata, iżda b'mod ġenerali, huwa attwalment utli ħafna, u huwa faċli ħafna li l-aċċess meta mqabbla ma ' forom differenti oħra ta 'notazzjoni. Safejn dak li aħna qed attwalment tintbagħat data lill-API sabiex tikseb, Jien se jmorru fil-aħħar lura ftit hawn. Dan huwa l-fajl JavaScript kbir li s immaniġġjar kollha ta 'l-interazzjonijiet ta' l-app-web, u hekk aħna ma jimpurtahom dwar aktar ta 'dan, iżda aħna do kura dwar xi wħud ta' dan. Per eżempju, aħna kura dwar din il-funzjoni buildQuery, u l-idea ta 'din il-funzjoni huwa bażikament huwa tfittex madwar il-paġna, jidhru dak l-utent irid mistoqsija, fi kliem ieħor, verifika dawn il-kaxxi fejn stajt input termini ta 'tiftix tagħhom, verifika tal-Y differenti u X valuri assi li ħadthom magħżula u kollha ta 'dik it-tip ta' ħaġa, u li għaddej biex bżiq dan il-valur mistoqsija, li I jistgħu mbagħad tibgħat off għall-API. Dan jidher ikkumplikat, u huwa pjuttost ikkumplikata imma dak li jien ser tagħmel fil-fatt, jien diġà tagħmel dan, li huwa kbir ' hija li jien ser tikseb l-console biex jistampa eżattament dak il-valur query li huwa jibgħat off għall-API. Li l-fatt dritt hawn. Jiddispjacini, dan outputs ħafna affarijiet. Imma dan huwa dak li aħna kura dwar, dan l-oġġett dritt hawn. Dan huwa l-oġġett mistoqsija. Fi kliem ieħor, dan huwa eżattament dak li l-applikazzjoni tal-web hija li jibgħat lill-API, u hekk ejja nħarsu ġewwa ftit, u naraw għandna valuri ftit hawn. Naraw aħna għandna dan it-tip għadd, li hija okkorrenzi kull miljun kliem, li huwa eżattament dak li konna magħżul fl-assi Y hawn fuq. Li meta li l-ġejjin minn. Għandna valur database, li jfisser li hemm xi database ċerti li din id-data tkun qed tgħix fi, u rridu li jkollhom aċċess dik id-data speċifikament kif oppost għad-data ismijiet tat-trabi, per eżempju. Imbagħad għandna dan il-valur gruppi, li huwa qal li aħna rridu li tfittxija minn sena għall-kuntrarju kwalunkwe valur ieħor assi X. Imbagħad għandna metodu, li xi wħud APIs se tagħmel affarijiet multipli. Fi kliem ieħor, din API tista 'wkoll jirritornaw tipi oħra ta' data, iżda f'dan il-każ, irridu li l-immappjar ta 'valuri assi X għall-valuri assi Y. Dak hu li huwa javżak li tagħmel hemmhekk, u għandna dan array limiti tfittxija, li fih 2-valuri. L-ewwel waħda hija dak li naraw hawnhekk, li hija kollha tal-valuri li jinsabu fi ħdan il-kaxxa ftit 1 fil-quċċata. Fi kliem ieħor, irridu nħarsu għall-battalja kelma, u rridu li iffiltra billi test Ingliż fil-letteratura Amerikana. Aħna f'dan il-pajjiż, li huwa l-Istati Uniti. Għandna lingwa, li hija l-Ingliż, hekk aħna kollha ta 'dawn il-partijiet differenti li huma kollha javżak l-API eżattament dak li rridu. Aħna ma jaf x'inhi l-informazzjoni li għandna jiksbu lura għadu, iżda nafu li d-data ser jieħu ċertu forma. Dan l-eżempju huwa tip ta 'fuq in-naħa ikkumplikata, u inti ma tkunx neċessarjament tkun qed tuża API dan il-kumpless, iżda dan huwa biex turi li inti l-firxa u l-qawwa ta 'dak APIs jistgħu jagħmlu. Fi kliem ieħor, permezz ta 'sistema mistoqsija relattivament sempliċi aħna bażikament ikollhom kaxxa input ma 'seletturi oħra ftit f'postijiet differenti. Let me zoom lura out here. Għandna kaxxa input ma 'selezzjonijiet ftit metadata differenti, u għandna assi Y u selezzjonijiet assi X. Aħna ma attwalment ikollhom oqsma li ħafna, u nistgħu naraw faċilment aħna kapaċi li jsaqsu xi tip ta 'API u tikseb data b'lura u mbagħad poġġih fil din it-tabella, li mbagħad se display b'mod utli. Biex tħares lejn eżempju ieħor li jista 'jkun xi ftit aktar familjari inti guys aħna qed tmur li jduru biex Facebook. API Facebook huwa msejjaħ il-Grafika Facebook, u bażikament dak li tfisser hija Facebook jara lilu nnifsu bħala din id-database enormi ta 'lottijiet ta' partijiet differenti li kollha għandhom ċerti relazzjonijiet ma 'xulxin. Fi kliem ieħor, jien utent fuq Facebook, so I jkollhom profil, u Għandi wkoll ħbieb ta 'ċerti, u kull wieħed minnhom għandu profil, u kull wieħed mill-ħbieb tiegħi għandha ħajt, li għandha l-kummenti differenti fuqha, u kull wieħed minn dawk il-kummenti għandha jħobb u kollha ta 'dik it-tip ta' ħaġa. Hemm lottijiet ta 'partijiet differenti li Facebook. Huwa API immensament kumpless, u hemm tunnellata inti tista 'tagħmel dan, iżda huwa attwalment pjuttost sempliċi biex jintuża. Jien ser tibda billi tmur graph.facebook.com / billyjanitsch, li huwa l-isem tiegħi kont uniku, u l-isem kont tiegħek jew se jkun xi tip ta 'kelma jekk inti għażilt dan, jew jista' jkun biss sensiela ta 'numri. Dak li aħna terġa 'lura hija informazzjoni pjuttost bażiku. Naraw li għandi l-ewwel isem, li huwa Billy, isem l-aħħar, li hija Janitsch. Hemm ID Facebook uniku li għandi. Tista 'tara li jien raġel u li għandi setting lingwa tiegħi li British Ingliż. Fi kliem ieħor, aħna qed tara informazzjoni bażika ħafna hawn. Mhuwiex wisq, iżda dan ma tagħtina idea ta 'x'hemm hemmhekk. Nistgħu nagħmlu l-istess ħaġa li David Malan, per eżempju. Naħseb l-isem tiegħu huwa dmalan. Naraw David Malan għandha ID unika. Huwa għandu l-isem, l-ewwel isem, isem tan-nofs, isem l-aħħar. Naraw ukoll li hu raġel u għandha lingwa sett tiegħu lill-US bl-Ingliż. Fi kliem ieħor, aħna qed tara informazzjoni pjuttost bażiku hawn. Issa, dak li jiġri jekk aħna nippruvaw biex jiċċekkjaw xi ħaġa oħra? Ejja ngħidu jien interessati fil dak David Malan ma gustado fuq Facebook. I tista 'tagħmel / jħobb. Issa aħna ħadthom run fis-problema. Imxejna ltqajna xi tip ta 'żball li tgħid li token aċċess huwa meħtieġ li titlob din ir-riżorsa. Imma jekk inti taħseb dwarha, li attwalment jagħmel sens għaliex ikun stramb jekk inti tista 'aċċess kull parti waħda ta' database Facebook biss minn xi tip ta 'l-API sempliċi, id-dritt? Fi kliem ieħor, preżumibbilment informazzjoni tiegħek ma tistax tiġi aċċessata minn kulmin jixtieq dan. Dan l-iżball huwa preċiżament dak li tfisser. Xi APIs jeħtieġu permessi ċerti sabiex ikun hemm aċċess tad-data tagħhom. U APIs saħansitra aktar avvanzati, bħall-Facebook waħda, se jeħtieġu permessi ċerti li tagħmel ċerti affarijiet. I jista 'jara din l-informazzjoni bażika dwar David Malan. I jista 'jara li hu raġel u li jgħix fl-Istati Uniti, imma ma nistax verament tara xejn passat li. Biex tikseb madwar dan għal issa, Facebook għandha din l-għodda sbieħ li hija l-Explorer graff API, u l-idea ta 'dan huwa inti tista sort ta tpatti permessi għall innifsek ibbażata fuq il-kont tiegħek u mbagħad ħsieb affarijiet li speċifikament kont tiegħek jista 'jara. Per eżempju, jekk I do graph.facebook.com/billyjanitsch/likes- Whoops, I raden I għandhom jerġgħu jivvalidaw token tiegħi hawn. Okay. Jekk nagħmel dan mill-ġdid, kbira, issa nara li niġi dan l-oġġett lura li jgħid li I simili taljarini pool, li huma fil-Logħob kategorija u Ġugarelli. I simili walruses, li huma fil-Annimali kategorija. Dawn huma tipi attwali tiegħi Facebook. Huma qed tip ta 'embarrassing. Iżda nistgħu naraw din id-data hija kollha lura fil JSON. Huwa pjuttost tinqara. Fi kliem ieħor, għandna dan mapping ta 'data għal xi tip ta' firxa, u kull element ta 'din array huwa hashmap li mapep l-isem ta 'simili u l-kategorija ta' simili. Kull simili jkollu ID unika. Hemm kull xorta ta 'affarijiet differenti ta' data li nistgħu jiksbu, u jekk int interessat fl-użu tal-API Facebook għal proġett finali CS50 jew għal xi ħaġa bħal dik huwa attwalment pjuttost doable. Bażikament kif inti tikseb madwar il-ħaġa awtentikazzjoni hija Facebook juża sistema msejħa OAuth, jew Awtentikazzjoni Open, u jien ma rridu nġibu fis dan issa għaliex OAuth jew it-tip differenti ta 'awtentikazzjoni tendenza li jvarjaw ħafna bejn APIs differenti, so I jistgħu jqattgħu żmien twil li jmorru fuq kull wieħed, iżda dawn qed attwalment pjuttost ta 'spjegazzjoni. Jekk inti API Facebook Google huwa ħafna tinqara. Hemm spec sħiħa. Per eżempju, dan huwa l-dokumentazzjoni għall-API Facebook, u tista 'tara jien fuq il-paġna Utent, so I jistgħu jitgħallmu kollha dwar it-tipi differenti ta' affarijiet li huma disponibbli biex tinkiseb data kemm jista ' u wkoll l-permessi differenti li għandi bżonn biex aċċess għalihom. Kif rajna, ma kellniex bżonn permessi għall-aċċess l-isem jew l-ġeneru, imma lil hinn minn dik jeħtiġilna permessi għal aktar affarijiet. Din il-paġna, jew minflok, din il-websajt se jgħidulek kif għandek tikseb token biex ikunu jistgħu jawtentikaw yourself. Sistemi ta 'awtentikazzjoni Ħafna mill-użu xi tip ta' token fejn ikollok dan il-valur uniku, li huwa string verament twila u każwali, u li mod kif dawn jistgħu jassoċjaw it-talba li int tagħmel miegħek. Fi kliem ieħor, huma jafu li int ma tagħmel xi suspett mad-dejta tagħhom. Huma jafu eżattament dak li qed jkollna. Huma jafu wkoll li inti għandek permess biex tara li l-informazzjoni. Jekk inti ħadna app Facebook u app tiegħek ċerti utenti, u dawk l-utenti ppermettew li app għall-aċċess ċerti partijiet tal-profil tagħhom, allura x'ikun API ewlenin jew token li dan app qed tuża ser ikunu jistgħu jkollhom aċċess għad-data għal dawk l-utenti. Dan jista 'ħoss ikkumplikat, iżda mhux wisq ħażina, u jekk inti tixtieq li tuża Facebook nixtieq jirrakkomanda ħafna li inti jikkunsidraw playing madwar mal API tagħhom. Huwa ħafna jibred, u inti tista 'tagħmel ħafna affarijiet differenti magħha. Jekk l-utent għotjiet inti dawn il-permessi inti tista 'saħansitra tmur lura għall-API u jgħidu Irrid li attwalment post għal ħajt dan l-utent, jew I jridu li jkollhom magħhom post ritratt, u hu għalhekk li fuq għalf aħbarijiet tiegħek inti ser kultant tikseb dawk l-affarijiet annoying qal ħabib tiegħek jaraw dan il-video fuq xi tip ta 'sit stramb jew xi ħaġa bħal dik. Dak għax dak app ngħatat aċċess għall-post fuq il-ħajt tal-persuna. L-idea ġenerali, l-API Facebook huwa pjuttost ikkumplikata, iżda wkoll verament utli. Definittivament jiswew ikkontrollar out jekk int xorta tfittex għal proġett finali. Ieħor suite ta 'APIs li jien se jmorru fuq huwa CS50 APIs. Let me zoom hawn. CS50 tkun attwalment jitqiegħdu flimkien sensiela sħiħa ta 'APIs li tista 'tuża għal proġett finali jew biss għal xi ħaġa li int tagħmel. U dawn qed l-aktar Harvard relatati, u dawn ivarjaw mill-menu festuca, per eżempju, għal dan API Avvenimenti Harvard, li ser tavżak aċċess lista ta ' avvenimenti differenti li huma għaddejjin fil-Harvard u li tip ta 'ħaġa. U hekk aħna tista 'tikklikkja fuq kwalunkwe wieħed minn dawn u jiksbu spec għal dan, li inti ser ikunu jistgħu jsibu għal kull API, u l-idea hija ihallik taf, A, speċifikament dak li titlob mingħand l-API u kif titolbu. Fi kliem ieħor, jekk irrid l-avvenimenti kollha li qed jiġri għada allura stajt ltqajna biex ovvjament jagħtuh dik id-data li nixtieq f'format partikolari, u B, se tgħidli eżattament dak li għaddej biex jagħti lura lili. Hija se ngħid jien ser jirritorna inti dan l-oġġett JSON, jew simili tistgħu taraw, hemm formati differenti. Tista 'wkoll jirritorna d-data bħala CSV, per eżempju. Imma inti taf eżattament kif li d-data ser tfittex meta ikollok lura sabiex inti tista 'tistenna li tagħmel ċerti affarijiet magħha. Nistgħu iscroll u ara, per eżempju, jekk irridu li jsaqsu l-API tikseb kalendarju, allura nistgħu nużaw dan il-URL partikolari u tagħtiha ċerti parametri li huma se jkunu l-informazzjoni li rridu eżattament. U bl-istess mod, jekk irridu li l-informazzjoni lura fil ċertu format, allura nistgħu jitlobha output d-data ta 'CSV, u li jinsab biss parametru ieħor li aħna qed tgħaddi lill-API. Lottijiet ta 'affarijiet jibred li jagħmlu hemmhekk. Nixtieq definittivament jirrakkomanda tiċċekkja l-APIs CS50. Jien ser tħares lejn dan API Ikel Harvard b'mod partikolari għal ftit. Ħaġa waħda Stajt attwalment disinjati hija din il-websajt NOMS Harvard, li juża l-API Ikel CS50 sabiex tkun irkuprata l-menu festuca għall-jum. U għal persuni iskola estensjoni, festuca huwa s-servizz dining fil-Harvard. Dak ikollok huwa din il-paġna li fih kollha ta 'l-ikliet għall-jum, hekk naraw ikla. Għandna kategoriji differenti ftit. Għandna l-fażola u l-istazzjon ħabba sħiħa. Għandna l-istazzjon tar-ross ismar. Nistgħu naraw għall brunch għandna dawn l-oġġetti tal-ikel ftit. Jekk aħna tikklikja fuqhom, allura irridu jiksbu l-informazzjoni tan-nutrizzjoni. You see dan huwa l-informazzjoni tan-nutrizzjoni għall-grejpfrut, fil-każ li inti mintix kienu. U għalhekk għal darb'oħra, aħna qed tmur biex pari fl-aħħar lura hawn ftit u ara dak eżattament dan qed tagħmel biex tikseb din id-data. U jirriżulta li ma attwalment jkunu kumplessi ħafna fil-livelli kollha. Dan il-fajl jistenna messy ftit, iżda jżomm f'moħħu li dan huwa jittratta l-websajt sħiħa, u jekk I iscroll naraw din il-funzjoni tad-data bidla. Issa, biss biex ikunu ċari, dan huwa miktub fl CoffeeScript, li hija lingwa li inti probabilment ma bbenefikawx qabel. Iżda huwa pjuttost tinqara, so I ser jimxu permezz ta 'dan daqs li kieku kienet pseudocode. Data Bidla hija funzjoni li għaddej biex jieħdu dan il-valur id-data, u huwa wkoll ser tieħu fil-1, li aħna ma jimpurtahom dwar kemm. Imma l-ħaġa importanti hija li trid din id-data, u dik id-data huwa l-jum li aħna rridu li titlob l-oġġetti kollha l-ikel għall. U allura inti tara li għandna xi ftit ta 'sintassi hawn, li huwa bażikament parsing dik id-data fil-format li tinqara. Fi kliem ieħor, l-API titlob id-data f'format partikolari. Inti ma tistax biss jgħidu 16 Nov 2012 AD. Dan mhux se tkun taf x'għandek tagħmel ma 'dak. Hija trid id-data f'format speċifiku. Kollha għandna qed tagħmel hawn qed tagħti eżattament dak il-format, li huwa valur fis-sena u mbagħad sing, valur xahar, ieħor sing u d-data tal-valur. U aħna wkoll ngħidu li rridu l-informazzjoni li tkun output fil JSON. Issa aħna qed jagħmlu din it-talba Ajax, u kif semmejt qabel, jQuery għandha dan super funzjoni utli Ajax li kull ma għandek bżonn tagħmel hu li jispeċifika ftit parametri stabbiliti hawn, u se jagħtik lura eżattament dak li trid. Aħna qed javżak li l-URL irridu li tmur huwa dan API Ikel CS50, li sirna mill-spec. Aħna ngħidu li aħna rridu l-informazzjoni fil JSON u li aħna qed tmur biex jagħtuh din id-data li konna definiti up here. Dan huwa l-jum li rridu l-oġġetti l-ikel għall. U allura kollha għandna nagħmlu huwa definit xi tip ta 'funzjoni suċċess, li hi bażikament dak li jiġri meta l-API prospetti dik id-data. Fi kliem ieħor, aħna ve ippakkjata up kollha tal-parametri li rridu, li f'dan il-każ huwa l-jum li aħna rridu dan u l-fatt li aħna rridu fil JSON, u aħna mibgħuta off lill-API, hekk issa l-API huwa qal, okay, hawnhekk huwa d-data tiegħek, sibt lura għalik. Għandna l-funzjoni suċċess, li jfisser peress li l-API b'suċċess prospetti xi data, dak li nagħmlu ma 'dan? U jirriżulta li kollha għandna nagħmlu huwa sejħa din il-funzjoni menu aġġornament bl ikun x'ikun l-API marret lura, hekk aħna tista 'tfittex għal dak u tara li kollox aħna qed tagħmel qed tuża mazz ta 'sintassi ġdid hawn li taġġorna l-HTML u daħħal din id-data ġdida. X'inhu dan jippermetti huwa għandna dawn vleġeġ fuq kull naħa, u aħna tista 'tikklikkja, u issa aħna qed tħares lejn id-data għall-jum li jmiss u għal darb'oħra għall-jum li jmiss, u kull darba huwa l-aġġornament li l-valur id-data u juri dubji fuq l-API, jkollna lura xi data u ddaħħalha fis-sit. Għal darb'oħra, inti tista 'tara, super, super utli. Dan app ħa me ftit sigħat biex Hack flimkien, u għandi esperjenza ftit aktar, ovvjament, imma CS50 proġett tiegħek finali tista 'tfittex xi ħaġa simili ħafna dan. APIs huma super qawwija għall-ammont ta 'sforz li huma jieħdu. L-aħħar ħaġa jien se jmorru fuq hija APIs ftit aktar wiesa '. I mhux se tikseb kemm fis minnhom sakemm dak li jagħmlu speċifikament, imma jien ser jagħtik idea ta 'x'hemm hemmhekk. 2 dawk verament utli, jekk int interessat fl-analiżi tad-data jew viżwalizzazzjoni jew xi ħaġa bħal dik, huma Freebase u Wikipedija. Wikipedija 'preżumibbilment you know kollha-huwa enċiklopedija online bla ħlas, u fil-fatt għandha l-API, hekk jekk inti tixtieq li, per eżempju, tikseb kollha tat-testi u l-oġġetti għall-qarnit inti tista 'faċilment jagħmlu dan. Just say ħej, Wikipedija API, nixtieq l-informazzjoni mibgħuta lura kif dan, u nixtieq li f'dan il-format, u l-artikolu nixtieq huwa qarnit, u malajr ħafna se jagħtuk lura dik l-informazzjoni. Li jista 'jkun verament utli jekk inti tixtieq li tagħmel xi tip ta' sit li l-telespettatur aħjar għall Wikipedija jew xi ħaġa bħal dik. Freebase huwa tip ta simili, għalkemm huwa xi ftit diffiċli kemm jista API. Freebase huwa simili Wikipedia fis-sens li l-enċiklopedija online li fiha lottijiet u lottijiet ta 'data differenti dwar kull xorta ta' suġġetti differenti, imma hija maħżuna f'database relazzjonali, li hija ftit differenti mill-Wikipedija. Wikipedija ikollu artikoli tagħha u oġġetti marbuta ma 'oġġetti oħra, iżda għall-parti l-kbira, jekk inti tixtieq-data għall qarnit, inti tmur għall-artikolu qarnit, jiksbu dik id-data, u inti għandek mazz ta 'test dwar qarnit, b'tali mod li l-kbir. Freebase jaħdem b'mod kemmxejn aktar ikkumplikati f'dak kollox huwa relatat ma 'xulxin. Fi kliem ieħor, jekk aħna qed tfittex għall-qarnit allura għandha mazz ta 'kategoriji assoċjati magħha. Per eżempju, huwa ta 'l-annimali, li jgħix taħt l-ilma, hija għandha temperatura tal-ġisem ċerti. I do not know. U kollha ta 'dawn il-kategoriji huma links għal postijiet oħra fejn tista' tmur biex jara l-affarijiet ma 'dak istess kategorija. Fi kliem ieħor, is-sett tad-data qarnit ikun fih link għall-informazzjoni stabbiliti għal kull annimal, u li let me jimxu madwar fil-database verament malajr. Dan jista 'jkun utli ħafna jekk inti qed tagħmel xi ħaġa bħal paraguni. Fi kliem ieħor, minħabba xi ħaġa ċerta, inti tixtieq li tara x'iktar huwa relatat ma 'u tara x'iktar huwa relatat ma. Dan it-tip ta 'ħaġa. Dan jista 'jkun utli f'numru ta' modi. Jekk qed tfittex għal aktar ta 'sfida u li tkun tista' tagħmel xi affarijiet aktar kumplessi Nixtieq tikkunsidra li tieħu ħarsa lejn l-API Freebase. Iżda l-aktar, il-Wikipedija huwa post sempliċi ħafna li jmorru safejn jkollna informazzjoni. Post ieħor li jien ser tħares lejn huwa Last.fm, u jien fil-fatt se jmorru għall-sit fil-każ li xi nies ma jkunux familjari, iżda Last.fm hija bażikament mużika gosti u rakkomandazzjonijiet websajt. Inti tista 'tagħmel kont. Tista 'tibda mużika uploading mill-plejer tal-mużika tiegħek għall-websajt, u bażikament se jibda jagħtik rakkomandazzjonijiet tal-mużika ibbażati fuq dak li jisimgħu. Per eżempju, jekk inti tmur għall-profil tiegħek paġna 'dan huwa minjiera' tista 'tara ikollok lista ta' l-aħħar sema 'binarji. Tista 'tara l-artisti favoriti totali, kollha ta' dak it-tip ta 'ħaġa, u għal darb'oħra, hemm API big lura Last.fm,  u inti tista 'tagħmel użu minnha biex jagħmlu lottijiet u lottijiet ta' affarijiet verament jibred. Per eżempju, jien ser imorru għall-paġna ta 'ħabib li għandu dan is-sit Għodod Last.fm. Dan huwa attwalment ieħor pjattaforma li l-mibnija fuq il-API Last.fm, u ma 'numru ta' affarijiet interessanti pretty. Jekk I log fil bl-isem l-utent tiegħi, per eżempju, I tista 'titlobha biex jiġġeneraw tag sħaba, per eżempju, u dak li għaddej biex tagħmel hu li tagħti me lura immaġni ta ' l-ġeneri differenti u li tip ta 'ħaġa li I simili jisimgħu. Kif huwa tagħmel dan? Ħafna bażikament huwa qal li l-API Last.fm hawn dan l-utent. Nixtieq li jafu l-ġeneru ta 'kull kanzunetta li ħadthom qatt sema, u inti tista 'tagħmel dan billi tagħmel sejħa Ajax pjuttost sempliċi għall-API Last.fm. Int ser terġa 'lura lista kbir, u mbagħad ovvjament xi għalf ieħor li qed isir biex jibdluh sħaba kelma, imma int tista 'tara globali huwa ferm faċli għall-aċċess u ħafna faċli biex jintuża. Tassew sbieħ għal numru ta 'affarijiet. Naħseb li dwar kollox I ser ngħid globali. Ħaġa waħda aħħar I ser isemmu dwar APIs b'mod ġenerali hija li inti ser kultant run fis xi ħaġa imsejħa jillimita r-rata, u l-idea ta 'jillimita r-rata hija li inti ma tridx għall-abbuż APIs. Fi kliem ieħor, huwa verament sbieħ li ħafna ta 'dawn is-siti għandhom APIs li inti tista 'tmur u l-użu b'xejn. Madankollu, jekk inti qed jagħmlu miljuni jew biljuni ta 'talbiet għal kull ġurnata, per eżempju, jekk int staġnati fi loop infinita li l-infinitament mistoqsi xi tip ta 'l-API u jkollna lura ammont kbir ta' data, ovvjament li mhux tajba, sabiex dak li ħafna APIs tagħmel hu li dan jillimita r-rata karatteristika li tgħid li inti tista 'biss tagħmel 1000 talbiet kuljum għal kull indirizz IP jew xi ħaġa bħal dik. U jekk int tagħmel ħafna ta 'ttestjar u dik it-tip ta' ħaġa, inti ser kultant run fis dan, u f'daqqa waħda se shut inti off u tgħid le, jien ma giving you data kwalunkwe aktar. Dak li trid tagħmel hu li jimxux mar-regoli. Inti tixtieq li tagħmel ċert li inti taqra l-spec API bir-reqqa. Jekk għandu ċerti regoli marbuta magħha, bħal inti tista 'biss tagħmel mistoqsija X kuljum jew tista 'biss aċċess parti tad-database ċertu numru ta' drabi jew xi ħaġa bħal dik inti tixtieq li tagħmel żgur li int stick għal dan. Sakemm inti play fi ħdan dawk ir-regoli inti probabilment jkollhom żmien tassew sbieħ bl-użu APIs. Takeaway ġenerali tiegħek huwa APIs huma tassew, tassew utli. Hemm API għal kważi kull servizz web kbar hemmhekk. Pretty ħafna xi parti tal-Suite Għodda Google, Google Maps, Google Earth, Gmail, Google Calendar, kollha ta 'dawk l-affarijiet għandhom APIs. Tista 'tuża kemm għall data tikseb mill-server u jibagħtu data lill-server. Fi kliem ieħor, jekk inti riedu jagħmlu app kalendarju li tista 'taġġorna xi ħadd Calendar Google, hemm API għal dak. Jekk inti tixtieq li tagħmel xi ħaġa li għaddej biex jgħidlek meta il-post ta 'indirizz ċerta hija li inti tista' tuża l-API Google Maps għal dak. APIs huma fantastically utli, u dawn qed kullimkien. Jekk int interessat fl xi tip ta 'idea, hemm probabilment API relatati li tista 'tuża biex tikseb lott ta' data malajr ħafna u ħafna sempliċement. Jekk int xorta tfittex għal proġett jew biss jekk inti tixtieq li jkollha madwar ma 'xi ħaġa b'mod ġenerali, APIs huma definittivament jiswew tagħmel. Grazzi, u jien kuntenti li tirrispondi xi mistoqsijiet li inti guys jista 'jkollhom. Okay, grazzi ħafna. [CS50.TV]