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