[Powered by Google Translate] [讲座] [程序员的API] [比利Janitsch] [哈佛大学] [汤米MacWilliam] 这是CS50。[CS50.TV] 嗨,大家好,我是比利,今天我要谈论的API, 或应用程序编程接口, 特别是在的背景下,的CS50最终项目之类的事情。 一般来说,什么是API? 概括而言,它的类的中间人,允许2个 的软件,以相互通信。 这是一个非常宽泛的定义,而不是我们正在寻找相关的。 我们真正需要的是某种有用的中间地带 沟通的某种类型的数据库的地方。 这里有一个图表,基本的想法是, 我们是一个应用程序,我们希望从数据库中获取数据, 但我们不想直接查询数据库。 相反,我们希望通过这种中间人,API去。 背后的想法,在图表上的数字2和3 都将是非常复杂而混乱的。 换句话说,当API查询数据库, 它可能会使用SQL表和所有的那种东西, 我们已经了解到了一些关于它的CS50,但总体而言, 你已经注意到了,这是一个有点痛苦。 它变得非常,非常复杂而混乱,尤其是当你正在做 复杂的查询,诸如此类的事情。 我们真正需要的是某种有用而简单的方式 得到的数据,而这背后的想法在图表上的数字1和4。 换句话说,我们希望有一个非常简单的方法来告诉API为我们 一个非常简单的方式来获得的数据。 有一个主要的方式,该数据通常是发送和接收的, 这是JSON,或JavaScript Object Notation。 这可以改变一点点,只要您发送请求的API。 换句话说,如果你想要一些一定量的数据, 你如何告诉API来获取这些数据可以改变一点点。 通常涉及某种形式的网络请求。 换句话说,访问的URL某种要告诉API 正是你想要的,但数据几乎总是发回, 换句话说,JSON中的4号。 什么是JSON是什么呢? 正如我所说,JavaScript对象表示法。 它基本上是发送和接收数据的通用标准。 我们的想法是,你有这3类的东西。 你有数组,HashMap的,和原语。 数组和HashMap的看着你一点点CS50, 但你已经得到了非常严格的意义上,它们是什么样的。 换句话说,用数组,你知道他们的类型绑定, 所以,你只能有一个排序的类型,在整个阵列。 JSON是一个较为宽松的,诸如此类的事情。 基本的想法是你建设这个对象, 它可以由任何这些3东西 并且可以由其中的多个,并且它们可以嵌套。 这里的排序JSON的例子, 这是这些大括号在这里代表你的hashmap, 和hashmap是基本的映射某种关键的 某种价值。 在这里,你会看到我们有关键, 的映射到一个数组中,这是这件事了。 我们看到了另一种元素的HashMap,这是关键isAwesome的, 映射到真正的原始值,换句话说,一个布尔值。 基元可以是字符串。他们可以是整数。 它们可以是bool值,类似的事情。 而你看到这个数组的内容的属性点有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的库。 换句话说,它是一个JavaScript文件,你可以加载 然后使用jQuery的功能做一些事情。 和jQuery基本上是让您的生活变得更加简单了。 它简化了在JavaScript中需要数百行中的几行jQuery的。 这是特别有用的,如果你正在使用API​​,因为一般 您将如何被访问的API是由AJAX请求, 我相信大卫讲座中提到的,AJAX请求 一般都是当你正在做一个网络请求某种服务器 并获得某种形式的数据,并即时更新的页面。 而在普通的JavaScript,将采取疯狂的行数 验证所有的头和做所有的东西之类的, jQuery有一个非常简单的函数调用AJAX, 和所有你必须​​做的AJAX是给你想给的API的参数, API的位置要配置的选项,让您任何额外的排序。 这是真的,真的很好,这种事情非常有用的。 这是我们需要开始的所有的API,让我们的手脏。 我要带了几个例子,并探讨其不同的特性 为什么他们不同的东西是有用的。 实际上,我会告诉你的第一件事是什么,我的工作 在我的研究实验室,这是一个NGRAM浏览器, 基本的想法的一个NGRAM的浏览器,您可以搜索一些这类词 或短语,经常出现在一组特定的文字随着时间的推移。 这里的例子是这样的数据集的婴儿 出生在纽约,1920年和2000年之间。 例如,我们可以搜索的名字Jennifer, 我们看到,20世纪60年代,它真的是不使用所有的东西, 然后,随着我们进入晚年,这已经成为越来越多的使用。 我们还可以做比较,所以,如果我们比较珍妮弗,例如,托马斯, 我们可以看到整个历史上,托马斯已经相当普遍, 而珍妮弗是一个较新的名字。 我们可以做这样的事情。 这个应用程序是如何工作的? 基本上,它可以通过一个API。 换句话说,我们在这里有某些参数。 我们的参数,我们实际上是在寻找, 这些名字,然后我们有一些其它的属性, 类似的Y轴和X轴。 你可以看到我们有一些不同的选择,尽可能的 使用的时间分辨率和诸如此类的事情。 我们有这些选项,只要我们真正想要什么样的数据从数据库中, 我们想要得到的数据,在一些有用的方法。 通常情况下,如果我们查询数据库直接将排序是一个痛苦的做 因为这大概给孩子起什么名字,住在一些数据库数据的地方, 这将是非常复杂的手动查询 决定什么样的数据返回。 换句话说,我们只关心珍妮弗和托马斯在这种情况下, 我们只关心某个轴和所有的那种东西。 我们如何解决这个问题呢? 要深入到这个API多一点我会告诉你这个平台的另一个例子 它使用一个稍微不同的数据集。 该数据集,而不是婴儿的名字,其实只是整个 印刷出版物的图书数据库, 这是一个巨大的整个过去的100年左右出版的文本来源。 我们的想法是我们有这compository的数以百万计的文字, 我们现在可以搜索不同的词和短语英寸 下面是一个例子,变化有点不同,从前面的例子 我给你,这是我们这3个搜索查询, 战争,战争,战争的法语单词,这是GUERRE。 我们正在寻找的总数据库内3个不同的部分。 换句话说,在这第一个查询中,我们只在美国, 仅在英国,在第二个,第三个在法国出版的作品。 我们看到一些有趣的模式出现。 例如,我们看到的在这里 - 哎呀,我搞砸了轴一点点,但你可以看到在此范围内 在美国版的内战周围有一个大的峰值 但没有这么大的在其他两个高峰,而这显然是因为 在这一点上美国南北战争发生了。 我们可以看到,有一些很酷的东西, 但我们真正关心的是我们如何得到这个数据。 我会带你在这个程序中一点点幕后。 一个绝招,如果你正在使用的站点和种想知道 这是怎么回事幕后,你可以打开开发工具。 我将使用Chrome的开发者工具,并得到那些 你可以做控制,移位,J,,您可以到JavaScript控制台。 有几个标签。 他们都可以在不同的情况下是非常有用的,但我关心的网络 选项​​卡,现在,我其实有刷新,工作。 哦,对不起。 它喜欢给一个随机的例子。 好了,然后我们将使用这个例子,而不是。 我们的想法是在这里有这个API, 你可以看到什么API返回。 这是什么应用程序正在发送该请求的API。 让我在一点点放大, 基本上,我们可以看到,它只是一个系列的关键值对的JSON。 换句话说,我们有这个HashMap中的映射值。 换句话说,它的值映射年。 1765年什么字,我们初步搜索使用90次 出了1万元,所以我们又回到了这个结果。 这不完全JSON,因为我们有这个收效甚微头, 但是请注意,这里整个的对象仅仅是一个伟大的大JSON一滴。 我们这里有一个数组,其中包含整个元素, 你可以看到,整个元素在这里结束,然后我们有再大的元素 “一路下跌到了最后,而且在这里结束。 我们有一个非常大的数组2中的对象, 每个对象是一个HashMap。 你可以看到在这些HashMap的,我们有一个映射 该指数值设置为0,该值的价值的另一个HashMap, 这又是X轴的值映射到Y轴的值。 你可以看到JSON变得有点复杂,但总体而言, 它实际上是非常有用的,它是很容易的访问相比, 其他不同形式的符号。 据我们实际发送数据的API得到, 我要到后端去一点点在这里。 这是大的JavaScript文件,该文件处理所有的Web应用程序之间的相互作用, ,所以我们不关心这个最,但我们是关心一些。 例如,我们关心这BuildQuery对于功能, 这个功能是基本的想法,它看起来在页面上, 找出用户想要什么查询,换句话说, 检查那些箱子,他们已经输入的搜索字词, 检查不同的Y轴和X轴的值,他们选择了和所有诸如此类的事情, 它会吐出来此查询的值,然后我就可以发送的API。 这看起来比较复杂,它是相当复杂的 但我要做的事情,事实上,我已经这样做,这是伟大的 - 是,我要在控制台打印出准确的查询值 它发送的API。 这实际上就在这里。对不起,我输了很多东西。 但是,这就是我们所关心的,这个对象就在这里。 这是查询的对象。 换句话说,这正是在Web应用程序发送到API, 让我们往里一点点,我们看到我们这里有几个值。 我们看到,我们有这个计数类型,这是每万字的出现, 而这正是我们选择了在Y轴在这里。 这就是我们在未来从。 我们有一个数据库中的值,这意味着,有一些某些数据库 这个数据是生活在我们要访问的数据,特别是 相对于婴儿名字的数据,例如。 然后,我们这组值, 这是说,我们要搜索​​的一年,而不是 任何其他X轴的值。 然后我们有一个方法,其中一些API将做多件事情。 换句话说,这个API还可以返回其他类型的数据, 但在这种情况下,我们要映射的X轴值,Y轴的值。 这是什么,告诉它在那里做, 我们有这样的搜索限制的阵列,其中包含2个值。 第一个是我们在这里看到,这是所有的值 包含内,第一个小盒子的顶部。 换句话说,我们要看的单词战斗,我们要对其进行过滤 在美国文学中的英文文本。 我们有这样的国家,这是美国。 我们有一个语言,即英语,所以我们有所有这些不同的部分 都告诉API正是我们想要的。 我们不知道什么样的数据,我们回去又是, 但我们知道数据是要采取一定的形式。 这个例子是有点复杂的, 你不一定要使用的API这个复杂的, 但是,这是告诉你的范围和能力的API可以做什么。 换句话说,使用一个相对简单的查询系统,我们基本上有一个输入框 在不同的地方有几个其他选择。 让我放大了这里。 我们有一个输入框,几个不同的元数据选择, 我们有Y轴和X轴的选择。 我们实际上并不拥有的许多领域, 我们可以很容易地看到,我们能够查询某种API 并获取数据,然后把它放到这个图表, 这是要显示它的一个有用的方法。 看一个例子,它可能是一个有点熟悉的你们 我们要去到Facebook。 Facebook的API被称为Facebook的走势图, 基本上,这意味着什么是Facebook把自己定位为这个庞大的数据库 大量的不同部位,都有一定的相互之间的关系。 换句话说,我在Facebook上的用户,所以我有一个配置文件, 我也有一定的朋友,和他们每个人都有一个配置文件, 我的每一个朋友有一面墙,有不同的意见就可以了, 这些意见有多么喜欢和所有诸如此类的事情。 有很多的不同部位到Facebook。 这是一个非常复杂的API,而且也吨,你可以用它做, 但它实际上是非常简单易用。 我要开始由要graph.facebook.com / billyjanitsch的, 这是我唯一的帐户名称,您的帐户的名称将会是 某种字,如果你选择了它,或者它可能只是一串数字。 我们回来的是非常基本的信息。 我们可以看到,我有一个名字,这是比利,姓氏,这是Janitsch。 还有,我有一个独特的Facebook ID。 您可以看到,我是男的,我有我的语言设置 英式英语。 换句话说,我们在这里看到非常基本的信息。 这是不是太多了,而是它让我们知道那里的东西。 大卫·马兰我们可以做同样的事情,例如。 我觉得他的名字dmalan。 我们看到大卫·马兰有一个唯一的ID。 他有一个名称,名字,中间名,姓。 我们也看到,他的男性,他的语言设置为英语(美国)。 换句话说,我们在这里看到非常基本的信息。 现在,会发生什么,如果我们尝试别的东西吗? 比方说,我很感兴趣大卫·马兰就喜欢在Facebook上。 我可以做的/喜欢。现在,我们遇到了一个问题。 我们已经得到了某种错误,说一个访问令牌 需要要求本资源。 但是,如果你仔细想想,其实是有道理的,因为这将是不可思议的 如果您可以访问Facebook的数据库中的每一个部分, 从某种简单的API,对不对? 换句话说,想必您的信息不能被访问的人谁想要它。 这个错误是什么意思。 一些API需要一定的权限,才能访问他们的数据。 甚至更高级的API,如Facebook的一个, 将需要一定的权限做一些事情。 我可以看到这个大卫马兰的基本信息。 我可以看到他的男性,他住在美国, 但我不能真的看不到过去的。 为了解决这个问题,现在,Facebook有这很好的工具 这是图形API的探险家,和的想法,是可以排序的 根据您自己的帐户弥补自己的权限 然后查看的东西,具体可以查看您的帐户。 例如,如果我这样做graph.facebook.com/billyjanitsch/likes- 哎呦,我想我必须在这里重新验证我的令牌。 好吧。 如果我这样做了,伟大的,现在我看到,我得到这个对象 这说,我想,这是在游戏和玩具类的池面。 我想,这是在类动物的海象。 这些都是我实际的Facebook喜欢。 他们那种尴尬。 但是我们可以看到,所有返回的JSON数据。 这是非常可读的。 换句话说,我们有这样的数据映射到一个数组某种 这个数组的每个元素是一个HashMap的映射 了相同的名称和一个像的类别。 每一样都有一个唯一的ID。 有各种不同的东西,我们可以得到的数据, ,如果你有兴趣使用Facebook的API的CS50最后项目 或类似的东西,它实际上相当可行的。 基本上你如何绕过身份验证的事情是Facebook 使用的系统称为OAuth,开放式认证, 我不想进入,因为现在的OAuth的或不同类型的 认证往往不同的API之间有很大的差异, 所以我可以花很长的时间去每一个, 但它们实际上是相当不言自明。 如果谷歌Facebook的API,这是非常具有可读性。 有一个整体的规范。 例如,这是Facebook的API的文档, 你可以看到我的用户页面上,这样我就可以了解所有不同的东西 得到的数据 和也,我需要不同的权限才能访问它们。 正如我们所看到的,我们并不需要权限来访问的名称或性别, 但除此之外,我们确实需要对大多数事情的权限。 此页面,或者更确切地说,本网站也将告诉你到那里怎么走吗? 一个令牌可以验证自己的身份。 大多数认证系统使用某种类型的令牌 你在哪里得到这个独特的价值,这是一个很长的随机字符串, 这种方式,他们可以将你与你的要求。 换句话说,他们知道,你什么都没有做他们的数据持怀疑态度。 他们知道你要什么。 他们也知道,你有权限查看该信息。 如果你已经有了一个Facebook应用程序和您的应用程序有一定的用户, 那些用户允许应用程序访问他们的个人资料的某些部分, 那么无论API密钥或应用程序正在使用的令牌, 将能够为这些用户访问的数据。 这可能听起来很复杂,但它也不是太糟糕, 如果你想使用Facebook,我会强烈建议你 考虑在玩弄他们的API。 这是非常冷静,用它你可以做很多不同的事情。 如果用户授予这些权限,你甚至可以回去的API 并说,我要发布到用户的墙,我想他们发布的照片​​, 这就是为什么你的新闻源,你有时会得到那些烦人的事 说你的朋友观看此视频在某种奇怪的网站或类似的东西。 这是因为该应用程序已被授予访问那个人的墙壁上发布。 整体的想法,Facebook的API是非常复杂的,但也是非常有用的。 绝对值得一试,如果你还在寻找一个最终的项目。 另一套API,我会去为CS50的API。 让我在这里放大。 CS50实际上已经把整个系列的API 您可以使用一个最后的项目,或者只是为你正在做什么。 ,他们大多是哈佛相关,和他们不同从HUDS菜单, 例如,这个哈佛大学的事件API,这将让你访问列表 不同的事件,在哈佛之类的事情。 因此,我们可以点击其中的任何一个,并得到一个规范的, 你是能够找到的任何API的想法是 它可以让你知道,A,具体的API请求,要求它。 换句话说,如果我想明天发生的所有事件 那么我就明显给它的日期,我想在一个特定的格式, B,它会告诉我到底是什么回事退给我。 它会说,我要回到你这个JSON对象, 或者像你所看到的,有不同的格式。 您也可以返回一个CSV数据,例如。 但是,你知道这些数据究竟是如何去看看,当你把它找回来 所以你可以期望用它做一些事情。 我们可以向下滚动看到的,例如,如果我们要查询的API 日历,那么我们就可以用这种特殊的URL 并给它一定的参数,都将是我们想要的确切的数据。 同样地,如果我们想在一定格式的数据, 那么我们就可以问它输出一个CSV中的数据, 这只是另一个参数,我们传递的API。 很多很酷的东西在那里做。 我肯定会建议你检查出的CS50的API。 我要看看在这个哈佛食品API,特别是一点点。 其实我设计的一件事是这个哈佛大学NOMS网站, 使用CS50的食物的API来检索的HUDS的菜单的天。 扩展学校的人,HUDS是哈佛大学的餐饮服务。 你得到的是这个页面,它包含了所有的日子,让我们看到了午餐的饭菜。 我们有几个不同的类别。我们bean和全谷物站。 我们有的糙米站。 我们可以看到,早午餐,我们这几年的食品项目。 如果我们点击他们,那么我们得到的营养信息。 你看这是为柚子的营养信息,如果你想知道。 因此,我们要在这里一点点地窥探到后端 看看究竟是如何得到这个数据。 它实际上是非常复杂的。 这个文件看起来有点乱,但请记住,这是处理整个网站, 如果我向下滚动,我们看到这种变化数据的功能。 现在,仅仅是明确的,这是写在CoffeeScript的, 这是一门语言,你可能还没有见过。 但它是相当可读的,所以我会穿过它,就好像是伪代码。 更改日期是一个函数,要在此日期值, 它也将采取在第一,这是我们不关心尽可能多的。 但最重要的是,它有这个日期, 而这个日期是希望的日子里,我们要求所有的食品项目。 然后你看我们有一点点的语法, 这基本上是解析该日为可读的格式。 换言之,该API需要一定的格式中的日期。 你不能只是说,公元2012年11月16日。 不知道做什么用。它希望在一个特定的格式的日期。 我们在这里做的是给它正是格式, 这是一年的值,然后连字号,月值, 一个连字符和日期值。 同时,我们也说,我们希望将数据输出JSON。 现在,我们正在做这AJAX请求,正如我前面提到的, jQuery有这样的超级有用的AJAX功能,所有你需要做的就是指定 到这里的一些参数,它会回给你,正是你想要的。 我们告诉它,我们希望它去的,这是CS50食品API的URL, 我们得到了从规范。 我们说,我们想要的数据的JSON和 我们要去给它这个数据,我们已经定义了这里。 在这个日子里,我们需要的食品项目。 然后我们要做的是定义了一些成功的功能, 这基本上是API返回的数据时,会发生什么情况。 换句话说,我们已经打包了所有的参数,我们希望, 在这种情况下,我们希望它是天的事实,我们希望它在JSON, 我们把它关闭的API,所以现在的空气污染指数是说,好吧, 这里是您的数据,我回去给你。 我们有成功的函数,这意味着给定的API 成功返回一些数据,我们该怎么办呢? 事实证明,我们要做的就是调用这个更新菜单功能 任何的API返回,这样我们就可以搜索 看到我们所做的就是在这里使用了一堆新的语法 更新的HTML和插入这个新的数据。 这让我们这些箭头的两边,我们可以单击, 现在我们正在寻找的数据,第二天再次第二天, 每次更新该日期值和查询API, 获得一些数据,并把它进入该网站。 同样,你可以看到,超级,超级有用。 这个程序我花了几个小时,一起砍, 我有了更多的经验,很明显,但你的CS50最终项目 可以看看非常喜欢这东西。 API是超级强大的,他们采取的工作量。 最后一件事,我会去一些更多的API广泛。 我不会得到尽可能远,因为他们做了什么特别的, 但我会给你那里有什么想法。 2真正有用的,如果你有兴趣在数据分析和可视化 或类似的东西,是游离盐基和维基百科。 维基百科想必大家都知道是一个免费的在线百科全书, 它实际上有一个API,所以如果你想,例如, 让所有的文本和八达通的文章 你可以很容易地做到这一点。 维基百科的API,只是说,嘿,我想,这返回的数据, ,我想这种格式,在文章中,我想是章鱼, ,并很快给你回的信息。 这可以是非常有用的,如果你想某种网站 维基百科或类似的东西,这是一个更好的浏览器。 Freebase是几分相似,但它是一个有点困难尽可能API。 Freebase是像维基百科,它是一个在线的百科全书 其中包含了很多很多各种不同的主题不同的数据, 但它存储在一个关系数据库,它是从维基百科略有不同。 维基百科的文章和文章链接到其他物品, 但在大多数情况下,如果你想章鱼的数据, 你去的章鱼文章,获得这些数据,你有一堆文字 关于章鱼,所以这是伟大的。 游离碱的工作在一个稍微复杂的方式 一切都是彼此相关的。 换句话说,如果我们需要寻找的章鱼 它还包含了许多与它关联的类别。 例如,它是一种动物,它生活在水下, 它具有一定的体温。 我不知道。 所有这些类别的链接到其他地方,你可以去 与同一类的东西。 换句话说,章鱼数据集将包含一个链接的数据集所有的动物, 这将让我走动,在数据库中真的很快。 喜欢攀比,如果你正在做的事情,这是非常有用的。 换句话说,给定某一件事,你想看到的 它还有什么相关的和看到什么是不相关的。 诸如此类的事情。它可以是有用的,在多种方式。 如果你正在寻找一个更大的挑战,能够做一些更复杂的事情 我会考虑看看的游离盐基API的。 但在很大程度上,维基百科是一个非常简单的地方去尽可能获取信息。 另一个地方,我会看的是Last.fm,实际上,我要到现场去 的情况下,有些人不熟悉,但Last.fm基本上是一个音乐 口味和建议的网站。 你可以让一个帐户。 您可以从你的音乐播放器上传音乐 的网站,基本上它会开始给你音乐的建议 根据你听。 例如,如果你去到您的个人资料页,这是我的 你可以看到你有一个列表,最近听的曲目。 你可以看到整体的喜爱的艺术家,所有的诸如此类的事情, 再次,有一个大的API背后Last.fm,  你可以用它做很多很多非常酷的事情。 例如,我会去一个朋友的页面,这个的Last.fm工具网站有。 这实际上是一个平台,是建立在Last.fm API, 做了一些非常有趣的事情。 如果我在我的用户名登录,例如, 我可以问它来生成一个标签云,例如, 什么,会做的,是给我回的图像 所有不同的风格之类的东西,我喜欢听。 它是如何做的呢? 基本上说Last.fm API,该用户。 我想知道,他们已经听到过的每首歌曲的风格, 你可以做到这一点通过一个非常简单的AJAX调用Last.fm API。 你会得到一个大名单,然后明显一些其他的东西正在做 把它变成一个词云,但你可以看到整体 这是很容易的访问,很容易使用。 真的很好了一些东西。 我想这就是所有我要说的整体。 最后一件事,我会提到一般的API是 有时你会碰到一种叫速率限制, 和速率限制的想法是,你不想滥用的API。 换句话说,这是非常好的,很多这些网站的API 你可以去免费使用。 但是,如果你赚了几百万或数十亿每天的请求, 例如,如果你停留在一个无限循环,无限查询 某种形式的API和,取回一个巨大的数据量, 显然,这不是很好,所以有很多的API做的是有速率限制功能 说,你只能每天每1,000个请求IP地址或类似的东西。 如果你做了很多的测试和诸如此类的事情, 有时你会遇到,突然,它会关闭你 并说没有,我不会给你任何更多的数据。 你想要做的是游戏规则。 你要确保你读了API规范,仔细。 如果它有一定的规则连接到它,就像你每天只能使X查询 或者可以只访问一个数据库的一部分,一定数目的次数 或类似的东西,你要确保你坚持。 只要你在这些规则,你可能有一个非常好的时间,使用API​​。 您的整体外卖API是真的,真的有用。 有几乎所有大的网络服务的API。 几乎所有的谷歌地球,谷歌地图,谷歌工具套件的一部分, Gmail,谷歌日历,所有这些东西的API。 你可以用它们来都得到来自服务器的数据和发送数据到服务器。 换句话说,如果你想使一个日历应用程序可以更新 一个人的谷歌日历,有一个API,。 如果你想的东西,会告诉你在哪里 某个地址的位置,你可以使用谷歌地图API是。 API是极其有用​​的,它们到处都是。 如果你有兴趣在某种观念, 有可能是一个相关的API,你可以用它来获得大量的数据 很快很简单。 如果你还在寻找一个项目,或者如果你只是想玩弄 在一般的东西,API是绝对值得做的事情。 谢谢,我很乐意回答任何问题,你们可能。 好了,非常感谢。 [CS50.TV]