[Powered by Google Translate] [Seminar] [Cyflwyniad Rhaglennydd i APIs] [Billy Janitsch] [Harvard University] [Tommy MacWilliam] [Mae hyn yn CS50.] [CS50.TV] Hi, mae gan bawb, rwy'n Billy, a heddiw yr wyf i'n mynd i fod yn siarad am APIs, neu rhyngwynebau rhaglennu cais, yn benodol yng nghyd-destun CS50 prosiectau terfynol a bod y math yna o beth. Yn gyffredinol beth yw API? Yn fras iawn, mae'n fath o ddyn canol sy'n caniatáu i 2 ddarn o feddalwedd i gyfathrebu â'i gilydd. Dyna fath o ddiffiniad eang iawn ac nid yw'n bod berthnasol am yr hyn rydym yn edrych ar. Yr hyn yr ydym wir eisiau rhyw fath o tir canol defnyddiol i gyfathrebu gyda rhyw fath o gronfa ddata yn rhywle. Dyma siart, ac yn y bôn y syniad yw y rydym yn gais, ac rydym am gael data o gronfa ddata, ond nid ydym am i ymholi am y gronfa ddata yn uniongyrchol. Yn hytrach, rydym eisiau mynd trwy'r math hwn o ddyn canol, mae'r API. Y syniad y tu ôl i hynny yw rhifau 2 a 3 ar y siart ill dau yn mynd i fod yn gymhleth iawn ac yn anniben. Mewn geiriau eraill, pan fydd y API yn ymholi'r gronfa ddata, mae'n debyg yn mynd i gael ei ddefnyddio tablau SQL a'r holl math o bethau, ac rydym wedi dysgu ychydig am y peth yn CS50, ond yn gyffredinol, ydych chi wedi sylwi ei fod yn dipyn o boen. Mae'n mynd yn iawn, iawn gymhleth ac yn anniben, yn enwedig pan fyddwch chi'n gwneud ymholiadau cymhleth a'r math yna o beth. Yr hyn yr ydym wir eisiau rhyw fath o ffordd ddefnyddiol a syml i gael y data, a dyna y syniad y tu ôl i rifau 1 a 4 ar y siart. Mewn geiriau eraill, rydym am ffordd syml iawn i ddweud wrth y API beth i'w gael i ni ac yn ffordd syml iawn i gael y data yn ôl. Mae un brif ffordd bod y data yn cael ei anfon fel arfer a derbyn, sy'n JSON, neu Nodiant Gwrthrych JavaScript. Gall hynny amrywio ychydig cyn belled ag sut yr ydych yn anfon y cais at y API. Mewn geiriau eraill, os ydych am gael rhywfaint o swm penodol o ddata, sut yr ydych yn dweud wrth y API i gael y gall data amrywio ychydig. Fel arfer mae'n golygu gwneud rhyw fath o gais rhwydwaith. Mewn geiriau eraill, cael mynediad at rhyw fath o URL sy'n mynd i ddweud wrth y API yn union beth rydych ei eisiau, ond mae'r data yn cael ei bron bob amser yn anfon yn ôl, mewn geiriau eraill, rhif 4 yn JSON. Beth yw JSON yn union? Fel y dywedais, Nodiant Gwrthrych JavaScript. Mae'n bôn y safon cyffredinol ar gyfer trosglwyddo a derbyn data. Y syniad yw bod gennych y 3 chategori o bethau. Mae gennych arrays, hashmaps, a primitives. Araeau a hashmaps ydych wedi edrych ar ychydig yn CS50, ond eich bod wedi gotten fath o ymdeimlad llym iawn o'r hyn y maent yn. Mewn geiriau eraill, gyda rhesi eich bod yn gwybod eu bod yn teipio rhwymo, felly dim ond un math o fath sy'n mynd ar draws yr amrywiaeth gyfan. JSON yn llawer mwy llym gyda'r math yna o beth. Yn y bôn y syniad yw i chi adeiladu'r gwrthrych, y gellir eu cynnwys unrhyw un o'r 3 pheth a gellir cynnwys rhai lluosog ohonynt, a gellir eu nythu. Dyma fath o enghraifft o JSON, sydd yn y bracedi cyrliog yma cynrychioli eich hashmap, a hashmap yn y bôn yn mapio rhyw fath o allwedd i ryw fath o werth. Byddwch yn gweld yma bod gennym y prif eiddo, ac mae hynny'n mapio ar arae, sef y peth i gyd. Rydym yn gweld elfen arall o'r hashmap, sef y isAwesome allweddol, pa fapiau i werth cyntefig o wir, mewn geiriau eraill, gwerth Boole. Gall fod yn primitives llinynnau. Gallant fod yn gyfanrifau. Gallant fod yn bools, unrhyw beth fel 'na. A ydych yn gweld cynnwys y casgliad bod pwyntiau eiddo i wedi 2 llinynnau ynddo, hunan-debyg ac yn wych. Mae'r rheini'n 2 eiddo o JSON, ac rydym yn gweld bod JSON yn awesome. I edrych ar fod ychydig yn fanylach yr wyf i'n mynd i adeiladu i enghraifft mwy cymhleth o JSON yma. Gadewch i ni ddechrau gydag amrywiaeth, er enghraifft, dim ond amrywiaeth wag. Ond mae hynny'n fath o ddiflas, felly rydym yn mynd i'w lenwi i fyny ychydig, ac fel y dywedais, araeau yn JSON yn teipio rhwymo, er mwyn i ni hefyd gael llinyn yma, sydd yn hi, ac mae hynny'n elfen arall o'r casgliad. Ac yn yr un modd, gallem ychwanegu hashmapping yma, sydd yn mynd i gael ychydig o mapiadau. Mae'n mynd i gael mapio o'r enw at y Billy llinyn. Mae gennym mapio o'r enw Billy, ac mae gennym mapio hoff liw i las. Dyna y bôn yn enghraifft dda o JSON. Mae'n fath o yn mynd i mewn-Wps, mae angen coma yno-yr holl rannau gwahanol ohoni. Unwaith eto, nid yw'n rhwymo teipio o gwbl, fel y gallwch gael unrhyw fath o fathau y tu mewn i unrhyw beth rydych eisiau, a'r syniad yw ei fod yn hunan-debyg. Mewn geiriau eraill, mae'r hawl hon dyma yw gwrthrych JSON, fel y mae'r holl beth, fel y mae dim ond hyn, er mwyn i chi gael cyntefig fod yn wrthrych, arae fod yn wrthrych neu hashmap fod yn wrthrych. Ag y gallwch math o weld, JSON yn wirioneddol ddefnyddiol gan ei fod mor hyblyg. Gallwch gael unrhyw ddata posib y gallwch chi beichiogi storio mewn JSON. Mae hynny'n ei gwneud hi'n iaith braf i'w defnyddio gyda APIs oherwydd ei fod yn 'n bert lawer yn golygu nad oes unrhyw waeth pa ddata yr ydych eisiau mae mynd i fod yn rhyw ffordd i'w gael yn ôl yn JSON. Mae ychydig eiddo sy'n gwneud JSON arbennig o dda ar gyfer y math hwn o beth. Fel y gallwch weld, o gymharu â llawer o bethau yr ydych wedi bod yn gweithio â hwy yn CS50 mae'n gymharol hawdd iawn i ddarllen a hefyd yn hawdd iawn i ysgrifennu. Gallwch indent allan os ydych yn dymuno, fel yr oeddwn yn ei wneud yn yr enghraifft honno, sy'n rhoi i chi 'n glws, fersiwn' n bert y gallwch eu gweld yn dda iawn. Ond ar ben hynny, mae hefyd yn hawdd i'w darllen ac ysgrifennu ar gyfer cyfrifiadur. Mewn geiriau eraill, mae'n hawdd i gramadegu ac yn hawdd i'w amgodio, sy'n golygu ei bod yn eithaf cyflym cyn belled â darllen y data yn y cwestiwn, a gellir JSON yn cael ei gynhyrchu yn gyflym iawn. Mae hefyd yn hawdd iawn i gael mynediad i rannau gwahanol o JSON a'r math yna o beth. Dyna braf, ac ymhellach, y ffaith ei fod yn hunan-debyg, mewn geiriau eraill, y ffaith y gallwch gael JSON o fewn JSON mewn JSON yn neis iawn ar gyfer storio data. Rhan arall sydd yn gyffredinol yn ddefnyddiol iawn wrth weithio gyda APIs yn jQuery. Rydych chi wedi dysgu ychydig o JavaScript, sydd yn ffordd braf i drin HTML a CSS mewn gwefan. Ond gall fod yn fath o boen i cod yn JavaScript blaen, yn bennaf oherwydd JavaScript yn iaith verbose mewn gwirionedd. Mae'n rhaid i chi ddysgu llawer o gystrawen, a dim ond i wneud pethau'n syml iawn mae'n cymryd llawer o cod, felly jQuery yn llyfrgell JavaScript. Mewn geiriau eraill, mae'n ffeil JavaScript y gallwch lwytho ac yna defnyddio swyddogaethau jQuery i wneud pethau penodol. Ac jQuery yn y bôn yn gwneud eich bywyd yn llawer iawn haws. Mae'n symleiddio'r hyn a fyddai'n cymryd cannoedd o linellau yn JavaScript i lawr i ychydig linellau yn jQuery. Mae'n arbennig o ddefnyddiol os ydych yn defnyddio APIs oherwydd yn gyffredinol sut y byddwch yn cael mynediad APIs yw drwy wneud ceisiadau AJAX, a chredaf David wedi crybwyll mewn darlith bod ceisiadau AJAX yn gyffredinol pan fyddwch chi'n gwneud cais rhwydwaith i ryw fath o gweinydd ac yn mynd yn ôl rhyw fath o ddata a diweddaru tudalen ar unwaith. Tra yn JavaScript blaen a fyddai'n cymryd nifer crazy o linellau i ddilysu pob un o'r penawdau a gwneud hynny i gyd math o bethau, jQuery Mae gan swyddogaeth yn syml iawn o'r enw AJAX, ac mae pob rhaid i chi wneud yn AJAX yw rhoi paramedrau eich bod yn awyddus i roi y API, lleoliad y API ac unrhyw fath ychwanegol o opsiynau yr ydych am ei ffurfweddu. Mae'n iawn, iawn 'n glws a defnyddiol iawn ar gyfer y math hwn o beth. Dyna'r cyfan mae angen i ni ddechrau cael ein dwylo budr yn APIs. Dw i'n mynd i ddod i fyny ychydig o enghreifftiau ac archwilio eu priodweddau gwahanol a pham eu bod yn ddefnyddiol ar gyfer gwahanol fathau o bethau. Y peth cyntaf y byddwch Fi 'n weithredol yn dangos i chi rhywbeth yr wyf i'n gweithio ar yn fy labordy ymchwil, sy'n Viewer Ngram, ac yn y bôn y syniad o Gwyliwr Ngram yn gallwch chwilio am ryw fath o air neu ymadrodd a gweld pa mor aml mae'n ymddangos mewn set penodol o destun dros gyfnod o amser. Mae'r enghraifft yma yn y set ddata o fabanod a gafodd eu geni yn Efrog Newydd rhwng 1920 a 2000. Gallwn chwilio, er enghraifft, ar gyfer y Jennifer enw, ac rydym yn gweld bod cyn-1960au mae'n wir nad ei ddefnyddio i gyd bod llawer, ac yna wrth i ni fynd i flynyddoedd diweddarach mae'n dod yn defnyddio mwy a mwy. Gallwn hefyd wneud cymariaethau, felly os ydym yn cymharu Jennifer, er enghraifft, Thomas, gallwn weld Thomas wedi bod yn eithaf amlwg drwy gydol hanes, tra Jennifer yn enw mwy diweddar. Gallwn wneud y math yna o beth. Sut mae hyn yn gweithio cais? Yn y bôn, mae'n gweithio trwy API. Mewn geiriau eraill, mae gennym rhai paramedrau yma. Mae gennym y paramedrau hyn yr ydym yn mewn gwirionedd yn chwilio am, sydd yn yr enwau hyn, ac yna mae gennym ychydig o eiddo eraill, fel yr echelin Y a'r echelin X. Gallwch weld gennym ychydig o ddewisiadau gwahanol cyn belled ag y datrys amser i ddefnyddio a bod y math yna o beth. Mae gennym yr opsiynau hyn cyn belled ag pa ddata yr ydym mewn gwirionedd am ei gael o'r gronfa ddata, ac rydym yn awyddus i gael y data yn ôl mewn rhyw ffordd ddefnyddiol. Fel arfer, pe baem yn ymholi'r gronfa ddata yn uniongyrchol y byddai'n datrys o fod yn boen i wneud oherwydd yn ôl pob tebyg y data hwn am enwau baban yn byw mewn rhyw gronfa ddata yn rhywle, a byddai'n cael ei gymhleth iawn i gael i holi gyda llaw ac yn penderfynu beth yn union y data i ddychwelyd. Mewn geiriau eraill, dim ond gofalu am Jennifer a Thomas yn yr achos hwn, a dim ond gofalu am ar echel penodol a hynny i gyd math o bethau. Sut ydym yn mynd o gwmpas hyn? I gloddio i mewn i'r API ychydig yn fwy 'n annhymerus' yn dangos i chi enghraifft arall o hyn llwyfan sy'n defnyddio set ddata ychydig yn wahanol. Mae'r set data, yn hytrach na bod enwau babi, mewn gwirionedd dim ond y cyfan argraffu cronfa ddata cyhoeddi Library Open, sydd yn ffynhonnell enfawr o destunau a gyhoeddwyd drwy gydol y 100 neu lai mlynedd diwethaf. Y syniad yw gennym y compository o filiynau a filiynau o destun, y gallwn nawr chwilio am eiriau gwahanol ac ymadroddion ynddo Dyma enghraifft sy'n amrywio ychydig yn wahanol i'r enghraifft flaenorol Wyf yn dangos i chi, sy'n yw ein bod wedi y 3 ymholiadau chwilio, rhyfel, rhyfel, a'r gair Ffrangeg ar gyfer rhyfel, sy'n Guerre. Ac rydym yn chwilio o fewn 3 gwahanol adrannau o'r gronfa ddata gyfan. Mewn geiriau eraill, yn yr ymholiad cyntaf i ni yn unig chwilio yn yr Unol Daleithiau, yn yr ail un yn unig yn y DU, a'r trydydd yn unig o weithiau a gyhoeddwyd yn Ffrainc. Rydym yn gweld rhai patrymau diddorol yn ymddangos. Er enghraifft, rydym yn gweld dde o amgylch yma sydd- Wps, yr wyf cyboledig i fyny 'r echelin ychydig bach, ond gallwch weld yn syth yn yr ystod yma o amgylch y Rhyfel Cartref mae 'na spike mawr yn y rhifyn Americanaidd ond nid mor spike mawr yn y ddau arall, a dyna amlwg fod Rhyfel Cartref America oedd yn digwydd ar y pwynt hwnnw. Gallwn weld rhai pethau oer yno, ond yr hyn yr ydym wir yn poeni amdano yw sut rydym yn cael data hwn. 'N annhymerus' yn mynd â chi tu ôl i'r llenni yn y app mewn ychydig bach. Mae tric daclus yw os ydych yn gweithio gyda'r safle a math o eisiau gwybod beth sy'n mynd ymlaen y tu ôl i'r llenni, gallwch agor i fyny yr offer datblygwr. Rydw i'n mynd i gael ei defnyddio offer datblygwr Chrome, ac i gyrraedd rhai gallwch chi ei wneud rheolaeth, newid, J, ac sy'n mynd â chi at y consol JavaScript. Mae yna ychydig o dabiau yma. Gallant i gyd fod yn eithaf defnyddiol o dan amgylchiadau gwahanol, ond yr wyf yn gofalu am y rhwydwaith tab ar hyn o bryd, ac yr wyf mewn gwirionedd yn cael i adnewyddu i gael y gwaith. O, sori. Mae'n hoffi i roi enghraifft ar hap. Iawn, byddwn yn defnyddio'r enghraifft, yn lle hynny. Y syniad yw bod pawb yn API yma, a gallwch weld yn union beth mae'r API yn dychwelyd. Mae hyn yn hyn y mae'r cais yn mynd yn ôl oddi wrth y API ar ôl anfon y cais. Gadewch i mi chwyddo i mewn ychydig bach, a gallwn weld y bôn mai dim ond cyfres o barau gwerth allweddol yn JSON. Mewn geiriau eraill, mae gennym y hashmap yma sydd wedi mapio gwerthoedd. Mewn geiriau eraill, mae'n mapio flynyddoedd i werthoedd. Yn 1765 pa bynnag air rydym yn dechrau chwilio am ei ddefnyddio 90 o weithiau allan o 1 miliwn, felly rydym yn mynd yn ôl y canlyniad hwn. Dyw hi ddim yn union JSON ers i ni gael y pennawd canlyniad bach yma, ond bod rhybudd bod y gwrthrych cyfan yma yn unig yw blob JSON fawr iawn. Mae gennym amrywiaeth yma sy'n cynnwys yr elfen hon cyfan, a gallwch weld bod elfen gyfan yn dod i ben yno, ac yna mae gennym elfen arall mawr sy'n mynd yr holl ffordd i lawr at y diwedd, a bod dod i ben yma. Mae gennym amrywiaeth mawr iawn gyda 2 gwrthrychau ynddo, a phob un o'r amcanion hynny yn hashmap. Gallwch weld o fewn pob un o'r hashmaps gennym mapio o'r gwerth hwn mynegai i 0 a gwerth y gwerth hwn i rywun arall hashmap, sydd unwaith eto yn mapio gwerthoedd echel X i werthoedd echelin Y. Gallwch weld JSON yn cael ychydig yn gymhleth, ond yn gyffredinol, mewn gwirionedd mae'n ddefnyddiol iawn, ac mae'n hawdd iawn i gael mynediad o gymharu â gwahanol fathau eraill o nodiant. Cyn belled ag yr hyn yr ydym yn mewn gwirionedd yn anfon data i'r API i gael, Rydw i'n mynd i fynd i mewn i'r pen yn ôl ychydig bach yma. Mae hyn yn y ffeil JavaScript mawr sydd wedi trin pob un o'r rhyngweithio rhwng y app ar y we, ac felly nid ydym yn poeni am y rhan fwyaf o hyn, ond rydym yn poeni am rai ohono. Er enghraifft, rydym yn gofalu am y swyddogaeth buildQuery, ac mae'r syniad o swyddogaeth hon yn y bôn mae'n edrych o gwmpas y dudalen, figuring allan yr hyn y mae'r defnyddiwr eisiau holi, mewn geiriau eraill, gwirio blychau hynny lle maent wedi eu mewnbwn derm chwilio, gwirio Y gwahanol a gwerthoedd echelin X eu bod wedi dewis ac mae pob math hwnnw o beth, ac mae'n mynd i boeri allan y gwerth ymholiad, a gallaf wedyn anfon i ffwrdd i'r API. Mae hyn yn ymddangos yn gymhleth, ac mae'n gymhleth 'n bert ond beth dwi'n mynd i'w wneud-a dweud y gwir, rwyf eisoes yn gwneud hyn, sydd yn hen- yw fy mod i'n mynd i gael y consol i argraffu yn union y gwerth ymholiad ei fod yn anfon i ffwrdd i'r API. Dyna mewn gwirionedd i'r dde yma. Mae'n ddrwg gennyf, allbynnau llawer o bethau. Ond mae hyn yn beth yr ydym yn gofalu am, y gwrthrych iawn yma. Mae hwn yn y gwrthrych ymholiad. Mewn geiriau eraill, mae hyn yn union yr hyn y mae'r cais ar y we yn anfon at y API, ac felly, gadewch i ni edrych y tu mewn i ychydig bach, ac rydym yn gweld mae gennym werthoedd ychydig yma. Rydym yn gweld mae gennym y math hwn cyfrif, sef digwyddiadau am bob miliwn o eiriau, sef yr union beth yr ydym wedi dewis yn y echelin Y draw fan hyn. Dyna lle mae hynny'n dod. Mae gennym, gwerth cronfa ddata sy'n golygu bod rhywfaint o ddata penodol bod y data yn byw mewn, ac rydym am i gael mynediad at y data yn benodol yn hytrach na'r data baban enwau, er enghraifft. Yna, rydym yn cael y gwerth grwpiau, sy'n dweud ein bod am i chwilio yn ôl flwyddyn yn hytrach na unrhyw werth X echelin arall. Yna, mae gennym ddull, y bydd rhai APIs gwneud pethau lluosog. Mewn geiriau eraill, gall y API hefyd ddychwelyd mathau eraill o ddata, ond yn yr achos hwn, yr ydym am mapio gwerthoedd echelin X i werthoedd echelin Y. Dyna beth mae hynny'n ei ddweud iddo wneud yno, ac mae gennym y chwiliad terfynau array, sy'n cynnwys 2 gwerthoedd. Mae'r un cyntaf yw hyn a welwn yma, sef yr holl werthoedd gynhwysir o fewn y blwch bach cyntaf yn y top. Mewn geiriau eraill, rydym yn awyddus i edrych am y frwydr gair, ac rydym am ei hidlo gan testunau Saesneg o fewn llenyddiaeth Americanaidd. Mae gennym y wlad hon, sydd yn UDA. Mae gennym iaith, sydd yn Saesneg, felly mae gennym pob un o'r rhain wahanol rannau sydd i gyd yn dweud wrth y API yn union beth yr ydym ei eisiau. Nid ydym yn gwybod beth yw'r data yr ydym yn mynd yn ôl eto, ond rydym yn gwybod bod y data yn mynd i gymryd math penodol. Mae'r enghraifft hon yn fath o ar yr ochr cymhleth, ac ni fyddech o reidrwydd fod yn defnyddio API hyn yn gymhleth, ond mae hyn yn dangos i chi yr amrywiaeth a grym yr hyn y gall ei wneud APIs. Mewn geiriau eraill, gan ddefnyddio system ymholiad gymharol syml yn y bôn rydym yn cael blwch mewnbwn gydag ychydig o dewiswyr eraill mewn mannau gwahanol. Gadewch i mi chwyddo yn ôl allan yma. Mae gennym blwch mewnbwn gyda dewisiadau metadata ychydig yn wahanol, ac mae gennym Y echelin a dewisiadau echelin X. Nid ydym yn mewn gwirionedd wedi feysydd y mae llawer, a gallwn weld yn hawdd iawn rydym yn gallu holi ynghylch rhyw fath o API a chael data yn ôl ac yna ei roi i mewn i'r siart, sydd wedyn yn mynd i arddangos mewn ffordd ddefnyddiol. I edrych ar enghraifft arall a allai fod yn ychydig yn fwy cyfarwydd i chi guys ydym yn mynd i droi i Facebook. Facebook API yw'r enw ar y Graff Facebook, ac yn y bôn beth mae hynny'n ei olygu yw Facebook yn gweld ei hun fel y gronfa ddata enfawr o lawer o rannau gwahanol sydd oll â pherthynas penodol i'w gilydd. Mewn geiriau eraill, rwy'n defnyddiwr ar Facebook, felly mae gen i broffil, ac yr wyf hefyd yn cael rhai ffrindiau, ac mae pob un ohonynt proffil, a phob un o fy ffrindiau wedi wal, sydd â gwahanol sylwadau arno, a phob un o'r sylwadau hynny yn hoff bethau a hynny i gyd math yna o beth. Mae llawer o wahanol rannau i Facebook. Mae'n API hynod gymhleth, ac mae tunnell y gallwch ei wneud ag ef, ond mewn gwirionedd mae'n eithaf syml i'w defnyddio. Rydw i'n mynd i ddechrau drwy fynd i graph.facebook.com / billyjanitsch, sydd yn fy enw cyfrif unigryw, a bydd eich enw cyfrif fod naill ai'n rhyw fath o air os ydych wedi ei ddewis, neu efallai y bydd yn fod yn llinyn o rifau. Yr hyn yr ydym yn mynd yn ôl o wybodaeth eithaf sylfaenol. Rydym yn gweld bod gennyf enw cyntaf, sef Billy, enw olaf, sef Janitsch. Mae yna ID Facebook unigryw sydd gen i. Gallwch weld fy mod yn wryw a bod gennyf fy gosodiad iaith i British Saesneg. Mewn geiriau eraill, rydym yn gweld gwybodaeth sylfaenol iawn yma. Nid yw'n ormod, ond mae'n rhoi syniad i ni o beth sydd yno. Gallwn wneud yr un peth i David Malan, er enghraifft. Rwy'n credu ei enw i yw dmalan. Rydym yn gweld David Malan Mae ID unigryw. Mae ganddo enw, enw cyntaf, enw canol, enw olaf. Rydym hefyd yn gweld ei fod yn ddynion ac mae ganddo ei set iaith i Unol Daleithiau Saesneg. Mewn geiriau eraill, rydym yn gweld gwybodaeth eithaf sylfaenol yma. Nawr, beth fydd yn digwydd os ydym yn ceisio edrych ar rywbeth arall? Lets 'ddeud Mae gen i ddiddordeb yn yr hyn David Malan wedi hoffi ar Facebook. Gallaf ei wneud / yn hoffi. Nawr rydym wedi rhedeg i mewn i broblem. Rydym wedi cael rhyw fath o wall sy'n dweud tocyn mynediad Mae angen i ofyn am yr adnodd hwn. Ond os ydych yn meddwl am y peth, sydd mewn gwirionedd yn gwneud synnwyr oherwydd byddai'n rhyfedd pe gallech gael mynediad i bob un rhan o Facebook gronfa ddata yn unig o rhyw fath o API syml, dde? Mewn geiriau eraill, mae'n debyg na all eich gwybodaeth gael ei defnyddio gan unrhyw un sy'n dymuno ei chael. Mae'r gwall yn union beth mae hynny'n ei olygu. Mae rhai APIs angen caniatâd penodol er mwyn cael mynediad i'w data. A APIs hyd yn oed yn fwy datblygedig, fel yr Facebook un, bydd angen caniatâd penodol i wneud pethau penodol. Gallaf weld y wybodaeth sylfaenol am David Malan. Gallaf weld bod ei fod yn ddynion, ac ei fod yn byw yn yr Unol Daleithiau, ond ni allaf weld unrhyw beth yn y gorffennol hynny. Er mwyn symud o gwmpas hyn ar hyn o bryd, Facebook yw'r offeryn 'n glws sef y graff API fforiwr, a'r syniad o hynny yw ydych yn gallu datrys o gwneud i fyny caniatâd i chi eich hun yn seiliedig ar eich cyfrif eich hun ac yna gweld pethau sy'n benodol gall eich cyfrif gweld. Er enghraifft, os wyf yn gwneud graph.facebook.com/billyjanitsch/likes- Wps, yr wyf yn dyfalu rhaid i mi ail-ddilysu fy tocyn yma. Iawn. Os byddaf yn gwneud hynny eto, mawr, yn awr yr wyf yn gweld fy mod yn cael y gwrthrych yn ôl sy'n dweud fy mod yn hoffi nwdls pwll, sydd yn y categori Gemau a Teganau. Rwy'n hoffi walruses, sydd yn y categori Anifeiliaid. Mae'r rhain yn fy hoffi Facebook gwirioneddol. Maent yn fath o embaras. Ond gallwn weld y data yn cael ei ddychwelyd i gyd yn JSON. Mae'n eithaf darllenadwy. Mewn geiriau eraill, mae gennym y mapio data i ryw fath o array, ac mae pob elfen o'r casgliad yn hashmap sy'n mapio'r y enw tebyg a'r categori o debyg. Mae gan bob tebyg yn cael ID unigryw. Mae pob math o bethau gwahanol o ddata y gallwn gael, ac os oes gennych ddiddordeb mewn defnyddio'r API Facebook ar gyfer prosiect terfynol CS50 neu ar gyfer unrhyw beth felly mewn gwirionedd mae'n eithaf doable. Yn y bôn sut yr ydych yn symud o gwmpas y peth ddilysu yw Facebook yn defnyddio system a elwir yn OAuth, neu Dilysu Agored, ac nid wyf am fynd i mewn iddo nawr oherwydd OAuth neu'r math gwahanol dilysu yn tueddu i amrywio llawer rhwng gwahanol APIs, er mwyn i mi dreulio amser hir yn mynd dros bob un, ond maen nhw'n gwirionedd yn eithaf hunanesboniadol. Os ydych yn Google API Facebook mae'n darllenadwy iawn. Mae manyleb gyfan. Er enghraifft, mae hyn yn y dogfennau ar gyfer y API Facebook, a gallwch weld dwi ar y dudalen Defnyddiwr, er mwyn i mi ddysgu popeth am y gwahanol fathau o bethau sydd ar gael i gael data cyn belled ag y a hefyd y caniatadau gwahanol yr wyf ei angen er mwyn cael mynediad iddynt. Fel y gwelsom, nid oes angen caniatâd i fynd at yr enw neu rhyw, ond y tu hwnt ein bod oes angen caniatâd ar gyfer rhan fwyaf o bethau. Mae'r dudalen hon, neu yn hytrach, bydd y wefan hon hefyd yn dweud wrthych sut i gael arwydd i fod yn gallu dilysu eich hun. Systemau dilysu rhan fwyaf yn defnyddio rhyw fath o arwydd lle rydych yn cael y gwerth unigryw, sy'n llinyn hir iawn ac ar hap, a bod y ffordd y maent yn eu cysylltu â'r cais eich bod yn gwneud gyda chi. Mewn geiriau eraill, maent yn gwybod nad ydych chi'n gwneud unrhyw beth amheus gyda'u data. Maent yn gwybod yn union beth rydych yn ei gael. Maent hefyd yn gwybod bod gennych ganiatâd i weld y wybodaeth honno. Os ydych wedi gwneud app Facebook a bod eich app yn cynnwys defnyddwyr penodol, a'r rhai defnyddwyr wedi cael y app i gael mynediad i rai rhannau o'u proffil, Yna, beth bynnag API allwedd neu docyn bod y app yn defnyddio yn gallu cael mynediad i'r data ar gyfer y defnyddwyr. Efallai bod hyn yn swnio'n gymhleth, ond nid yw'n rhy ddrwg, ac os ydych am ddefnyddio Facebook Byddwn yn argymell eich bod yn ystyried yn chwarae o gwmpas gyda'u API. Mae'n oer iawn, a gallwch wneud llawer o bethau gwahanol ag ef. Os yw'r defnyddiwr yn rhoi i chi caniatadau hyn gallwch hyd yn oed fynd yn ôl at y API a dweud fy mod eisiau mewn gwirionedd bostio i wal y defnyddiwr, neu yr wyf yn awyddus i gael eu postio llun, a dyna pam ar eich porthiant newyddion byddwch chi weithiau yn cael y pethau hynny yn blino gan ddweud eich ffrind wedi gwylio fideo hwn ar ryw fath o safle 'n annaearol neu rywbeth fel' na. Mae hynny oherwydd bod y app wedi cael mynediad i swydd ar wal y person hwnnw. Y syniad yn gyffredinol, mae'r API Facebook yn gymhleth 'n bert, ond hefyd yn ddefnyddiol iawn. Yn bendant yn werth edrych allan os ydych chi'n dal i chwilio am brosiect terfynol. Arall gyfres o APIs fy mod i'n mynd i fynd drosodd yn CS50 APIs. Gadewch i mi chwyddo i mewn yma. CS50 wedi mewn gwirionedd yn llunio cyfres gyfan o APIs y gallwch ei ddefnyddio ar gyfer prosiect terfynol neu dim ond am unrhyw beth eich bod yn gwneud. Ac maent yn bennaf Harvard cysylltiedig, ac maent yn amrywio o'r ddewislen HUDS, er enghraifft, i hyn Digwyddiadau Harvard API, a fydd yn gadael i chi weld rhestr o digwyddiadau gwahanol sy'n mynd ymlaen yn Harvard a'r math yna o beth. Ac er mwyn i ni glicio ar unrhyw un o'r rhain a chael spec ar ei gyfer, a byddwch yn gallu dod o hyd i unrhyw API, a'r syniad yw mae'n gadael i chi wybod, A, yn benodol beth i'w ofyn i'r API a sut i ofyn amdani. Mewn geiriau eraill, os ydw i eisiau holl ddigwyddiadau sy'n digwydd yfory yna mae'n rhaid i mi roi amlwg y dyddiad hwnnw fy mod eisiau mewn fformat penodol, a B, bydd yn dweud wrthyf yn union beth mae'n mynd i roi yn ôl i mi. Bydd yn dweud fy mod i'n mynd i ddychwelyd hwn i chi gwrthrych JSON, neu fel y gallwch weld, mae fformatau gwahanol. Gallwch hefyd ddychwelyd y data fel CSV, er enghraifft. Ond eich bod yn gwybod yn union sut y data yn mynd i edrych pan fyddwch yn ei gael yn ôl fel y gallwch ddisgwyl i wneud rhai pethau ag ef. Gallwn sgroliwch i lawr a gweld, er enghraifft, os ydym am holi am y API i gael calendr, yna gallwn ddefnyddio'r URL penodol a rhoi paramedrau penodol sydd yn mynd i fod y data yr ydym am yn union. Ac yn yr un modd, os ydym am i'r data yn ôl mewn fformat penodol, yna gallwn ofyn i allbynnu data mewn CSV, a dim ond un arall paramedr ein bod yn mynd heibio i'r API. Mae llawer o bethau cŵl i'w wneud yno. Byddwn yn bendant yn argymell edrych ar y APIs CS50. Rydw i'n mynd i edrych ar y API Bwyd Harvard yn arbennig am ychydig. Un peth dwi wedi cynllunio mewn gwirionedd yn y wefan hon NOMS Harvard, sy'n defnyddio'r API Bwyd CS50 i adfer y fwydlen HUDS ar gyfer y diwrnod. Ac ar gyfer pobl ysgol estyniad, HUDS yw'r gwasanaeth bwyta yn Harvard. Beth fyddwch chi'n ei gael yn y dudalen hon sy'n cynnwys yr holl brydau bwyd am y diwrnod, felly rydym yn gweld cinio. Mae gennym ychydig o gategorïau gwahanol. Mae gennym y ffa a gorsaf grawn cyfan. Mae gennym yr orsaf reis brown. Gallwn weld am brunch gennym y eitemau bwyd ychydig. Os byddwn yn clicio arnyn nhw, yna rydym yn cael y wybodaeth am faeth. Byddwch yn gweld hyn yn y wybodaeth am faeth ar gyfer grawnffrwyth, rhag ofn eich bod yn pendroni. Ac felly eto, rydym yn mynd i cyfoedion i ben yn ôl yma ychydig a gweld beth yn union mae hyn yn ei wneud i gael y data hwn. Ac mae'n troi allan i beidio mewn gwirionedd fod yn gymhleth iawn o gwbl. Mae'r ffeil hon yn edrych yn flêr ychydig, ond cadwch mewn cof bod hyn yn ymdrin â'r wefan gyfan, ac os byddaf yn sgroliwch i lawr rydym yn gweld hyn newid data swyddogaeth. Nawr, dim ond i fod yn glir, mae hyn wedi'i ysgrifennu mewn CoffeeScript, sy'n iaith nad ydych yn ôl pob tebyg wedi ei weld o'r blaen. Ond mae'n eithaf darllenadwy, felly byddaf yn cerdded drwyddo fel pe bai'n pseudocode. Dyddiad Newid yn swyddogaeth sy'n mynd i gymryd yn y gwerth dyddiad, ac mae hefyd yn mynd i gymryd yn gyntaf, nad ydym yn poeni am gymaint. Ond y peth pwysig yw ei fod wedi y dyddiad hwn, a bod dyddiad yn y dydd yr ydym am i ofyn am bob un o'r eitemau bwyd ar gyfer. Ac yna byddwch yn gweld mae gennym ychydig o gystrawen yma, sydd yn y bôn dosrannu y dyddiad hwnnw i mewn i fformat darllenadwy. Mewn geiriau eraill, y API ei gwneud yn ofynnol y dyddiad mewn fformat penodol. Ni allwch ddweud Tachwedd 16, 2012 OC. Ni fydd yn gwybod beth i'w wneud â hynny. Mae am y dyddiad mewn fformat penodol. Mae pob rydym yn ei wneud yma yn rhoi yn union y fformat hwnnw, sydd yn werth flwyddyn ac yna cysylltnod, mae gwerth mis, arall cysylltnod a gwerth dyddiad. Ac rydym hefyd yn dweud ein bod am i'r data fod yn allbwn yn JSON. Nawr rydym yn gwneud y cais hwn AJAX, ac fel y soniais yn gynharach, jQuery Mae swyddogaeth hon AJAX super defnyddiol y mae pob angen i chi ei wneud yw nodi bydd paramedrau ychydig i lawr yma, ac yn rhoi chi yn ôl yn union beth rydych ei eisiau. Rydym yn dweud wrtho fod y URL yr ydym am iddo fynd i yw hyn CS50 API Bwyd, yr ydym yn cael oddi wrth y fanyleb. Rydym yn dweud ein bod am y data yn JSON a bod rydym yn mynd i roi data hwn yr ydym wedi diffinio hyd yma. Dyma'r diwrnod yr ydym am i'r eitemau bwyd ar gyfer. Ac yna i gyd mae'n rhaid i ni ei wneud yw diffinio rhyw fath o swyddogaeth llwyddiant, sydd yn y bôn yr hyn sy'n digwydd pan fydd y API yn dychwelyd y data. Mewn geiriau eraill, rydym wedi pecynnu i fyny pob un o'r paramedrau yr ydym am, sydd yn yr achos hwn yw'r diwrnod ein bod am iddi a'r ffaith ein bod am iddi yn JSON, ac rydym yn ei anfon i ffwrdd i'r API, felly nawr mae'r API yn dweud, iawn, yma yw eich data, Cawn ef yn ôl i chi. Mae gennym y, swyddogaeth llwyddiant sy'n golygu o gofio bod y API llwyddiannus yn dychwelyd rhywfaint o ddata, beth ydym yn ei wneud ag ef? Ac mae'n troi allan bod yr holl ydym yn ei wneud yw galw y diweddariad hwn swyddogaeth ddewislen â beth bynnag y API wedi dychwelyd, fel y gallwn chwilio am y a gweld bod yr holl rydym yn ei wneud yn defnyddio criw o gystrawen newydd yma i ddiweddaru'r HTML a mewnosod y data newydd. Beth mae hyn yn caniatáu yw gennym y saethau ar y naill ochr, a gallwn glicio, ac yn awr rydym yn edrych ar y data ar gyfer y diwrnod nesaf ac eto ar gyfer y diwrnod nesaf, a phob tro y mae'n ei ddiweddaru bod gwerth dyddiad ac ymholi y API, mynd yn ôl rhywfaint o ddata a'i roi i mewn i'r safle. Unwaith eto, gallwch weld, super, super defnyddiol. Mae hyn yn app yn cymryd i mi ychydig oriau i hacio gyda'i gilydd, ac mae gennyf brofiad ychydig yn fwy, yn amlwg, ond mae eich CS50 prosiect terfynol Gall edrych rhywbeth yn debyg iawn hyn. APIs yn cael eu super pwerus ar gyfer faint o ymdrech a wneir ganddynt. Y peth olaf i mi i'n mynd i fynd dros yn APIs ychydig yn fwy cyffredinol. Ni fyddaf yn mynd mor bell i mewn iddynt cyn belled ag y hyn y maent yn ei wneud yn benodol, ond byddaf yn rhoi syniad i chi o'r hyn sydd ar gael. 2 rhai yn ddefnyddiol iawn, os oes gennych ddiddordeb mewn dadansoddiad delweddu data neu neu unrhyw beth fel 'na, yn Freebase a Wikipedia. Wikipedia-tybiaf eich bod i gyd yn gwybod-yn wyddoniadur ar-lein rhad ac am ddim, ac mewn gwirionedd mae ganddo API, felly os ydych am i, er enghraifft, cael yr holl o'r testunau a'r erthyglau ar gyfer octopws gallwch yn hawdd iawn gwneud hynny. Dim ond dweud hey, Wikipedia API, hoffwn i gael y data a ddychwelwyd fel hyn, a byddwn yn ei hoffi yn y fformat hwn, ac yn yr erthygl hoffwn yn octopws, ac yn gyflym iawn y bydd yn rhoi chi yn ôl y wybodaeth honno. Gall hynny fod yn ddefnyddiol iawn os ydych am wneud rhyw fath o safle mae hynny'n gwyliwr gwell ar gyfer Wikipedia neu rywbeth fel 'na. Freebase yn fath o tebyg, er ei fod yn ychydig yn galetach cyn belled ag API. Freebase yn debyg Wikipedia yn ei fod yn wyddoniadur ar-lein sy'n cynnwys llawer a llawer o ddata gwahanol am bob math o bynciau gwahanol, ond mae'n cael ei storio mewn cronfa ddata berthynol, sydd ychydig yn wahanol i Wikipedia. Wikipedia wedi ei erthyglau ac erthyglau gysylltu ag erthyglau eraill, ond ar gyfer y rhan fwyaf, os ydych am i'r data ar gyfer octopws, byddwch yn mynd i'r erthygl octopws, cael y data, ac mae gennych griw o destun am octopysau, felly mae hynny'n wych. Freebase yn gweithio mewn modd ychydig yn fwy cymhleth yn y popeth yn perthyn i'w gilydd. Mewn geiriau eraill, os ydym yn chwilio am octopws yna mae'n wedi i griw o gategorïau sy'n gysylltiedig ag ef. Er enghraifft, ei fod yn anifail, mae'n byw o dan y dŵr, mae ganddo tymheredd y corff penodol. Nid wyf yn gwybod. Ac mae pob un o'r categorïau cysylltiadau i lefydd eraill lle gallwch fynd i weld pethau gyda hynny un categori. Mewn geiriau eraill, byddai'r octopws set ddata yn cynnwys dolen at y data a osodwyd ar gyfer yr holl anifeiliaid, ac y byddai gadael i mi symud o gwmpas yn y gronfa ddata yn gyflym iawn. Gall hyn fod yn ddefnyddiol iawn os ydych yn gwneud rhywbeth fel cymariaethau. Mewn geiriau eraill, ac ystyried beth penodol, rydych am weld beth arall y mae'n ymwneud â a gweld beth arall nad yw'n gysylltiedig â. Y math yna o beth. Gall fod yn ddefnyddiol mewn nifer o ffyrdd. Os ydych yn chwilio am fwy o her ac i fod yn gallu gwneud rhai pethau yn fwy cymhleth Byddwn yn ystyried cymryd golwg ar y API Freebase. Ond i raddau helaeth, Wicipedia yn lle syml iawn i fynd mor bell â chael gwybodaeth. Arall lle y byddaf yn edrych arno yw Last.fm, ac rwy'n wir yn mynd i fynd i'r safle rhag ofn nad yw rhai pobl yn gyfarwydd, ond mae Last.fm yn y bôn yn gerddoriaeth chwaeth ac argymhellion wefan. Gallwch wneud cyfrif. Gallwch ddechrau cerddoriaeth llwytho i fyny o eich chwaraewr cerddoriaeth i'r wefan, ac yn y bôn bydd yn dechrau rhoi argymhellion cerddoriaeth seiliedig ar yr hyn ydych yn gwrando. Er enghraifft, os byddwch yn mynd i dudalen eich proffil-mae hyn yn fy- gallwch weld bod gennych restr o yn ddiweddar gwrando ar draciau. Gallwch weld hoff artistiaid ar y cyfan, y cyfan y math hwnnw o beth, ac unwaith eto, mae 'na API mawr y tu ôl Last.fm,  a gallwch ei ddefnyddio i wneud llawer a llawer o bethau 'n sylweddol oera. Er enghraifft, byddaf yn mynd i dudalen ffrind a gaiff y wefan Offer Last.fm. Mae hyn mewn gwirionedd llwyfan arall sydd wedi adeiladu ar y API Last.fm, ac mae'n gwneud nifer o bethau diddorol 'n bert. Os byddaf yn logio i mewn gyda fy enw defnyddiwr, er enghraifft, Gallaf ofyn i greu cwmwl tag, er enghraifft, a beth mae hynny'n mynd i wneud yw rhoi i mi yn ôl delwedd o yr holl genres gwahanol a'r math hwnnw o beth fy mod yn hoffi i wrando. Sut mae'n gwneud hyn? Iawn yn y bôn mae'n dweud wrth y API Last.fm dyma y defnyddiwr hwn. Hoffwn i wybod y genre o bob cân eu bod wedi erioed gwrando arnynt, a gallwch wneud hynny drwy wneud galwad AJAX 'n bert syml i'r API Last.fm. Byddwch yn mynd yn ôl rhestr mawr, ac yna yn amlwg rhai pethau eraill yn cael ei wneud i droi i mewn i cwmwl gair, ond gallwch weld y cyfan mae'n hawdd iawn i gael gafael ar ac yn hawdd iawn i'w defnyddio. Really braf ar gyfer nifer o bethau. Rwy'n credu bod am yr holl byddaf yn dweud y cyfan. Un peth olaf 'n annhymerus' yn sôn am APIs yn gyffredinol yw bod byddwch weithiau yn rhedeg i mewn i rywbeth a elwir yn gyfradd cyfyngu, a'r syniad o gyfradd cyfyngu yw nad ydych am i gam-drin APIs. Mewn geiriau eraill, mae'n braf iawn bod llawer o'r gwefannau hyn yn cael APIs y gallwch fynd i, a defnydd rhad ac am ddim. Fodd bynnag, os ydych yn gwneud miliynau neu biliynau o geisiadau y dydd, er enghraifft, os ydych yn sownd mewn cylch diddiwedd sydd wedi ganmil holi rhyw fath o API a mynd yn ôl llawer iawn o ddata, yn amlwg nid yw hynny'n dda, felly yr hyn y mae llawer o APIs ei wneud yw wedi cyfyngu ar y gyfradd hon yn nodwedd sy'n dweud unig y cewch wneud 1,000 o geisiadau y dydd i bob cyfeiriad IP neu rywbeth fel 'na. Ac os ydych chi'n gwneud llawer o brofi a bod y math yna o beth, byddwch weithiau yn rhedeg i mewn i hynny, ac yn sydyn bydd yn cau'r chi i ffwrdd ac yn dweud na, dydw i ddim yn rhoi unrhyw ddata mwy. Beth ydych chi eisiau ei wneud yw chwarae yn ôl y rheolau. Byddwch am wneud yn siŵr eich bod yn darllen y fanyleb API yn ofalus. Gall Os yw wedi rheolau penodol ynghlwm wrtho, fel chi ond yn gwneud ymholiadau X y dydd neu gallwch gael mynediad i rhan o'r gronfa ddata nifer penodol o weithiau neu rywbeth fel 'na chi am wneud yn siŵr eich bod yn cadw at hynny. Cyn belled ag y byddwch yn chwarae o fewn y rheolau hynny mae'n debyg y byddwch yn cael amser braf iawn gan ddefnyddio APIs. Mae eich prydau parod cyffredinol yw APIs mewn gwirionedd, yn ddefnyddiol iawn. Mae 'an API ar gyfer bron unrhyw wasanaeth ar y we mawr allan yno. 'N bert lawer unrhyw ran o'r Tools Google Suite, Google Maps, Google Earth, GMail, Google Calendar, pethau hynny i gyd wedi APIs. Gallwch eu defnyddio i ddata get o'r gweinydd ac anfon data i'r gweinydd. Mewn geiriau eraill, os ydych am wneud app calendr y gellir diweddaru rhywun Google Calendar, mae 'na API ar gyfer hynny. Os ydych am wneud rhywbeth sy'n mynd i ddweud wrthych ble y lleoliad o gyfeiriad penodol yn gallwch ddefnyddio'r Maps Google API ar gyfer hynny. APIs yn hynod ddefnyddiol, ac maent yn ym mhob man. Os oes gennych ddiddordeb mewn rhyw fath o syniad, mae'n debyg bod API cysylltiedig y gallwch eu defnyddio i gael llawer o ddata yn gyflym iawn ac yn syml iawn. Os ydych chi'n dal i chwilio am brosiect neu os ydych eisiau chwarae o gwmpas gyda rhywbeth yn gyffredinol, APIs yn bendant yn werth ei wneud. Diolch, ac rwy'n hapus i ateb unrhyw gwestiynau a all fod gennych guys gennych. Iawn, diolch llawer. [CS50.TV]