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