[Powered by Google Translate] [Семінар] [Уводзіны ў праграмаванне інтэрфейсаў API] [Billy Janitsch] [Гарвардскі універсітэт] [Tommy MacWilliam] [Гэта CS50.] [CS50.TV] Прывітанне, усім, я Білі, і сёння я буду казаць пра API, або інтэрфейсы прыкладнога праграмавання, у прыватнасці, у кантэксце CS50 канчатковага праекты і таму падобнае. Увогуле, што API? У вельмі шырокім сэнсе, гэта свайго роду пасярэднік, які дазваляе 2 шт праграмнае забеспячэнне для сувязі адзін з адным. Гэта свайго роду вельмі шырокае вызначэнне, і не тое, што адпаведныя за тое, што мы шукаем. Тое, што мы сапраўды хочам нейкая карысная сярэдзіна мець зносіны з нейкай базы дадзеных дзе-небудзь. Вось графік, і ў асноўным ідэя ў тым, што Мы прыкладанне, і мы хочам атрымаць дадзеныя з базы дадзеных, але мы не хочам, каб запыт да базы дадзеных напрамую. Замест гэтага мы хочам, каб прайсці праз такога роду сярэдні чалавек, API. Ідэя, якая нумарамі 2 і 3 на графік Абодва яны зьбіраюцца быць вельмі складанай і бруднай. Іншымі словамі, калі на інтэрфейс прыкладання запытаў да базе даных, гэта, верагодна, будзеце выкарыстоўваць SQL табліц, і ўсё такога роду рэчы, і мы даведаліся трохі аб ім у CS50, але ў цэлым, Вы заўважылі, што гэта трохі болю. Гэта становіцца вельмі, вельмі складаны і брудны, асабліва, калі вы робіце складаных запытаў і таму падобнае. Тое, што мы сапраўды хочам гэта нейкі карысны і просты спосаб каб атрымаць гэтыя дадзеныя, і гэта ідэя нумарамі 1 і 4 на графіцы. Іншымі словамі, мы хочам сапраўды просты спосаб расказаць API, што атрымаць для нас і сапраўды просты спосаб атрымаць гэтыя дадзеныя назад. Існуе адзін галоўны шлях, што гэтыя дадзеныя, як правіла, адпраўленыя і атрыманыя, які JSON, або JavaScript Object Notation. Гэта можа адрознівацца трохі, наколькі, як вы адправіць запыт API. Іншымі словамі, калі вы хочаце, каб некаторыя пэўную колькасць дадзеных, як вы кажаце API, каб атрымаць гэтыя дадзеныя могуць мяняцца няшмат. Звычайна гэта прадугледжвае стварэнне свайго роду сеткавы запыт. Іншымі словамі, доступ да нейкай URL, што збіраецца распавесці API менавіта тое, што вы хочаце, але дадзеныя амаль заўсёды адаслаў назад, Іншымі словамі, нумар 4 у JSON. Што такое JSON менавіта? Як я ўжо сказаў, JavaScript Object Notation. Гэта ў асноўным універсальны стандарт для перадачы і прыёму дадзеных. Ідэя складаецца ў тым, што ў вас ёсць гэтыя 3 катэгорыі рэчаў. У вас ёсць масівы, HashMaps, і прымітываў. Масівы і HashMaps вы глядзелі на трохі ў CS50, але ты накшталт атрымаў вельмі строгім сэнсе таго, што яны ёсць. Іншымі словамі, з масівамі вы ведаеце, што яны ўвесці мяжы, так што ў вас ёсць толькі адзін від тыпу, які ідзе па ўсім масіве. JSON з'яўляецца значна больш паблажлівыя да такога роду рэчы. У прынцыпе ідэя вам пабудаваць гэты аб'ект, якая можа складацца з любога з гэтых 3 рэчаў і можа складацца з некалькіх тыя з іх, і яны могуць быць укладзенымі. Вось накшталт прыкладу JSON, якіх гэтыя фігурныя дужкі тут прадстаўляць вашы HashMap, і HashMap ў асноўным адлюстраванне свайго роду ключ да нейкай каштоўнасцю. Вы ўбачыце тут, што ў нас ёсць ўласцівасці ключа, і гэта адлюстраванне на масіў, які ўсё гэта справа. Мы бачым яшчэ адзін элемент HashMap, што гэты ключ isAwesome, які адлюстроўвае на прымітыўным значэнні праўда, іншымі словамі, лагічнае значэнне. Прымітывы могуць быць радкамі. Яны могуць быць цэлымі лікамі. Яны могуць быць Bools, нічога падобнага. І вы бачыце змесціва гэтага масіва, які паказвае на ўласцівасці мае 2 радкі ў ім, автомодельному і выдатна. Тыя, у 2 ўласцівасці JSON, і мы бачым, што JSON з'яўляецца дзіўным. Каб глядзець на гэта больш уважліва я збіраюся пабудаваць Больш складаны прыклад JSON тут. Давайце пачнем з масівам, напрыклад, проста пусты масіў. Але гэта свайго роду сумна, таму мы збіраемся запоўніць яго крыху, і як я ўжо сказаў, масівы ў JSON маюць тып мяжы, такім чынам, мы маглі б таксама ёсць радок тут, што прывітанне, і гэта яшчэ адзін элемент гэтага масіва. А таксама, мы маглі б дадаць hashmapping тут, які будзе мець некалькі адлюстраванняў. Гэта будзе мець адлюстраванне назвы ў радок Білі. У нас ёсць адлюстраванне імя Білі, і мы маем адлюстраванне Любімы колер на сіні. Гэта ў асноўным добры прыклад JSON. Гэта збольшага трапляе ў-воклічы, патрэбна коска там-ўсё розныя яе часткі. Зноў жа, гэта не звязана ўвесці на ўсіх, так што вы можаце мець любыя тыпы ўнутры ўсё, што вы хочаце, і ідэя, што гэта автомодельному. Іншымі словамі, гэта прама тут з'яўляецца аб'ект JSON, як усё гэта справа, як толькі ў гэтым, так што вы можаце мець прымітыўную быць аб'ектам, Масіў быць аб'ектам або HashMap быць аб'ектам. Як вы можаце бачыць выгляд, JSON вельмі, вельмі карысная тым, што яна так універсальная. Вы можаце мець любое магчымае дадзеных, якія можна захоўваць у сабе JSON. Гэта робіць яго сапраўды добры мова для працы з API-інтэрфейсаў таму што гэта ў значнай ступені азначае, што незалежна ад дадзеных, якія вы хочаце там збіраецца быць нейкі спосаб, каб вярнуць яго ў JSON. Праз некалькі уласцівасцяў, якія робяць JSON асабліва добрая для такога роду рэчаў. Як вы можаце бачыць, у параўнанні з шмат рэчаў, якія вы ўжо працуеце ў CS50 гэта параўнальна вельмі лёгка чытаюцца, а таксама вельмі лёгка пісаць. Вы можаце водступу гэта, калі вы хочаце, як я рабіў у тым, што, напрыклад, , Які дае вам добрую, даволі версія, якую вы можаце бачыць вельмі добра. Але акрамя таго, гэта таксама лёгка чытаць і пісаць на кампутары. Іншымі словамі, гэта лёгка разабраць і лёгка кадзіраваць, Гэта азначае, што яна даволі хутка па меры чытання дадзеных, то, і JSON могуць быць створаны вельмі хутка. Гэта таксама вельмі лёгка атрымаць доступ да розных частках JSON і таму падобнае. Гэта ўсё выдатна, і, акрамя таго, той факт, што гэта автомодельному, Іншымі словамі, той факт, што вы можаце мець у JSON JSON ў JSON сапраўды добрая для захоўвання дадзеных. Іншая частка, якая, як правіла, вельмі карысна ў працы з API-інтэрфейсаў з'яўляецца JQuery. Вы даведаліся трохі JavaScript, які з'яўляецца добрым спосабам маніпуляваць HTML і CSS межах аднаго сайта. Але гэта можа быць выгляд болю код у просты JavaScript, ў значнай ступені таму, што JavaScript з'яўляецца вельмі падрабязным мове. Вы павінны даведацца шмат сінтаксісу і проста зрабіць вельмі простыя рэчы гэта займае шмат кода, так JQuery гэта бібліятэка для JavaScript. Іншымі словамі, гэта наяўнасць файла, які можна загрузіць , А затым выкарыстоўваць JQuery функцыі, каб зрабіць пэўныя рэчы. І Jquery асноўным робіць вашу жыццё нашмат прасцей. Гэта спрашчае тое, што б сотні радкоў у JavaScript да некалькіх радкоў у jQuery. Гэта асабліва карысна, калі вы выкарыстоўваеце API, таму што наогул як вы будзеце атрымліваць доступ да API-інтэрфейсаў, зрабіўшы AJAX запыты, і я лічу, Дэвід, згаданыя ў лекцыі, што AJAX запыты як правіла, калі вы робіце запыт сеткі на нейкі сервер і вяртанне свайго роду дадзеных і абнаўлення старонкі імгненна. У той час як у звычайным JavaScript, што б вар'ятам колькасцю ліній праверыць усе загалоўкі і рабіць усё такога роду рэчы, JQuery мае вельмі простую функцыю пад назвай AJAX, і ўсё, што вам трэба зрабіць, гэта даць AJAX параметры, якія вы хочаце даць API, Размяшчэнне API і любыя дадатковыя роду варыянты, якія вы хочаце наладзіць. Гэта вельмі, вельмі добра і вельмі карысна для такога роду рэчы. Гэта ўсё, што нам трэба, каб пачаць атрымліваць нашы рукі брудныя ў API. Я збіраюся падняць некалькі прыкладаў і даследаваць іх розных уласцівасцяў і чаму яны карысныя для розных відаў рэчаў. Першае, што я на самой справе паказаць вам, гэта тое, што я працую на на мой даследчую лабараторыю, якая прагляду Ngram, і ў асноўным ідэя прагляду Ngram, што вы можаце шукаць нейкія словы ці фразе і паглядзець, як часта яна з'явілася ў пэўным наборы тэксту з цягам часу. У гэтым прыкладзе вось гэтага набору дадзеных немаўлятаў , Якія нарадзіліся ў Нью-Ёрку ў перыяд паміж 1920 і 2000 гадамі. Мы можам шукаць, напрыклад, для імя Джэніфер, і мы бачым, што да 1960-х ён сапраўды не быў выкарыстаны так ужо і шмат, , А затым мы трапляем ў наступныя гады яна становіцца ўсё больш і больш выкарыстоўваецца. Мы можам таксама зрабіць параўнанне, таму калі мы параўнаем Джэніфер, напрыклад, Thomas, мы бачым, Томас быў даволі распаўсюджаным на працягу ўсёй гісторыі, у той час як Джэніфер з'яўляецца больш новым імем. Мы можам зрабіць такую ​​рэч. Як гэта прыкладанне працуе? У асноўным, ён працуе праз API. Іншымі словамі, у нас ёсць пэўныя параметры тут. У нас ёсць параметры таго, што мы на самай справе шукалі, якія гэтыя імёны, а то ў нас некалькі іншыя ўласцівасці, як па восі Y і восі X. Вы можаце бачыць, у нас ёсць некалькі розных варыянтаў, наколькі Часовае дазвол на выкарыстанне і таго падобнае. У нас ёсць гэтыя параметры да таго, што дадзеныя, мы на самай справе хочам ад базы дадзеных, і мы хочам, каб гэтыя дадзеныя назад у некаторай карысным спосабам. Звычайна, калі мы запытаў да базе даных наўпрост было б накшталт быць боль, каб зрабіць Меркавана таму, што гэта дадзеныя аб дзіцячых імёнаў жыве ў некаторай базе дадзеных дзе-небудзь, і гэта будзе сапраўды складана прыйдзецца запытаць яго ўручную і вырашыць, якія менавіта дадзеныя, каб вярнуцца. Іншымі словамі, мы клапоцімся толькі пра Джэніфер і Томаса у дадзеным выпадку, і мы клапоцімся толькі пра на пэўнай восі, і ўсё такога роду рэчы. Як мы можам абыйсці гэта? Каб капаць у гэтым API трохі больш я пакажу вам яшчэ адзін прыклад гэтай платформе , Якая выкарыстоўвае некалькі іншы набор дадзеных. Гэты набор дадзеных, замест таго, каб дзіцяці імя, на самай справе проста ўсё раздрукаваць базу дадзеных публікацыі адкрытага бібліятэкі, , Якая з'яўляецца гіганцкім крыніцай тэкстаў, апублікаваных на працягу апошніх 100 гадоў або каля таго. Ідэя ў тым, у нас ёсць гэтая compository мільёны і мільёны тэкст, якіх мы можам зараз шукаць розныя словы і фразы цалі Вось прыклад, які змяняецца мала адрозніваецца ад папярэдняга прыкладу Я паказаў вам, што ў нас ёсць гэтыя 3 пошукавых запытаў, Вайна, вайна, і французскія словы да вайны, якая гераў. І мы шукаем у межах 3 розных участках агульнай базе дадзеных. Іншымі словамі, у гэтым першым запыце мы толькі пошукам у ЗША, ў другой толькі ў Вялікабрытаніі, а трэці толькі з прац, апублікаваных у Францыі. Мы бачым некаторыя цікавыя заканамернасці. Напрыклад, мы бачым прама тут якая, ой, я пераблытала восі трохі, але вы можаце бачыць прама ў гэтай галіне тут вакол Грамадзянская вайна ёсць вялікі ўсплёск у амерыканскім выданні але не такі вялікі ўсплёск ў двух іншых, і гэта відавочна, таму што Грамадзянскай вайны ў ЗША, што адбываецца ў гэтай кропцы. Мы можам убачыць некаторыя класныя рэчы там, але тое, што мы сапраўды клапоцімся аб тым, як мы атрымалі гэтыя дадзеныя. Я вазьму цябе за кулісамі ў гэта прыкладанне ў няшмат. Спрытны трук, калі вы працуеце з сайтам і выгляд хочуць ведаць, што адбываецца за кулісамі, вы можаце адкрыць інструменты для распрацоўнікаў. Я збіраюся выкарыстоўваць інструменты Chrome распрацоўшчыкам, і, каб дабрацца да тых, Вы можаце зрабіць кантроль, зрух, J, і які даставіць вас на кансоль JavaScript. Ёсць некалькі ўкладак тут. Усе яны могуць быць вельмі карысныя пры розных абставінах, але я клапачуся аб сетцы Ўкладка прама цяпер, і я на самой справе трэба абнавіць, каб атрымаць гэта праца. Ой, прабачце. Ён любіць даваць выпадковы прыклад. Добра, мы будзем выкарыстоўваць гэты прыклад, а не тады. Ідэя ў тым, ці ёсць гэты API тут, і вы можаце ўбачыць менавіта тое, што API вяртаюцца. Гэта тое, што заяўка вяртаецца з API, адправіўшы гэтую просьбу. Дазвольце мне павялічыць трохі, і мы можам убачыць у асноўным гэта проста шэраг пар ключ-значэнне ў JSON. Іншымі словамі, у нас ёсць гэтая HashMap тут, што гэта адлюстраванне значэнняў. Іншымі словамі, гэта адлюстраванне гадоў значэння. У 1765 годзе ўсе, што слова, якое мы першапачаткова шукалі выкарыстоўваецца 90 раз з 1 млн., такім чынам, мы вяртаемся гэты вынік. Гэта не зусім JSON, так як у нас ёсць гэтая маленькая загаловак выніку тут, але зьвярніце ўвагу, што ўвесь гэты аб'ект тут проста вялізная кропля JSON. У нас ёсць масіў, які змяшчае тут увесь гэты элемент, і вы можаце бачыць, што ўвесь элемент заканчваецца там, а то ў нас яшчэ адзін вялікі элемент што праходзіць ўвесь шлях да канца, і што на гэтым сканчаецца. У нас ёсць вельмі вялікі масіў з 2-ма аб'ектамі ў ёй, і кожны з гэтых аб'ектаў з'яўляецца HashMap. Вы можаце бачыць, у межах кожнага з гэтых HashMaps мы маем адлюстраванне гэтага паказчыка значэнне 0 і значэнне гэтай велічыні на іншую HashMap, які зноў з'яўляецца адлюстраванне значэнняў па восі Х да значэнняў Y восі. Вы можаце бачыць, JSON становіцца крыху больш складана, але ў цэлым, гэта на самай справе вельмі карысная, і гэта вельмі лёгка атрымаць доступ параўнанні з іншыя розныя формы запісу. Што тычыцца таго, што мы на самай справе адпраўкі дадзеных API, каб атрымаць, Я збіраюся пайсці ў задняй частцы трохі тут. Гэта вялікі файл JavaScript які апрацоўвае ўсе ўзаемадзеяння вэб-прыкладанняў, і таму мы не клапоцімся пра большасць, але мы клапоцімся пра некаторыя з іх. Напрыклад, мы клапоцімся пра гэта BuildQuery функцыі, і ідэя гэтая функцыя ў асноўным гэта азіраючыся на старонцы, высветліць, што карыстач жадае, каб запытаць, іншымі словамі, праверкі гэтых скрынках, дзе яны ўводзяць свой ўмовы пошуку, праверкі розных Y і X восі значэнняў, якія яны абралі, і ўсё таму падобнае, і гэта будзе выплёўваць гэтага запыту значэння, якое затым можна адправіць у API. Гэта здаецца складаным, і гэта даволі складана але тое, што я збіраюся зрабіць, на самай справе, я ўжо раблю гэта, і гэта выдатна- у тым, што я збіраюся атрымаць кансоль, каб раздрукаваць менавіта тое значэнне запыту што гэта адпраўка да API. Гэта на самай справе прама тут. На жаль, яна выводзіць шмат рэчаў. Але гэта тое, што мы клапоцімся аб, гэты аб'ект прама тут. Гэта запыт аб'екта. Іншымі словамі, гэта менавіта тое, што вэб-прыкладанне пасылае на API, і таму давайце паглядзім ўнутр трохі, і мы бачым, у нас ёсць некалькі значэнняў тут. Мы бачым, у нас ёсць гэты лічыльнік тыпу, які з'яўляецца выпадкаў на мільён слоў, а гэта менавіта тое, што мы выбралі па восі Y сюды. Вось дзе што ідзе. У нас ёсць база дадзеных значэнне, што азначае, што ёсць нейкая пэўная база дадзеных што гэтыя дадзеныя жывем, і мы хочам атрымаць доступ да дадзеных, што канкрэтна у адрозненне ад дзіцячых імёнаў дадзеных, напрыклад. Тады мы маем гэтай групы значэнне, якія кажуць, што мы хочам шукаць у год, у адрозненне ад любое іншае значэнне восі X. Тады ў нас ёсць метад, які некаторыя API-інтэрфейсаў будзе зрабіць некалькі рэчаў. Іншымі словамі, гэта API можа вяртаць іншыя віды дадзеных, але ў гэтым выпадку, мы хочам, каб адлюстраванне значэнняў па восі Х да значэнняў Y восі. Гэта тое, што кажа, што ён там рабіць, і ў нас ёсць гэты масіў пошуку межаў, які утрымоўвае 2 значэння. Першае, што мы бачым тут, што ўсе значэння змяшчаюцца ў той першы скрыначку на самым версе. Іншымі словамі, мы хочам, каб шукаць словы бітва, і мы хочам, каб фільтраваць ад ангельскіх тэкстаў у амерыканскай літаратуры. У нас гэтая краіна, якая з'яўляецца ЗША. У нас ёсць мова, які з'яўляецца англійская, таму ў нас ёсць усе гэтыя розныя часткі што ўсе кажуць API менавіта тое, што мы хочам. Мы не ведаем, што тыя дадзеныя, якія мы вернемся яшчэ, але мы ведаем, што дадзеныя збіраюцца прыняць пэўную форму. Гэты прыклад з'яўляецца свайго роду на складаную бок, і вы не абавязкова выкарыстоўваць API гэтага комплексу, Але гэта, каб паказаць вам далёкасці і магутнасці, што API-інтэрфейсаў можа зрабіць. Іншымі словамі, з дапамогай параўнальна просты запыт сістэмы, мы ў асноўным маюць поле ўводу з некалькімі іншымі селектараў ў розных месцах. Дазвольце мне маштаб тут. У нас ёсць поле ўводу з некалькімі рознымі выбар метададзеных, і ў нас ёсць Y восі X і выбар восі. Мы на самай справе не так ужо шмат палёў, і мы бачым вельмі лёгка мы можам запытаць нейкія API і атрымаць дадзеныя назад, а затым пакласці яго ў гэтай табліцы, якія затым збіраюцца паказаць яго ў карысны шлях. Каб паглядзець на іншы прыклад, які мог бы быць трохі больш звыклай для вас, хлопцы Мы збіраемся звярнуцца да Facebook. API facebook, называецца Графік Facebook, і ў асноўным, што гэта азначае, Facebook бачыць сябе ў якасці гэтай шырокай базы дадзеных з мноства розных частак, якія ўсе маюць пэўныя адносіны адзін да аднаго. Іншымі словамі, я карыстальнік на Facebook, так што ў мяне ёсць профіль, і ў мяне таксама ёсць пэўныя сяброў, і кожны з іх мае профіль, і кожны з маіх сяброў ёсць сцяна, якая мае розныя заўвагі па ім, і кожны з гэтых каментарыяў мае сімпатыі і ўсё таму падобнае. Там шмат розных частках да Facebook. Гэта вельмі складанае API, і ёсць тоны вы можаце рабіць з ім, але гэта на самай справе даволі простая ў выкарыстанні. Я збіраюся пачаць з таго, ці збіраецеся graph.facebook.com / billyjanitsch, , Які з'яўляецца маім унікальнае імя ўліковага запісу і імя вашай ўліковага запісу будзе альбо нейкія словы, калі вы абралі яго, ці гэта можа быць проста набор лічбаў. Тое, што мы вернемся даволі асноўную інфармацыю. Мы бачым, што ў мяне ёсць імя, якое Білі, прозвішча, якая з'яўляецца Janitsch. Там ёсць унікальны ID Facebook якая ў мяне ёсць. Вы можаце бачыць, што я мужчына і што ў мяне ёсць налада мовы на брытанскім англійскай. Іншымі словамі, мы бачым асноўную інфармацыю тут. Гэта не занадта шмат, але гэта дае нам ўяўленне пра тое, што там. Мы можам зрабіць тое ж самае з Дэвідам малая, напрыклад. Я думаю, што яго завуць dmalan. Мы бачым, David Malan мае унікальны ідэнтыфікатар. У яго ёсць прозвішча, імя, імя па бацьку, прозвішча. Мы таксама бачым, што ён мужчына і мае сваю мову усталяваны ў амерыканскім англійскай. Іншымі словамі, мы бачым даволі асноўнай інфармацыі тут. Цяпер, што адбудзецца, калі мы паспрабуем праверыць нешта яшчэ? Скажам, я зацікаўлены ў тым, што Дэвід малая спадабаўся на Facebook. Я магу зрабіць / кахае. Цяпер мы сутыкнуліся з праблемай. У нас ёсць нейкая памылка, якая кажа маркер доступу патрабуецца запытаць гэты рэсурс. Але калі вы думаеце пра гэта, што на самой справе мае сэнс, таму што было б дзіўна калі б вы маглі атрымаць доступ да кожнай асобнай часткі базы дадзеных на Facebook проста ад нейкі просты API, дакладна? Іншымі словамі, па-відаць ваша інфармацыя не могуць быць даступныя любому, хто гэтага хоча. Гэтая памылка з'яўляецца дакладна, што гэта значыць. Некаторыя API патрабуюцца пэўныя дазволу для таго, каб атрымаць доступ да сваіх дадзеных. І нават больш прасунуты API-інтэрфейсаў, такіх як Facebook адна, запатрабуюцца пэўныя правы рабіць пэўныя рэчы. Я бачу, што асноўную інфармацыю аб David Malan. Я бачу, што ён мужчына і што ён жыве ў ЗША, Але я не магу бачыць нічога, што мінулае. Каб абыйсці гэтую праблему цяпер, Facebook мае гэта добры інструмент якая графа API Explorer, і ідэя, што гэта можна сартаваць складаюць дазволаў для сябе, зыходзячы з уласных рахункі і затым глядзець на рэчы, якія канкрэтна вашага рахунку можна прагледзець. Напрыклад, калі я раблю graph.facebook.com/billyjanitsch/likes- Упс, я думаю, у мяне ёсць для паўторнай праверкі майго маркера тут. Добра. Калі я зраблю гэта зноў, вялікае, цяпер я бачу, што я атрымліваю гэты аб'ект назад які кажа, што я люблю басейн локшына, якая знаходзіцца ў катэгорыі Гульні і цацкі. Мне падабаецца маржоў, якія адносяцца да катэгорыі жывёл. Гэта мая фактическая падобных Facebook. Яны ж, здаецца, няёмка. Але мы бачым, гэтыя дадзеныя ўсё вярнулася ў JSON. Гэта даволі чытанай. Іншымі словамі, мы павінны гэта адлюстраванне дадзеных у нейкі масіў, і кожны элемент гэтага масіва з'яўляецца HashMap, якая адлюстроўвае Назва, як і катэгорыі, як. Кожны, як мае унікальны ідэнтыфікатар. Ёсць ўсякія розныя рэчы дадзеных, якія мы можам атрымаць, і калі вы зацікаўлены ў выкарыстанні Facebook API для CS50 канчатковы праект ці нешта ў гэтым родзе, гэта на самай справе даволі выканальна. У асноўным, як вам абыйсці праверку сапраўднасці Справа ў тым Facebook выкарыстоўвае сістэму пад назвай OAuth або адкрытай аўтэнтыфікацыі, і я не хачу, каб патрапіць у гэта цяпер, таму што OAuth або іншага тыпу аўтэнтыфікацыі як правіла, вельмі моцна вар'іруюцца паміж рознымі API, так што я мог правесці доўгі час пераходу кожнага з іх, але на самой справе яны даволі відавочныя. Калі вы Google Facebook API, гэта вельмі лёгка чытаюцца. Там цэлы спец. Напрыклад, гэта дакументацыя для Facebook API, і вы можаце бачыць, што я знаходжуся на старонцы карыстальніка, таму я магу пазнаць усё аб розных відах рэчаў , Якія даступныя атрымаць як дадзеныя а таксама розныя дазволу, што мне трэба для таго, каб атрымаць да іх доступ. Як мы бачылі, нам не трэба дазвол на доступ да імя або падлогу, Але акрамя гэтага нам патрэбныя дазволу для большасці рэчаў. Гэтая старонка, або, дакладней, гэты сайт таксама скажа вам, як атрымаць маркерам, каб мець магчымасць ідэнтыфікаваць сябе. Большасць сістэм аўтэнтыфікацыі выкарыстоўваць свайго роду маркерам дзе вы атрымаеце гэта унікальнае значэнне, якое вельмі доўга і выпадковыя радкі, і такім чынам яны могуць звязаць запыт, што вы робіце з вамі. Іншымі словамі, яны ведаюць, што вы не робіце нічога падазронага са сваімі дадзенымі. Яны дакладна ведаюць, што вы атрымліваеце. Яны таксама ведаюць, што ў вас ёсць дазвол на прагляд гэтай інфармацыі. Калі вы зрабілі Facebook прыкладанне, і ваша прыкладанне мае пэўныя карыстальнікі, і тыя карыстальнікі не дапускаў, што прыкладанне для доступу да пэўных частках свой профіль, тады ўсё, што API ключ ці маркер, што прыкладанне выкарыстоўвае зможа атрымаць доступ да дадзеных для карыстальнікаў. Гэта можа здацца складаным, але гэта не так ужо дрэнна, і калі вы хочаце выкарыстоўваць Facebook Я б настойліва рэкамендуем вам Разгледзім гуляючы з іх API. Гэта вельмі крута, і вы можаце зрабіць шмат розных рэчаў з ім. Калі карыстальнік дае вам гэтыя дазволы вы нават можаце вярнуцца да API і сказаць, я хачу на самай справе адпраўляць паведамленні ў сцяне гэтага карыстальніка, ці я хачу, каб іх размясціць фатаграфію, і вось чаму на стужку навін вы будзеце часам атрымліваць гэтыя раздражняльныя рэчы кажучы ваш сябар глядзеў гэта відэа на нейкі загадкавы сайт ці нешта накшталт гэтага. Гэта таму, што прыкладанне было прадастаўлена доступу да запісу на сцяне гэтага чалавека. Ідэя ў цэлым, Facebook API даволі складаны, але і вельмі карысна. Вызначана варта праверыць, калі вы ўсё яшчэ шукаеце канчатковы праект. Іншы набор API-інтэрфейсаў, што я збіраюся перайсці на гэта CS50 API. Дазвольце мне павялічыць тут. CS50 быў на самой справе сабраў цэлы шэраг API-інтэрфейсаў , Які можна выкарыстоўваць для канчатковага праекта або проста за ўсё, што вы робіце. І яны галоўным чынам Гарварда звязаныя, і яны вар'іруюцца ад меню Huds, Напрыклад, у гэтым Гарвардскім падзей API, які дазволіць Вам атрымаць доступ да спісу розных падзей, якія адбываюцца ў Гарвардзе і таму падобнае. І такім чынам мы можам націснуць на любую з гэтых і атрымаць спецыфікацыю для яго, якія Вы зможаце знайсці для любога API, і ідэя яна дазваляе даведацца,, што канкрэтна патрабаваць ад API і як прасіць яго. Іншымі словамі, калі я хачу, каб усе падзеі, якія адбываюцца заўтра Затым я павінен, відавочна, даць яму гэтую дату, што я хачу ў пэўным фармаце, і B, ён скажа мне, што ён збіраецца аддаць мяне. Ён будзе казаць, што я збіраюся вярнуць цябе гэты аб'ект JSON, ці, як вы можаце бачыць, ёсць розныя фарматы. Вы таксама можаце вярнуць дадзеныя ў CSV, напрыклад. Але вы сапраўды ведаеце, што дадзеныя будзе выглядаць, калі вы атрымаеце яго назад так што вы можаце чакаць, каб рабіць пэўныя рэчы з ім. Мы можам пракруціць ўніз і ўбачыць, напрыклад, калі мы хочам, каб запытаць API каб атрымаць каляндар, то мы можам выкарыстоўваць дадзены URL і даць яму пэўныя параметры, якія збіраюцца быць дадзеныя, якія мы хочам сапраўды. І гэтак жа, калі мы хочам дадзеных назад у пэўным фармаце, то мы можам папрасіць яго высновы дадзеных у CSV, і гэта проста яшчэ адзін параметр, які мы перадаем у API. Шмат цікавых рэчаў, каб зрабіць там. Я вызначана рэкамендую праверыць CS50 API. Я буду глядзець на гэтую API харчавання Гарварда, у прыватнасці, для трохі. Адна рэч, я на самой справе прызначаны гэты сайт Гарвардскага Noms, які выкарыстоўвае API CS50 харчавання для атрымання Huds меню на дзень. А для людзей, пашырэнне школы, Huds з'яўляецца абедзенны службы ў Гарвардзе. Што Вы атрымліваеце гэтую старонку, якая ўтрымлівае ўсе стравы на працягу дня, таму мы бачым абед. У нас ёсць некалькі розных катэгорый. У нас ёсць бабовыя і ўся станцыя збожжа. У нас ёсць карычневы рыс станцыі. Мы бачым, для позняга сняданку ў нас ёсць гэтыя некалькі прадуктаў. Калі мы націснем на іх, то мы атрымаем інфармацыя аб харчаванні. Вы бачыце гэта харчаванне інфармацыя для грэйпфрутаў, у выпадку, калі вам цікава. І зноў жа, мы збіраемся зазірнуць у задняй часткі тут трохі і паглядзець, што менавіта гэта робіць, каб атрымаць гэтыя дадзеныя. І гэта, аказваецца, на самай справе не вельмі складанай наогул. Гэты файл выглядае трохі брудны, але майце на ўвазе, што гэты зварот ўвесь сайт, і калі я пракруціць ўніз мы бачым, гэтая функцыя змены дадзеных. Цяпер, проста каб было ясна, гэта запісана ў CoffeeScript, які з'яўляецца мовай, які вы, верагодна, не бачыў. Але гэта даволі чытэльнай, так што я буду ісці праз яго, як быццам гэта псевдокод. Змяненне даты з'яўляецца функцыяй, якая збіраецца заняць у гэтай датай валюціравання, і гэта таксама збіраецца прыняць у першым, які мы не клапоцімся прыкладна столькі ж. Але галоўнае, што ён мае гэтую дату, і што дата і з'яўляецца днём, які мы хочам звярнуцца да ўсіх з прадуктаў харчавання для. А потым ты бачыш у нас ёсць трохі сінтаксіс тут, якая ў асноўным разбор гэтай даты ў чытаны фармат. Іншымі словамі, API патрабуе дату ў пэўным фармаце. Вы не можаце проста сказаць: 16 лістапад 2012 AD. Ён не будзе ведаць, што рабіць з гэтым. Ён хоча дату ў пэўным фармаце. Усё, што мы робім тут, надаўшы яму менавіта той фармат, , Які з'яўляецца годам значэнне, а затым злучок, значэнне месяца, іншы злучок і значэнне даты. І мы таксама кажам, што мы хочам дадзеных для высновы ў фармаце JSON. Цяпер мы робім гэты запыт AJAX, і, як я ўжо згадваў, JQuery ёсць гэта супер карысная функцыя AJAX якой усё, што вам трэба зрабіць, гэта пазначыць некалькі параметраў сюды, і гэта дасьць вам менавіта тое, што вы хочаце. Мы кажам, што URL мы хочам, каб пайсці ў гэты CS50 харчавання API, якія мы атрымалі ад спецыфікацыі. Мы кажам, што мы хочам, каб дадзеныя ў JSON і што Мы збіраемся даць яму гэта дадзеныя, якія мы вызначылі тут. У гэты дзень мы хочам, каб прадукты харчавання для. І тады ўсё, што мы павінны зрабіць, гэта вызначыць нейкі поспех функцыю, які з'яўляецца ў асноўным тое, што адбываецца, калі API вяртае гэтыя дадзеныя. Іншымі словамі, мы спакаваныя ўсе параметры, якія мы хочам, які ў дадзеным выпадку з'яўляецца той дзень, калі мы хочам, і тое, што мы хочам яго ў JSON, і мы адправілі яго да API, так што зараз API кажуць, добра, Тут вашы дадзеныя, я атрымаў яго назад для вас. У нас ёсць поспехі функцыя, якая азначае, што дадзены API паспяхова вяртае некаторыя дадзеныя, што мы будзем рабіць з гэтым? І аказваецца, што ўсё, што мы робім, гэта выклікаць гэтую функцыю абнаўлення меню з тым, што API вярнуўся, так што мы можам знайсці, што і бачу, што ўсё, што мы робім, выкарыстоўваючы звязак новы сінтаксіс тут для абнаўлення HTML і устаўце гэтую новую дадзеных. Тое, што гэта дазваляе гэта ў нас ёсць гэтыя стрэлкі з абодвух бакоў, і мы можам націснуць, і зараз мы глядзім на дадзеныя на наступны дзень і зноў на наступны дзень, і кожны раз гэта абнаўленне, што значэнне даты і запытаў API, вяртанне некаторыя дадзеныя і пакласці яго на сайт. Зноў жа, вы можаце бачыць, супер, супер карысна. Гэта прыкладанне заняло ў мяне некалькі гадзін, каб зламаць разам, і ў мяне ёсць трохі больш вопыту, відавочна, але вашы CS50 канчатковы праект можа выглядаць вельмі падобна на гэта. API-інтэрфейсы з'яўляюцца супер магутны на суму намаганняў, якія яны прымаюць. Апошняе, што я збіраюся пераходзіць у некалькі больш шырокім API-інтэрфейсаў. Я не буду так далёка ў іх да таго, што яны робяць канкрэтна, але я дам вам прадстаўленне аб тым, што там. 2 сапраўды карысныя, калі вы зацікаўлены ў аналізе дадзеных і візуалізацыі ці нешта ў гэтым родзе, з'яўляюцца Freebase і Wikipedia. Wikipedia-відаць, вы ўсё ведаеце-гэта бясплатная анлайнавая энцыклапедыя, і гэта на самай справе мае API, так што калі вы хочаце, напрыклад, атрымаць усе тэксты і артыкулы для васьмінога Вы можаце вельмі лёгка зрабіць. Проста сказаць эй, Wikipedia API, я хацеў бы дадзеныя, вернутыя як гэта, і мне вельмі падабаецца ў гэтым фармаце, і артыкул я хачу гэта васьміног, і вельмі хутка гэта дасць Вам гэтую інфармацыю. Гэта можа быць вельмі карысна, калі Вы хочаце зрабіць нейкі сайт гэта лепшы сродак прагляду для Вікіпедыі ці нешта накшталт гэтага. Freebase з'яўляецца свайго роду падобныя, хоць гэта крыху больш складана, паколькі API. Freebase, як у Wikipedia, што гэта анлайн-энцыклапедыя , Які змяшчае шмат-шмат розных дадзеных аб усякіх розных тым, але яна захоўваецца ў рэляцыйнай базе дадзеных, якая трохі адрозніваецца ад Wikipedia. У Вікіпедыі ёсць яго артыкулы і артыкулы звязаныя з іншымі артыкуламі, але па большай частцы, калі вы хочаце, каб дадзеныя для васьмінога, Вы ідзяце ў васьмінога артыкуле, атрымаць гэтыя дадзеныя, і ў вас ёсць куча тэксту Аб васьміногі, так што гэта выдатна. Freebase працуе ў некалькі больш складаным чынам у тым, што ўсе звязаны адзін з адным. Іншымі словамі, калі мы шукаем васьмінога то ён мае кучу катэгорый, звязаных з ім. Напрыклад, гэта жывёла, яно жыве пад вадой, яна мае пэўную тэмпературу цела. Я не ведаю. І ўсе гэтыя катэгорыі з'яўляюцца спасылкамі на іншыя месцы, дзе вы можаце пайсці глядзець на рэчы з гэтай жа катэгорыі. Іншымі словамі, мноства васьмінога дадзеных будзе ўтрымліваць спасылку на набор дадзеных для ўсіх жывёл, і што дазволіць мне перамяшчацца ў базе даных вельмі хутка. Гэта можа быць вельмі карысна, калі вы робіце нешта накшталт параўнання. Іншымі словамі, улічваючы пэўную рэч, вы хочаце бачыць Што яшчэ гэта звязана і паглядзець, што яшчэ гэта не ставіцца. Такога роду рэчы. Гэта можа быць карысна ў шэрагу кірункаў. Калі вы шукаеце больш складанай задачай, і быць у стане зрабіць некаторыя больш складаныя рэчы Я хацеў бы разгледзець зірнуць на Freebase API. Але ў асноўным, Wikipedia з'яўляецца вельмі простым месцам, каб пайсці па меры атрымання інфармацыі. Яшчэ адно месца, што я буду глядзець на тое, Last.fm, і на самай справе я збіраюся перайсці на сайт У выпадку, калі некаторыя людзі не знаёмыя, але Last.fm ў асноўным музыка густаў і рэкамендацый сайта. Вы можаце зрабіць рахунак. Вы можаце пачаць загрузку музыкі з музычнага прайгравальніка на сайт, і ў асноўным гэта пачне даваць вам рэкамендацыі музыкі заснаваны на тым, што вы слухаеце. Напрыклад, калі вы ідзяце на старонку свайго профілю, гэта маё- Вы можаце ўбачыць у вас ёсць спіс нядаўна слухаў трэкі. Вы можаце бачыць агульную любімых мастакоў, усё такога роду рэчы, і зноў, ёсць вялікая API за Last.fm,  і вы можаце выкарыстоўваць яго, каб зрабіць шмат-шмат сапраўды цікавых рэчаў. Напрыклад, я пайду на старонцы сябра, які мае гэты вэб-сайт Last.fm Tools. На самай справе гэта іншая платформа, якая пабудавана на Last.fm API, і гэта робіць шэраг даволі цікавых рэчаў. Калі б я ўвайсці з маім імем карыстальніка, напрыклад, Я магу папрасіць яго для стварэння воблака тэгаў, напрыклад, і тое, што збіраецца зрабіць, гэта даць мне назад Выява ўсіх розных жанраў і да таго падобнае, што мне падабаецца слухаць. Як ён гэта робіць? Вельмі асноўным гэта кажу Last.fm API вось гэтага карыстальніка. Я хацеў бы ведаць, жанр кожнай песні, якую яны калі-небудзь слухаў, і вы можаце зрабіць гэта, зрабіўшы даволі просты AJAX выклік на Last.fm API. Вы атрымаеце назад вялікі спіс, а затым, відавочна, некаторыя іншыя рэчы робіцца каб ператварыць яго ў слова воблака, але вы можаце бачыць агульнае гэта вельмі лёгка атрымаць доступ і вельмі простая ў выкарыстанні. Сапраўды добры для шэрагу рэчаў. Я думаю, што гэта ўсё, што я скажу ў цэлым. Апошняе, што я ўзгадаю API-інтэрфейсы ў цэлым з'яўляецца тое, што Вы будзеце часам ўпадаць у тое, што называецца абмежаваннем хуткасці, і ідэя абмежавання хуткасці значыць, вы не хочаце, каб злоўжываць API. Іншымі словамі, гэта вельмі прыемна, што многія з гэтых сайтаў маюць інтэрфейсы што вы можаце пайсці і выкарыстоўваць бясплатна. Аднак, калі вы робіце мільёны або мільярды запытаў у дзень, Напрыклад, калі вы затрымаліся ў бясконцым цыкле якая бясконца запытаў свайго роду API і вяртанне велізарнай колькасці дадзеных, Відавочна, што гэта не добра, так што шмат API, зрабіць гэта было гэтую функцыю абмежавання хуткасці кажа, што вы можаце зрабіць толькі 1000 запытаў у дзень на IP-адрас ці нешта накшталт гэтага. І калі вы робіце шмат выпрабаванняў і да таго падобнае, Вы будзеце часам працаваць у гэта, і раптам яна будзе зачыненая вас і кажуць, не, я не даю вам ніякіх дадатковых дадзеных. Тое, што вы хочаце зрабіць, гэта гуляць па правілах. Вы хочаце, каб пераканацца, што вы чыталі API Spec старанна. Калі яна мае пэўныя правілы, якія змяшчаюцца ў ім, як вы можаце зрабіць толькі X запытаў у дзень або Вы можаце атрымаць доступ толькі да часткі базы дадзеных пэўную колькасць разоў ці нешта падобнае, што вы хочаце пераканацца, што вы будзеце прытрымлівацца гэтага. Пакуль вы гуляеце ў рамках гэтых правілаў вы, верагодна, ёсць сапраўды добры час, выкарыстоўваючы API. Ваш агульны вынас з'яўляецца API, сапраўды, вельмі карысна. Там у API для амаль любога вялікага вэб-сэрвіс там. Практычна любой частцы інструментаў Google для маладых, Google Maps, Google Earth, GMail, Google Calendar, усе гэтыя рэчы маюць API. Вы можаце выкарыстоўваць іх як для атрымання дадзеных з сервера і адпраўкі дадзеных на сервер. Іншымі словамі, калі вы хочаце зрабіць каляндар прыкладанне, якое можа абнавіць Google Calendar хтосьці, ёсць API для гэтага. Калі вы хочаце зрабіць нешта, што збіраюся расказаць вам, дзе размяшчэнне пэўнага адрасу вы можаце выкарыстоўваць Google Maps API для гэтага. API-інтэрфейсы з'яўляюцца фантастычна карысна, і яны паўсюль. Калі вы зацікаўлены ў нейкую ідэю, там, напэўна, звязанай API, які можна выкарыстоўваць, каб атрымаць вялікую колькасць дадзеных Вельмі хутка і вельмі проста. Калі вы ўсё яшчэ шукаеце праект або калі вы проста хочаце пагуляць з чымсьці, у агульным, API, безумоўна, варта рабіць. Дзякуй, і я рады адказаць на любыя пытанні, якія вы, хлопцы, можаце мець. Добра, дзякуй вялікі. [CS50.TV]