[Powered by Google Translate] [Seminar] [Panimula ay programista sa Mga API] [Billy Janitsch] [Harvard University] [Tommy MacWilliam] [Ito ay CS50.] [CS50.TV] Kumusta, lahat, ako Billy, at ngayon ako pagpunta sa pakikipag-usap tungkol sa Mga API, o application programming interface, partikular sa konteksto ng CS50 panghuling proyekto at na uri ng bagay. Sa pangkalahatan kung ano ang isang API? Sa napaka-malawak na mga tuntunin, ang uri ng isang gitnang tao na nagpapahintulot sa 2 piraso ng software upang makipag-ugnay sa bawat isa. Na ang isang uri ng napaka-malawak na kahulugan at hindi na may-katuturan para sa kung ano ang iyong hinahanap namin sa. Ano namin talagang gusto ang ilang uri ng mga kapaki-pakinabang na lupa sa gitna makipag-ugnayan sa ilang mga uri ng database sa isang lugar. Narito ang isang tsart, at isa lamang ideya na namin ang isang application, at gusto naming upang makakuha ng mga data mula sa isang database, ngunit hindi namin nais direkta sa query sa database. Sa halip gusto naming upang pumunta sa pamamagitan ng ganitong uri ng gitna tao, ang API. Ang ideya sa likod na numero 2 at 3 sa tsart ay parehong napaka-komplikadong at magulo. Sa ibang salita, kapag ang API ang querying sa database, marahil ito na gumagamit ng SQL mga talahanayan at lahat na uri ng mga bagay-bagay, at hindi na namin natutunan ng kaunti tungkol dito sa CS50, ngunit pangkalahatang, napansin mo na ito ay isang bit ng isang sakit. Nagiging sobrang, napaka-komplikadong at magulo, lalo na kapag nagsasagawa ka ng kumplikadong mga query at na uri ng bagay. Ano namin talagang gusto ang ilang uri ng mga kapaki-pakinabang at simpleng paraan upang makakuha ng mga data na iyon, at na ang ideya sa likod ng mga numero 1 at 4 sa chart. Sa ibang salita, nais naming talagang simpleng paraan upang sabihin ang API kung ano upang makakuha ng para sa amin at talagang simpleng paraan upang makuha ang data na iyon pabalik. May ay isang pangunahing paraan na ang data na karaniwang ipinadala at natanggap, na JSON, o JavaScript na Bagay pagtatanda. Na maaaring mag-iba ng kaunti tulad ng kung paano magpadala sa iyo ang kahilingan sa API. Sa ibang salita, kung nais mo ang ilang tiyak na halaga ng data, kung paano sabihin sa iyo ang API upang makuha ang data na iyon ay maaaring mag-iba ng kaunti. Karaniwan ito ay nagsasangkot ng paggawa ng ilang uri ng mga kahilingan sa network. Sa ibang salita, ang access sa ilang uri ng mga URL na pagpunta sa sabihin sa API eksakto kung ano ang nais mo, ngunit ang data ay halos palaging ibabalik, sa ibang salita, ang numero 4 sa JSON. Ano ang JSON eksakto? Tulad ng sinabi ko, JavaScript Bagay pagtatanda. Ito ay isa lamang ang unibersal na pamantayan para sa pagpapadala at pagtanggap ng data. Ang ideya ay na mayroon kang mga 3 mga kategorya ng mga bagay. Mayroon kang array, hashmaps, at primitive. Array at hashmaps Tiningnan mo na sa ilang sandali sa CS50, ngunit uri ng nakuha ng isang napaka-mahigpit na kahulugan ng kung ano ang mga ito. Sa ibang salita, may mga array na alam mo na sila ay type bound, kaya mayroon ka lamang ng isang uri ng uri na napupunta sa buong array. JSON ay ng maraming mas hindi mahigpit na uri ng bagay. Talaga ideya ay sa iyo na bumuo ng mga bagay na ito, na maaaring binubuo ng anumang ng mga 3 mga bagay at maaaring binubuo ng maramihang mga sa kanila, at sila ay nested. Narito ang uri ng isang halimbawa ng JSON, na mga kulot bracket dito ay kumakatawan sa iyong hashmap, at ang hashmap isang ay isa lamang sa pagmamapa mula sa ilang uri ng key sa ilang mga uri ng halaga. Makikita mo ang dito na mayroon kaming ang mga katangian ng key, at na pagma-map papunta sa isang array, na kung saan ay ang buong bagay na ito. Nakikita namin ng isa pang elemento ng ang hashmap, kung saan ay ang key na ito isAwesome, kung aling mga mapa sa isang primitive na halaga ng tunay na, sa ibang salita, ang isang boolean. Primitive maaaring string. Maaari silang maging integer. Maaari silang bools, anumang bagay tulad na. At makita mo ang mga nilalaman ng array na ito na katangian ng puntos sa ay may 2 string sa loob nito, self-katulad at kamangha-manghang. Iyon ang 2 mga katangian ng JSON, at nakita namin na JSON ay kahanga-hangang. Upang tingnan ang isang maliit na mas malapit ako pagpunta sa bumuo mas kumplikadong halimbawa ng JSON dito. Hayaan magsimula sa isang array, halimbawa, ng isang walang laman na array. Ngunit iyon lamang ang uri ng pagbubutas, kaya kami ay pagpunta sa punan ito ng kaunti, at bilang ko sinabi, array sa JSON ay type bound, kaya kami ay mayroon ding isang string dito, na hi, at na ang isa pang elemento ng array na. At din, maaari naming magdagdag ng isang hashmapping dito, na kung saan ay pagpunta sa magkaroon ng ilang mga pagmamapa. Ito ay pagpunta sa pagmamapa mula sa pangalan sa string Billy. Mayroon kaming sa pagmamapa mula sa pangalan sa Billy, at mayroon kami ng pagma-map ng paboritong kulay sa asul. Iyon ay isa lamang isang magandang halimbawa ng JSON. Ito uri ng ay nakakakuha sa-Whoops, kailangan ng kuwit doon-lahat ng iba't ibang mga bahagi nito. Muli, hindi ito type sumunod sa lahat, kaya maaari kang magkaroon ng anumang uri ng mga uri sa loob ng anumang nais mo, at ideya ay self-katulad. Sa ibang salita, ito karapatan dito ay isang JSON object, bilang ay ang buong bagay na ito, bilang lamang ito, kaya maaari kang magkaroon ng isang primitive isang bagay, array ng isang bagay o hashmap ng isang bagay. Bilang maaari mong uri ng makita, JSON talaga, talagang kapaki-pakinabang na ito kaya maraming nagagawa. Maaari kang magkaroon ng anumang posibleng mga data na maaari mong magbuntis na naka-imbak sa JSON. Na ginagawang talagang maganda ang wika na gagamitin sa Mga API dahil ito ay medyo magkano nangangahulugan na ang bagay na hindi kung ano ang data na gusto mong mayroong pagpunta sa ilang mga paraan upang makakuha ng mga ito pabalik sa JSON. Ang ilang mga katangian na makagawa ng JSON partikular na mabuti para sa ganitong uri ng bagay. Tulad ng iyong nakikita, kumpara sa maraming mga bagay na ikaw ay nagtatrabaho sa CS50 medyo mas madaling basahin at mas madali na magsulat. I-indent mong ito kung gusto mo, tulad ko ay ginagawa sa na halimbawa, na nagbibigay sa iyo ng gandang, medyo bersyon na maaari mong makita ang talagang. Ngunit bukod doon, ito ay din madali na basahin at isulat para sa isang computer. Sa ibang salita, ito ay madali upang i-parse at madaling upang i-encode, na nangangahulugan na ito ay medyo mabilis bilang malayo ng pagbabasa ang data ay nababahala, at JSON Maaaring mabuo ang talagang mabilis. Ring mas madali upang ma-access ang iba't ibang bahagi ng JSON at na uri ng bagay. Na ang magaling, at tangi sa roon, ang katunayan na ito ay self-katulad, sa ibang salita, ang katunayan na maaari kang magkaroon ng JSON loob JSON loob JSON talaga magaling para sa pag-iimbak ng data. JQuery ang isa pang bahagi na ay talagang kapaki-pakinabang sa pakikipagtulungan sa Mga API. Natutunan ng kaunti ng JavaScript, na kung saan ay isang magaling na paraan upang manipulahin ang HTML at CSS sa loob ng isang website. Ngunit maaari itong uri ng isang sakit sa code sa simpleng JavaScript, higit sa lahat dahil JavaScript ay talagang wika maligoy. Mayroon kang matuto ng maraming ng syntax, at lamang gawin ang mga napaka-simpleng bagay ito ay tumatagal ng maraming ng code, kaya jQuery ay isang library para sa JavaScript. Sa ibang salita, ito ay isang JavaScript na file na maaari mong i-load at pagkatapos ay gamitin ang jQuery function na gawin ang ilang mga bagay. At jQuery talaga gumagawa ng iyong buhay mas madali ang isang buong maraming. Pinapasimple kung ano ang tumagal ng daan-daang mga linya sa JavaScript down sa isang ilang mga linya sa jQuery. Ito ay partikular na kapaki-pakinabang kung gumagamit ka ng mga API dahil sa pangkalahatan kung paano makikita mo na-access ng mga API ay sa pamamagitan ng paggawa ng mga kahilingan AJAX, at naniniwala akong David ay nabanggit sa panayam na ang AJAX kahilingan sa pangkalahatan ay kapag nagsasagawa ka ng isang kahilingan ng network sa ilang uri ng server at pagbalik ng ilang mga uri ng data at nag-a-update ng isang pahina agad. Sapagkat sa simpleng JavaScript na tumagal ng mabaliw bilang ng mga linya upang mapatunayan ang lahat ng mga header ng at gawin ang lahat na uri ng mga bagay-bagay, jQuery ay talagang simple function na tinatawag na AJAX, at lahat ng mong gawin sa AJAX ay bigyan ang mga parameter na gusto mong bigyan ang API, ang lokasyon ng API at anumang karagdagang mga uri ng mga pagpipilian na gusto mong i-configure. Talaga, talagang maganda at lubhang kapaki-pakinabang para sa ganitong uri ng bagay. Iyon lang ang kailangan namin upang magsimulang makakuha ng aming mga kamay marumi sa Mga API. Ako pagpunta sa magdala ng ilang mga halimbawa at galugarin ang kanilang mga iba't ibang mga katangian ng at bakit ang mga ito ay kapaki-pakinabang para sa mga iba't ibang mga uri ng mga bagay. Ang unang bagay na makikita ko aktwal na ipakita sa iyo ang isang bagay na ako nagtatrabaho sa sa aking research lab, na Viewer isang Ngram, at talaga ang ideya ng isang Ngram Viewer ay maaari kang maghanap para sa ilang mga uri ng salita o parirala at makita kung gaano kadalas ito ay lumitaw sa isang tiyak na hanay ng mga teksto sa paglipas ng panahon. Halimbawang ito dito ay ang data na ito na hanay ng mga sanggol na ipinanganak sa New York sa pagitan ng 1920 at 2000. Maaari naming maghanap, halimbawa, para sa pangalang Jennifer, at nakikita namin na pre-1960 talagang hindi ginagamit ang lahat na magkano, at pagkatapos makuha namin sa mamaya taon na ito ay nagiging ginagamit higit pa at mas. Maaari din namin gawin ng mga paghahambing, kaya kung namin ihambing Jennifer sa, halimbawa, Thomas, maaari naming makita ang Thomas ay medyo kalat sa buong kasaysayan, samantalang ang Jennifer ay isang mas bagong pangalan. Maaari naming gawin na uri ng bagay. Paano gumagana ang application na ito sa trabaho? Talaga, ito ay gumagana sa pamamagitan ng isang API. Sa ibang salita, mayroon kaming ilang mga parameter dito. Namin ang mga parameter ng kung ano ang aktwal na kami ay naghahanap para sa, na ang mga pangalan na ito, at pagkatapos ay mayroon kaming ilang iba pang mga pag-aari, tulad ng Y axis at ang X axis. Maaari mong makita ang mayroon kami ng ilang iba't ibang mga pagpipilian bilang malayo bilang ang resolution ng oras upang gamitin at na uri ng bagay. Mayroon kaming mga pagpipiliang ito tulad ng kung anong data ang gusto namin aktwal mula sa database, at gusto naming upang makuha ang data na iyon pabalik sa ilang mga kapaki-pakinabang na paraan. Karaniwan, kung tayo ay querying sa database direkta ito ay magdudulot ng uri-uriin ng ng sakit na gawin dahil baka ito data tungkol sa mga pangalan ng sanggol nakatira sa ilang database sa isang lugar, at gusto talaga ito kumplikado sa query ito nang manu-mano at magpasya kung ano mismo ang data upang bumalik. Sa ibang salita, lamang namin pakialam tungkol Jennifer at Thomas sa kasong ito, at lamang namin pakialam tungkol sa isang tiyak na axis at ang lahat na uri ng mga bagay-bagay. Paano kami makakuha sa paligid ito? Upang kumuha sa lupa sa API na ito ng kaunti pa kukunin ko na ipakita sa iyo ang isa pang halimbawa ng platform na ito na gumagamit ng isang bahagyang iba't ibang mga hanay ng data. Set ang data na ito, sa halip ng pagiging sanggol pangalan, ay talagang lamang ang buong i-print publication database ng Open Library, na isang higanteng pinagmulan ng mga teksto na nai-publish sa buong huling 100 o kaya taon. Ang ideya ay mayroon kaming ang compository ito ng mga milyon-milyong at milyon-milyong mga teksto, kung saan maaari naming ngayong maghanap para sa iba't ibang salita at parirala. Narito ang isang halimbawa na nag-iiba-iba ng isang maliit na naiiba mula sa nakaraang halimbawa Ako ay nagpakita sa iyo, na namin ang 3 mga query sa paghahanap, digmaan, digmaan, at ang Pranses salita para sa digmaan, na guerre. At kami ay naghahanap sa loob ng 3 iba't ibang mga seksyon ng kabuuang database. Sa ibang salita, sa unang query lamang kami ay naghahanap sa USA, sa ikalawang isa lamang sa UK, at ang ikatlong lamang mula sa mga gawa na inilathala sa France. Nakakakita kami ng ilang mga kawili-wiling mga pattern lumitaw. Halimbawa, tingnan namin sa kanan banda rito kung saan- oops, messed ko ang axis ng kaunti, ngunit maaari mong makita sa hanay na ito dito sa paligid ng Digmaang Sibil may malaking spike sa American edisyon ngunit hindi tulad ng isang malaking spike sa iba pang mga dalawang, at na kung malinaw naman dahil Amerikano Civil War nangyayari sa puntong iyon. Maaari naming makita ang ilang mga cool na bagay doon, ngunit kung ano ang namin talagang pakialam tungkol sa kung paano namin nakuha ang data na ito. Kukunin ko sa likod ng mga eksena sa app na ito sa ilang sandali. Isang kapong baka nanlilinlang ay kung nagtatrabaho ka sa site at uri ng gusto mong malaman kung anong nangyayari sa likod ng mga eksena, maaari mong buksan up ng mga tool ng developer. Pupunta ako sa paggamit ng mga tool ng developer ng Chrome, at upang makakuha ng sa mga maaari mong gawin kontrol, shift, J, at na dadalhin ka sa console ng JavaScript. Mayroong ilang mga tab dito. Ang lahat ng mga ito medyo kapaki-pakinabang sa ilalim ng iba't ibang pangyayari, ngunit na ako tungkol sa mga network tab ngayon, at aktwal na ako ay may upang i-refresh upang makakuha ng na pagtatrabaho. Oh, paumanhin. Gusto upang magbigay ng isang random na halimbawa. Okay, gagamitin namin ang halimbawang ito sa halip pagkatapos. Ang ideya ay may API na ito dito, at maaari mong makita kung ano mismo ang API ay bumabalik. Ito ang application pagbalik mula sa API na pag-ipinadala na kahilingan. Hayaan akong mag-zoom sa ilang sandali, at maaari namin talaga makita ito ay isang serye ng key na mga pares ng halaga sa JSON. Sa ibang salita, mayroon kaming ito hashmap dito na pagma-map halaga. Sa ibang salita, ito ay pagma-map ng mga taon sa halaga. Sa 1765 anumang salita namin simula hinanap ay ginagamit ng 90 beses ng 1 milyon, kaya kami ay pagbalik sa resultang ito. Hindi eksakto JSON dahil mayroon namin ito kaunti header ng resulta dito, ngunit paunawa na ito buong bagay dito ay isang mahusay na patak ng malaking JSON. Mayroon kaming isang array dito na naglalaman ng buong elemento na ito, at maaari mong makita na ang buong elemento nagtatapos doon, at pagkatapos kami ay may isa pang malaking elemento na napupunta ang lahat ng mga paraan down sa dulo, at na nagtatapos dito. Mayroon kaming isang talagang malaking array na may 2 mga bagay sa loob nito, at sa bawat isa ng mga bagay ay ng hashmap. Maaari mong makita sa loob ng bawat ng mga hashmaps mayroon kami ng pagma-map ng index na ito ng halaga sa 0 at halaga ang halagang ito sa ibang hashmap, na muli ay pagma-map ang mga halaga ng X axis sa Y axis halaga. Maaari mong makita ang JSON nakakakuha ng kaunti kumplikado, ngunit pangkalahatang, ang aktwal na napaka kapaki-pakinabang, at ito ay mas madali upang ma-access ang kumpara sa iba pang mga iba't-ibang paraan ng pagtatanda. Bilang malayo bilang kung ano ang aktwal na kami ay pagpapadala ng data sa API upang makakuha ng, Ako pagpunta sa pumunta sa likod ng pagtatapos ng kaunti dito. Ito ang malaking file ng JavaScript na paghawak ng lahat ng mga pakikipag-ugnayan ng web app, at kaya hindi namin pakialam tungkol sa karamihan ng mga ito, ngunit gawin namin ang pag-aalaga tungkol sa ilan sa mga ito. Halimbawa, pinapahalagahan namin tungkol sa katangian ng buildQuery, at ang ideya ng function na ito ay isa lamang ito ay naghahanap sa buong pahina, ang pag-uunawa kung ano ang user gustong sa query, sa ibang salita, -suri nang mga kahon kung saan na sila input ang kanilang mga terminong ginamit sa paghahanap, ng pagsuri sa ibang Y at X axis halaga na iyong pinili at ang lahat na uri ng bagay, at sabihin ang lahat sa query na ito na halaga, na maaari kong pagkatapos ay ipadala sa API. Ito mukha itong kumplikado, at ito ay medyo kumplikado ngunit kung ano ang ako pagpunta gawin sa katunayan, na ako na gawin ito, na mahusay na- na ako pagpunta upang makakuha ng console upang i-print ang eksakto na query halaga na ito sa pagpapadala ng off sa API. Na ang aktwal na dito mismo. Paumanhin, ang output ng maraming bagay. Ngunit ito ay kung ano ang pinapahalagahan namin tungkol sa, sa bagay na ito dito mismo. Ito ang query na bagay. Sa ibang salita, ito ay eksakto kung ano ang web application sa pagpapadala ng sa API, at kaya tingnan natin sa loob ng ilang sandali, at nakikita namin mayroon kaming ilang mga halaga dito. Nakikita namin na mayroon kaming bilang ng uri na ito, na ang mga pangyayari sa bawat milyong mga salita, na eksakto kung ano ang pinili namin sa ang Y axis sa paglipas dito. Kung saan na nagmumula. Mayroon kaming isang database halaga, na nangangahulugan na ang ilang ilang database na ang data na ito ay nakatira sa, at gusto naming i-access ang data na iyon partikular kumpara sa mga pangalan mga data ng sanggol, halimbawa. Pagkatapos namin ito group halaga, na nagsasabi na gusto naming upang maghanap sa pamamagitan ng taon kumpara sa anumang iba pang mga halaga ng X axis. Pagkatapos kami ay may isang pamamaraan, kung saan ang ilang mga API ay gawin ang maramihang mga bagay. Sa ibang salita, ang API na ito ay maaari ring ibalik ang iba pang mga uri ng data, ngunit sa kasong ito, nais namin na pagma-map ng mga halaga ng X axis sa Y axis halaga. Na kung ano ang na nagsasabi sa ito upang gawin doon, at mayroon kaming ang paghahanap na ito array limitasyon, na naglalaman ng 2 halaga. Ang unang isa ay kung ano ang nakikita namin dito, na ang lahat ng mga halaga nilalaman sa loob ng unang maliit na kahon sa tuktok. Sa ibang salita, nais naming upang tumingin para sa labanan ng salita, at gusto naming upang i-filter ito ng Ingles na teksto sa loob Amerikano panitikan. Mayroon kaming bansang ito, na USA. Mayroon kaming isang wika, na Ingles, kaya't mayroon kaming ang lahat ng mga iba't ibang bahagi na ang lahat na nagsasabi sa ang API kung ano mismo ang gusto naming. Hindi namin alam kung ano ang data na makuha namin pabalik pa, ngunit alam namin ang data na iyon ay pagpunta sa isang tiyak na form. Halimbawa Ito ay uri ng sa kumplikadong bahagi, at hindi kinakailangan mo ay gamit ang isang API complex na ito, ngunit ito ay upang ipakita sa iyo ang saklaw at kapangyarihan ng kung ano ang API. Sa ibang salita, gamit ang isang may simpleng sistema ng query namin talaga ay isang input box na may ilang iba pang tagapili sa iba't-ibang mga lugar. Ipaalam sa akin mag-zoom bumalik dito. Mayroon kaming isang input box na may ilang iba't ibang mga seleksyon ng metadata, at mayroon kaming Y axis at X axis seleksyon. Hindi namin aktwal na maraming mga patlang, at maaari naming makita ang napaka madaling namin para sa mga tanong ng ilang uri ng API at makakuha ng mga data sa likod at pagkatapos ay ilagay ito sa ang tsart na ito, na kung saan ay pagkatapos ay upang ipakita ang mga ito sa isang kapaki-pakinabang na paraan. Upang tingnan ang isa pang halimbawa na maaaring maging isang bit mas pamilyar sa iyo guys kami ay pagpunta upang i-sa Facebook. Facebook ng API ay tinatawag na Facebook Graph, at talaga kung ano ang nangangahulugan iyon ay nakikita mismo ng Facebook bilang napakalaking database na ito ng maraming ng iba't ibang mga bahagi na ang lahat ay mayroon ilang mga relasyon sa bawat isa. Sa ibang salita, ako ng isang user sa Facebook, kaya Mayroon akong isang profile, at ako ay mayroon ding ilang mga kaibigan, at ang bawat isa sa kanila ay may isang profile, at ang bawat isa sa aking mga kaibigan ay may pader, na may iba't ibang mga komento dito, at sa bawat isa ng mga komento ay may gusto at lahat na uri ng bagay. Mayroong maraming ng mga iba't-ibang bahagi sa Facebook. Ito ay isang hugely kumplikadong API, at may ton na maaari mong gawin sa mga ito, ngunit ito ay aktwal na medyo simple upang gamitin. Ako pagpunta upang simulan sa pamamagitan ng pagpunta sa graph.facebook.com / billyjanitsch, na ang aking natatanging pangalan ng account, at ang pangalan ng iyong account ay alinman ay ilang uri ng salita kung iyong pinili ito, o maaaring ito ay isang string ng mga numero. Ano makuha namin pabalik ay medyo pangunahing impormasyon. Nakikita namin na mayroon akong isang unang pangalan, na Billy, isang huling pangalan, na Janitsch. May isang natatanging ID Facebook kung saan mayroon akong. Maaari mong makita na ako lalaki at na mayroon akong setting ng aking wika sa British na Ingles. Sa ibang salita, nakikita namin napaka pangunahing impormasyon dito. Ito ay hindi masyadong maraming, ngunit ito ay bigyan kami ng isang ideya ng kung ano ang doon. Maaari naming gawin ang parehong bagay sa David Malan, halimbawa. Tingin ko ang kanyang pangalan ay dmalan. Nakikita namin David Malan ay isang natatanging ID. Siya ay may pangalan, unang pangalan, gitnang pangalan, apelyido. Din namin makita na niya ang lalaki at may kanyang hanay ng wika sa US Ingles. Sa ibang salita, nakikita namin medyo pangunahing impormasyon dito. Ngayon, kung ano ang mangyayari kung susubukan namin upang tingnan ang iba pa? Sabihin nating ako interesado sa kung ano ang David Malan ay gumusto sa Facebook. Ang maaari kong gawin / gusto. Ngayon kami ay tumatakbo sa isang problema. Mayroon kaming ilang mga uri ng error na sabi ng access token ay kinakailangan upang humiling sa mapagkukunan na ito. Ngunit kung sa tingin mo tungkol dito, na aktwal na saysay dahil ito ay kakaiba kung maaari mong ma-access ang bawat solong bahagi ng database ng Facebook mula sa ilang uri ng mga simpleng API, i-right? Sa ibang salita, baka iyong impormasyon ay hindi maaaring ma-access ng sinuman na nagnanais nito. Ang error na ito ay tiyak kung ano ang nangangahulugan iyon. Mangailangan ng ilang mga API Ang ilang mga pahintulot upang ma-access ang kanilang data. At mas advanced na mga API, tulad ng Facebook isa, ay mangangailangan ng ilang mga pahintulot na gawin ang ilang mga bagay. Maaari ko bang makita ang mga pangunahing impormasyon tungkol sa David Malan. Ang maaari kong makita na siya lalaki at na siya nakatira sa US, ngunit hindi talaga ko makita ang anumang nakaraan na. Upang makakuha ng sa paligid na ito sa ngayon, Facebook ay magaling tool na ito na graph API explorer, at ang ideya na iyon ay maaari mong pag-uri-uriin ng gumawa ng up ng mga pahintulot para sa iyong sarili batay sa iyong sariling account at pagkatapos ay tingnan ang mga bagay na tiyak na ang iyong account ay maaaring tingnan. Halimbawa, kung gagawin ko graph.facebook.com/billyjanitsch/likes- Whoops, hulaan ko na mayroon akong upang muling patunayan ang aking token dito. Okay. Kung gagawin ko na muli, mahusay, ngayon ko makita na nakukuha ko sa bagay na ito na sinasabi na gusto ko noodles pool, na sa Laro at Laruan ng kategorya. Gusto ko ng mga walrus, na kung saan ay sa Hayop kategorya. Ang mga ito ay ang aking aktwal na paggusto sa Facebook. Hindi sila uri ng nakakahiya. Ngunit maaari naming makita ang data na ito ay ibinalik sa JSON. Medyo nababasa. Sa ibang salita, mayroon kaming ito sa pagmamapa ng mga data sa ilang mga uri ng isang array, at ang bawat elemento ng array na ito ay isang hashmap kung saan Maps ang pangalan ng isang tulad at ang kategorya ng isang tulad. Bawat tulad ay isang natatanging ID. Mayroong ang lahat ng mga uri ng iba't ibang mga bagay ng data na maaari naming makakuha ng, at kung interesado ka sa gamit ang Facebook API para sa CS50 panghuling proyekto o para sa anumang bagay tulad na ito ay aktwal na medyo maaaring gawin. Talaga kung paano makakakuha ka sa palibot ng bagay na pagpapatotoo ay Facebook gumagamit ng isang sistema na tinatawag na OAuth, o Buksan ang pagpapatotoo, at hindi ko nais upang makakuha ng ito ngayon dahil OAuth o ibang uri ng pagpapatotoo may kaugaliang-iba-ibahin ng maraming pagitan ng iba't ibang mga API, sa gayon ay maaari kong gastusin ng isang mahabang oras ng pagpunta sa bawat isa, ngunit hindi sila aktwal na medyo maliwanag. Kung ikaw Google Facebook API napaka nababasa. Mayroong ang isang buong spec. Halimbawa, ito ang papeles para sa Facebook API, at maaari mong makita ako sa pahina ng User, sa gayon ay maaari kong malaman ang lahat tungkol sa iba't ibang mga uri ng mga bagay na magagamit upang makakuha ng kasing layo ng data at din ang iba't ibang pahintulot na kailangan ko upang ma-access ang mga ito. Tulad ng nakita namin, hindi namin kailangang pahintulot upang ma-access ang pangalan o ang kasarian, ngunit lampas na namin kailangan ang pahintulot para sa karamihan ng mga bagay. Ang pahinang ito, o sa halip, ang website na ito ay magkakaroon din sabihin sa iyo kung paano makakuha ng isang token upang patotohanan ang iyong sarili. Karamihan sa mga authentication system gamitin ang ilang mga uri ng token kung saan makakakuha ka ng ito natatanging halaga, na kung saan ay isang talagang mahaba at random na string, at ang paraan na maaari nilang iugnay ang mga kahilingan na iyong ginagawa sa iyo. Sa ibang salita, alam nila na hindi mo ginagawa ang anumang kahina-hinalang sa kanilang data. Alam nila kung ano mismo ang nakakakuha ka ng. Din nila alam na mayroon kang pahintulot upang tingnan ang impormasyon na iyon. Kung nakagawa ka na ng Facebook app at ang iyong app ay may ilang mga gumagamit, at pinayagan ang mga gumagamit na iyon na app upang ma-access ang ilang mga bahagi ng kanilang profile, pagkatapos anumang API key o token na gumagamit ang app na upang ma-access ang data para sa mga gumagamit na iyon. Ito ay maaaring tunog kumplikado, ngunit ito ay hindi masyadong masamang, at kung nais mong gamitin ang Facebook ko lubos na inirerekomenda na ikaw isaalang-alang ang nagpe-play sa paligid sa kanilang mga API. Ito ay sobrang ayos, at maaari mong gawin ng maraming ng iba't ibang mga bagay na may ito. Kung ang gumagamit ay nagbibigay sa iyo ng mga pahintulot maaari mong kahit na bumalik sa API at sabihin gusto ko upang aktwal na mag-post sa wall ng user na ito, o gusto ko silang mag-post ng isang larawan, at na ang dahilan kung bakit sa iyong feed ng balita, makikita mo minsan makakuha ng mga nakakainis na mga bagay sinasabi ang iyong kaibigan ay napanood ang video na ito sa ilang mga uri ng kakaiba site o isang bagay tulad na. Iyon ay dahil ang app na ay nabigyan ng access upang mag-post sa pader na tao. Ang ideya pangkalahatang, ang Facebook API ay medyo kumplikado ngunit din talagang kapaki-pakinabang. Talagang sulit check out kung naghahanap ka pa rin ng para sa isang pangwakas na proyekto. Isa pang suite ng mga API na ako pagpunta sa pumunta sa paglipas ng CS50 mga API. Hayaan akong mag-zoom in dito. CS50 ay aktwal na magkasama ang isang buong serye ng Mga API na maaari mong gamitin para sa isang pangwakas na proyekto o para sa anumang bagay na nagsasagawa ka ng. At sila karamihan Harvard kaugnay na, at sila ay nag-iiba mula sa menu ng HUDS, halimbawa, sa Harvard Kaganapan API, na kung saan ay magbibigay-daan sa iyo na ma-access ang isang listahan ng mga iba't ibang mga kaganapan na nangyayari sa Harvard at na uri ng bagay. At sa gayon maaari naming i-click sa anumang isa sa mga ito at makakuha ng spec para dito, na makikita mo magagawang upang mahanap para sa anumang API, at ideya ay ito ay nagbibigay-daan sa alam mo, A, partikular kung ano upang humiling mula sa API at kung paano upang humiling ito. Sa madaling salita, kung gusto ko ang lahat ng mga kaganapan na nangyayari bukas pagkatapos Mayroon akong upang malinaw naman ay bigyan ang mga ito na petsa na gusto ko sa isang tiyak na format, at B, ito ay sabihin sa akin kung ano mismo ang ito upang bigyan pabalik sa akin. Ito ay sabihin ako pagpunta sa ibalik mo ang JSON object, o tulad ng maaari mong makita, mayroong iba't ibang mga format. Maaari mo ring ibalik ang data bilang isang CSV, halimbawa. Ngunit alam mo kung paano ang data na upang tumingin kapag ikaw ay makakuha ng ito pabalik sa gayon ay maaari mong asahan na gawin ang ilang mga bagay na may ito. Maaari kaming mag-scroll down at makita, halimbawa, kung gusto namin sa query sa API upang makakuha ng isang kalendaryo, pagkatapos na maaari naming gamitin sa partikular na URL na ito at bigyan ito ng ilang mga parameter na na ang data na gusto namin ang eksaktong. At gayon din naman, kung gusto namin ang data pabalik sa isang tiyak na format, maaari naming hilingin ito sa output ang mga data sa isang CSV, at ang isa pang parameter na namin ang pagpasa sa API. Maraming mga cool na bagay na gawin doon. Gusto ko talagang inirerekumenda ang pag-check CS50 mga API. Pupunta ako upang tingnan ito Harvard Pagkain API sa partikular na para sa ilang sandali. Isang bagay na aktwal ko na dinisenyo ito Harvard Noms website, na gumagamit ng CS50 Pagkain API upang makuha ang HUDS menu para sa araw. At para sa mga tao sa paaralan ng extension, HUDS dining serbisyo sa Harvard. Ano makakakuha ka ng pahinang ito na naglalaman ng lahat ng pagkain para sa araw, kaya nakikita namin ng tanghalian. Mayroon kami ng ilang iba't ibang kategorya. Mayroon kaming bean at buong grain station. Mayroon kaming ang brown rice station. Maaari naming makita para sa brunch na kami ay may mga ilang mga item ng pagkain. Kung namin i-click sa mga ito, pagkatapos namin makuha ang impormasyon sa nutrisyon. Nakikita mo ito ay ang nutrisyon ng impormasyon para sa mga suha, kung sakaling ikaw ay nagtataka. At kaya muli, kami ay pagpunta sa peer sa likod ng pagtatapos dito nang kaunti at makita kung ano ang eksaktong ito ay ginagawa upang makuha ang data na ito. At lumiliko ito kung hindi talagang napaka kumplikadong sa lahat. Ang file na ito ay mukhang isang maliit na magulo, ngunit tandaan na ito ay paghawak sa buong website, at kung mag-scroll ko pababa namin makita ang pagbabagong ito function na data. Ngayon, lamang maging malinaw, ito ay nakasulat sa CoffeeScript, kung saan ay isang wika na marahil hindi pa nakikita bago. Ngunit medyo nababasa, kaya makikita ba akong maglakad sa pamamagitan nito na parang ito ay pseudocode. Baguhin ang petsa ay isang function na sa halaga ng petsa, at din ito sa una, kung saan hindi namin pakialam tungkol sa bilang magkano. Ngunit ang mga mahalagang bagay na may petsang ito, at ang petsa na ang araw na gusto naming humiling ang lahat ng mga item na pagkain para sa. At pagkatapos mo ang mayroon kami ng kaunting syntax dito, na isa lamang sa pag-parse na petsa sa isang nababasa format. Sa ibang salita, ang API ay nangangailangan ng petsa sa isang tiyak na format. Hindi lamang mo maaaring sabihin ang Nobyembre 16, 2012 AD. Hindi ito ay kung ano ang gagawin sa na. Nais ng petsa sa isang tiyak na format. Lahat ng ginagawa namin dito ay nagbibigay sa ito eksaktong format na iyon, na isang taon na halaga at pagkatapos ng gitling, isang buwan na halaga, isa pang gitling at ang halaga ng petsa. At sabihin din namin gusto namin ang data na ang output sa JSON. Ginagawa namin ngayon ang AJAX kahilingan na ito, at tulad ng nabanggit ko mas maaga, jQuery ay may ito sobrang kapaki-pakinabang AJAX function na kung saan ang lahat ng kailangan mong gawin ay tukuyin ng ilang mga parameter pababa dito, at ito ay magbibigay sa iyo kung ano mismo ang gusto mong. Sinasabi Kami ay sa ito na ang URL na gusto naming ito upang pumunta sa ito CS50 API Pagkain, na aming nakuha mula sa spec. Sinasabi namin na gusto namin ang mga data sa JSON at na kami ay pagpunta upang bigyan ito ang data na ito na namin ang tinukoy dito. Ito ang araw na gusto naming ang mga item ng pagkain para sa. At pagkatapos ang lahat ng mayroon kaming gawin ay tukuyin ang ilang mga uri ng tagumpay function na, na talaga kung ano ang mangyayari kapag ang API ay nagbalik na data. Sa ibang salita, kami package ang lahat ng mga parameter na gusto namin, na sa kasong ito ay ang araw na gusto naming ito at ang katotohanan na gusto namin ito sa JSON, at ipinadala namin ito sa API, kaya ngayon API ay sinasabi, okay, dito ay ang iyong data, Nakatanggap ako ito muli para sa iyo. Mayroon kaming ang tagumpay function, na nangangahulugan na ibinigay na API matagumpay na nagbalik ilang data, ano ang gagawin namin gawin ito? At lumiliko ito na ang lahat ng ginagawa namin ay tumawag ito update menu function na sa anumang API ay sumagot, upang maaari naming maghanap para sa at makita na ang lahat ng ginagawa namin ay gumagamit ng isang bungkos ng mga bagong syntax dito upang i-update ang HTML at isingit ang mga bagong data. Ano magbibigay-daan ito ay mayroon kaming mga arrow na ito sa magkabilang panig, at maaari naming i-click ang, at ngayon kami ay naghahanap sa data para sa susunod na araw at muli para sa susunod na araw, at sa bawat oras na ito nag-a-update ng petsang iyon na halaga at querying ang API, pagbalik ilang mga data at paglalagay ng ito sa site. Muli, maaari mong makita, sobrang, sobrang kapaki-pakinabang. Ang app na ito ay kinuha sa akin ng ilang oras Hack sama-sama, at mayroon akong ng kaunti pang karanasan, malinaw naman, ngunit ang iyong CS50 panghuling proyekto maaaring magmukhang ng isang bagay na napaka tulad nito. API Super malakas na para sa halaga ng pagsisikap na sila tumagal. Ang huling bagay na ako pagpunta sa pumunta sa paglipas ng ilang higit pang mga API ang malawak. Hindi ako makakuha ng pati na malayo sa mga ito tulad ng kung ano ang ginagawa nila partikular, ngunit makikita ko mabigyan ka ng ideya kung ano ang out doon. 2 talagang kapaki-pakinabang na, kung interesado ka sa pagtatasa ng data o visualization o anumang bagay tulad na, Freebase at Wikipedia. Wikipedia-siguro mo lang ang alam ay isang libreng online encyclopedia, at aktwal ay isang API, kaya kung gusto mong, halimbawa, makakuha ng lahat ng teksto at ang mga artikulo para sa pugita mo napaka madaling gawin iyon. Lamang sabihin hey, Wikipedia API, Gusto ko gusto ang mga data na ibinalik bilang na ito, at gusto ko ng ito sa format na ito, at ang artikulong Gusto ko ay pugita, at masyadong mabilis ito magbibigay sa iyo ang impormasyong iyon. Na maaaring talagang kapaki-pakinabang kung nais mong gumawa ng ilang mga uri ng site na ang isang mas mahusay na viewer para sa Wikipedia o isang bagay tulad na. Freebase uri ng katulad, kahit na ito ay kaunti mahirap kasing layo ng API. Freebase ay tulad ng Wikipedia na ito ang isang online encyclopedia na naglalaman ng maraming at maraming ng iba't ibang mga data tungkol sa lahat ng mga uri ng mga iba't ibang mga paksa, ngunit ito ay naka-imbak sa isang pamanggit database, na kung saan ay bahagyang naiiba mula sa Wikipedia. Wikipedia ay may mga artikulo at mga artikulo na naka-link sa ibang mga artikulo, ngunit para sa pinaka-bahagi, kung gusto mo ang data para sa pugita, pumunta ka sa artikulo ng pugita, kumuha ng data na iyon, at mayroon kang isang grupo ng teksto tungkol sa mga octopuses, kaya na mahusay. Freebase ay gumagana sa isang bahagyang mas kumplikadong paraan sa na lahat ay nauugnay sa isa't isa. Sa ibang salita, kung kami ay naghahanap para sa pugita ito ay may isang bungkos ng mga kategorya na nauugnay dito. Halimbawa, ito ay isang hayop, naninirahan sa ilalim ng dagat, ito ay may ilang mga temperatura ng katawan. Hindi ko alam. At ang lahat ng mga kategoryang ito ang mga link sa iba pang mga lugar kung saan maaari kang pumunta upang makita ang mga bagay na parehong kategorya. Sa ibang salita, ang hanay ng data ng pugita ay naglalaman ng isang link sa data na nakatakda para sa lahat ng hayop, at na nais ipaalam sa akin ilipat sa paligid sa database talagang mabilis. Ito ay maaaring maging lubhang kapaki-pakinabang kung ikaw ay paggawa ng isang bagay tulad ng paghahambing. Sa ibang salita, na ibinigay ng ilang mga bagay, nais mong makita ang ano pa ito na may kaugnayan sa at kung ano pa ang hindi ito na may kaugnayan sa. Na uri ng bagay. Maaari itong maging kapaki-pakinabang sa isang bilang ng mga paraan. Kung naghahanap ka para sa higit pa sa isang hamon at upang gumawa ng ilang mga mas kumplikadong mga bagay Gusto ko isaalang-alang ang pagkuha ng isang hitsura sa Freebase API. Ngunit higit sa lahat, ang Wikipedia ay isang napaka-simpleng lugar upang pumunta bilang malayo bilang kumukuha ng impormasyon. Ang isa pang lugar na kailangan kong tumingin sa Last.fm, at aktwal na ako pagpunta sa pumunta sa site sa kaso ng ilang mga tao ay hindi pamilyar, ngunit Last.fm ay isa lamang ng musika panlasa at rekomendasyon website. Maaari kang gumawa ng isang account. Maaari kang magsimulang mag-upload ng musika mula sa iyong music player sa website, at isa lamang ito simulan ang nagbibigay sa iyo ng mga rekomendasyon musika batay sa kung ano ang makinig sa. Halimbawa, kung pumunta ka sa iyong profile na pahina na ito ay minahan- maaari mong makita na mayroon ka ng isang listahan ng mga kamakailan nakinig sa track. Maaari mong makita ang mga pangkalahatang mga paboritong artist, lahat na uri ng bagay, at muli, mayroong isang malaking API likod Last.fm,  at maaari mo itong gamitin upang gawin ang mga maraming at maraming talagang cool na bagay. Halimbawa, kailangan kong pumunta sa page ng isang kaibigan na may Last.fm Tools website na ito. Ito ay talagang isa pang platform na binuo sa Last.fm API, at ang isang bilang ng medyo kawili-wiling bagay. Kung log in ako sa aking user name, halimbawa, Maaari kong hilingin ang mga ito upang bumuo ng isang ulap ng tag, halimbawa, at kung ano na gawin ninyo akong bigyan ng isang imahe ng lahat ng iba't ibang genre at na uri ng bagay na gusto kong makinig sa. Paano ito ginagawa ito? Napakaluwag talaga ito sinasabi sa Last.fm API dito sa user na ito. Gusto kong malaman ang genre ng bawat kanta na kailanman sila na nakinig sa, at maaari mong gawin na sa pamamagitan ng paggawa ng isang medyo simpleng AJAX tawag sa API sa Last.fm. Makakakuha ka ng isang malaking listahan, at pagkatapos ay malinaw naman ang ilang mga iba pang mga bagay-bagay ay tapos na upang i-on ito sa isang ulap ng salita, ngunit maaari mong makita ang kabuuang ito ay mas madali upang ma-access at napakadaling gamitin. Talagang magaling para sa isang bilang ng mga bagay. Tingin ko na ang tungkol sa lahat Sasabihin kong pangkalahatang. Isang huling bagay makikita ko banggitin tungkol sa Mga API sa pangkalahatan ay na makakakita ka minsan tumakbo sa isang bagay na tinatawag rate nililimitahan, at ang mga ideya ng rate nililimitahan ay hindi mo nais na abusuhin Mga API. Sa ibang salita, talagang magaling na ng maraming ng mga website na ito ay may Mga API na maaari kang pumunta sa at gamitin nang libre. Gayunpaman, kung nagsasagawa ka ng milyun-milyong o bilyun-bilyong ng mga kahilingan sa bawat araw, halimbawa, kung ikaw ay natigil sa isang walang-katapusang loop na walang hanggan querying ilang uri ng API at pagkuha muli ng isang malaking halaga ng data, malinaw naman na hindi maganda, kaya kung ano ang ng maraming ng Mga API gawin na rate ito nililimitahan tampok na nagsasabing maaari ka lamang gumawa ng mga 1,000 mga kahilingan sa bawat araw sa bawat IP address o isang bagay tulad na. At kung ikaw ay gumagawa ng maraming pagsubok at na uri ng bagay, minsan patakbuhin sa na, at biglang ito ay shut-off mo ang at sabihing hindi, hindi ako nagbibigay sa iyo ng anumang higit pang data. Ano ang gusto mong gawin ay i-play ng mga panuntunan sa. Nais mong tiyakin na basahin mo ang API spec maingat. Kung ito ay may ilang mga panuntunan na naka-attach dito, tulad mo ay maaari lamang gumawa ng X na mga query sa bawat araw o maaari ka lamang ma-access ang isang bahagi ng database sa isang tiyak na bilang ng mga beses o isang bagay na tulad ng na nais mong upang tiyakin na magkabit ka sa na. Hangga't i-play sa loob ng mga panuntunan malamang talagang maganda ang oras gamit ang Mga API. Iyong pangkalahatang takeaway ay Mga API ay talagang, talagang kapaki-pakinabang. Mayroong isang API para sa halos anumang malaking serbisyo ng web out doon. Pretty magkano ang anumang bahagi ng Google Tools Suite, Google Maps, Google Earth, GMail, Google Calendar, ang lahat ng mga bagay ay may API. Maaari mong gamitin ang mga ito sa parehong get na data mula sa server at magpadala ng data sa server. Sa ibang salita, kung nais mong gumawa ng isang kalendaryo app na maaaring i-update Google Calendar ng isang tao, may isang API para sa. Kung nais mong gumawa ng isang bagay na pagpunta sa sabihin sa iyo kung saan ang lokasyon ng isang tiyak na address ay maaari mong gamitin ang Google Maps API para sa. Mga API fantastically kapaki-pakinabang, at ang mga ito sa lahat ng dako. Kung ikaw ay interesado sa ilang mga uri ng ideya, may marahil isang kaugnay na API na maaari mong gamitin upang makakuha ng maraming data masyadong mabilis at napaka-simpleng. Kung naghahanap ka pa rin ng para sa isang proyekto o kung gusto mo lamang upang i-play sa paligid may isang bagay sa pangkalahatan, Mga API ay tiyak na nagkakahalaga ng paggawa. Salamat, at ako masaya upang sagutin ang anumang mga katanungan na iyong guys ay maaaring magkaroon. Okay, salamat ng maraming. [CS50.TV]