[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]