維基百科:應用程序接口(英語:ApplicationProgrammingInterface,簡稱:API),又稱為應用編程接口,就是軟件系統不同組成部分銜接的約定。
應用程序接口為:“‘電腦操作系統(Operating system)’或‘程序庫’提供給應用程序調用使用的代碼”。其主要目的是讓應用程序開發人員得以調用一組例程功能,而無須考慮其底層的源代碼為何、或理解其內部工作機制的細節。API本身是抽象的,它僅定義了一個接口,而不涉及應用程序在實際實現過程中的具體操作。例如,圖形庫中的一組API定義了繪制指針的方式,可于圖形輸出設備上顯示指針。當應用程序需要指針功能時,可在引用、編譯時鏈接到這組API,而運行時就會調用此API的實現(庫)來顯示指針。
Youtube上一個例子:你去餐廳點餐,菜單是一個應用界面,你看了菜單提出請求,告訴服務員要點啥,他將你的請求傳達給后廚,然后從后廚那里把你點的菜拿給你,你不用知道服務員是怎么和后廚交流的。服務員就是個API,API可以看作一個web服務或軟件組件和外界交流的協議,規定了如何發送請求和接收響應。
盡管目前不同的軟件應用都有各自不同的 API,但“API”經常被看成“網絡應用 API”。一般情況下,程序員可以用 HTTP 協議向 API 發起請求以獲取某種信息,API 會用 XML(eXtensible Markup Language,可擴展標記語言)或 JSON(JavaScript Object Notation,JavaScript 對象表示)格式返回服務器響應的信息。盡管大多數 API 仍然在用 XML,但是JSON 正在快速成為數據編碼格式的主流選擇。
雖然 API 并非隨處可見(這正是我寫這本書的主要動機,因為即使你找不到 API,也可以用爬蟲采集信息),但是你可以從 API 里獲取許多信息。API 很容易使用。其實你只要在瀏覽器里輸入下面的網址就可以發起一個簡單的 API?
請求:1? http://freegeoip.net/json/50.78.253.58?
應該會出現下面的結果:{"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"}
你可能會想,這不就是在瀏覽器窗口輸入一個網址,按回車后獲取的(只是 JSON 格式)信息嗎?究竟 API 和普通的網址訪問有什么區別呢?如果不考慮 API 高大上的名稱,其實兩者沒啥區別。API 可以通過 HTTP 協議下載文件,和 URL 訪問網站獲取數據的協議一樣,它幾乎可以實現所有在網上干的事情。API 之所以叫 API 而不是叫網站的原因,其實是首先 API 請求使用非常嚴謹的語法,其次 API 用 JSON 或 XML 格式表示數據,而不是HTML 格式。
Google map API:
https://console.developers.google.com 登錄Google 賬號,啟用Google Maps Geocoding API,根據提示創建新的 API 密鑰。可以在瀏覽器里實現一個簡單的 GET 請求,把街道地址(這里用的是 Boston Museum of Science,里面有 Science Park)解析成緯度和經度:
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=(你的API 密鑰)
得到json數據: