[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. Есть несколько вкладок здесь. Все они могут быть очень полезны при различных обстоятельствах, но я забочусь о сети Вкладка прямо сейчас, и я на самом деле нужно обновить, чтобы получить это работа. Oh, извините. Он любит давать случайный пример. Хорошо, мы будем использовать этот пример, а не тогда. Идея в том, есть этот 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]