維基百科:應(yīng)用程序接口(英語:ApplicationProgrammingInterface靠闭,簡稱:API)动雹,又稱為應(yīng)用編程接口,就是軟件系統(tǒng)不同組成部分銜接的約定赠叼。
應(yīng)用程序接口為:“‘電腦操作系統(tǒng)(Operating system)’或‘程序庫’提供給應(yīng)用程序調(diào)用使用的代碼”擦囊。其主要目的是讓應(yīng)用程序開發(fā)人員得以調(diào)用一組例程功能,而無須考慮其底層的源代碼為何嘴办、或理解其內(nèi)部工作機制的細節(jié)瞬场。API本身是抽象的,它僅定義了一個接口涧郊,而不涉及應(yīng)用程序在實際實現(xiàn)過程中的具體操作贯被。例如,圖形庫中的一組API定義了繪制指針的方式妆艘,可于圖形輸出設(shè)備上顯示指針彤灶。當(dāng)應(yīng)用程序需要指針功能時,可在引用批旺、編譯時鏈接到這組API幌陕,而運行時就會調(diào)用此API的實現(xiàn)(庫)來顯示指針。
Youtube上一個例子:你去餐廳點餐朱沃,菜單是一個應(yīng)用界面苞轿,你看了菜單提出請求,告訴服務(wù)員要點啥逗物,他將你的請求傳達給后廚搬卒,然后從后廚那里把你點的菜拿給你,你不用知道服務(wù)員是怎么和后廚交流的翎卓。服務(wù)員就是個API契邀,API可以看作一個web服務(wù)或軟件組件和外界交流的協(xié)議,規(guī)定了如何發(fā)送請求和接收響應(yīng)失暴。
盡管目前不同的軟件應(yīng)用都有各自不同的 API坯门,但“API”經(jīng)常被看成“網(wǎng)絡(luò)應(yīng)用 API”。一般情況下,程序員可以用 HTTP 協(xié)議向 API 發(fā)起請求以獲取某種信息啊易,API 會用 XML(eXtensible Markup Language鼠证,可擴展標(biāo)記語言)或 JSON(JavaScript Object Notation,JavaScript 對象表示)格式返回服務(wù)器響應(yīng)的信息现恼。盡管大多數(shù) API 仍然在用 XML,但是JSON 正在快速成為數(shù)據(jù)編碼格式的主流選擇黍檩。
雖然 API 并非隨處可見(這正是我寫這本書的主要動機叉袍,因為即使你找不到 API,也可以用爬蟲采集信息)刽酱,但是你可以從 API 里獲取許多信息喳逛。API 很容易使用。其實你只要在瀏覽器里輸入下面的網(wǎng)址就可以發(fā)起一個簡單的 API?
請求:1? http://freegeoip.net/json/50.78.253.58?
應(yīng)該會出現(xiàn)下面的結(jié)果:{"ip":"50.78.253.58","country_code":"US","country_name":"美國","region_code":"MA","region_name":"Massachusetts","city":"Chelmsford","zipcode":"01824","latitude":42.5879,"longitude":-71.3498,"metro_code":"506","area_code":"978"}
你可能會想棵里,這不就是在瀏覽器窗口輸入一個網(wǎng)址润文,按回車后獲取的(只是 JSON 格式)信息嗎姐呐?究竟 API 和普通的網(wǎng)址訪問有什么區(qū)別呢?如果不考慮 API 高大上的名稱转唉,其實兩者沒啥區(qū)別皮钠。API 可以通過 HTTP 協(xié)議下載文件,和 URL 訪問網(wǎng)站獲取數(shù)據(jù)的協(xié)議一樣赠法,它幾乎可以實現(xiàn)所有在網(wǎng)上干的事情麦轰。API 之所以叫 API 而不是叫網(wǎng)站的原因,其實是首先 API 請求使用非常嚴(yán)謹(jǐn)?shù)恼Z法砖织,其次 API 用 JSON 或 XML 格式表示數(shù)據(jù)款侵,而不是HTML 格式。
Google map API:
https://console.developers.google.com 登錄Google 賬號侧纯,啟用Google Maps Geocoding API新锈,根據(jù)提示創(chuàng)建新的 API 密鑰】舭荆可以在瀏覽器里實現(xiàn)一個簡單的 GET 請求妹笆,把街道地址(這里用的是 Boston Museum of Science,里面有 Science Park)解析成緯度和經(jīng)度:
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=(你的API 密鑰)
得到j(luò)son數(shù)據(jù):