api

API 是什麼 ? 最適合前端初學者的 API 概念解釋

API 是什麼 ? 這是個從古至今都困惑著前端菜雞的議題,即使當初 Google 了 「 API 是什麼 」 至少有 10 遍以上,還是對 API 的概念很模糊,直到自己真的串接第三方 API ,甚至是自己實作後端 API ,才慢慢對 API 有點概念,希望這篇文章可以幫助前端初學者更加理解 API 的概念。

1. API 的定義

API ,全名 Application Programming Interface ,中文為應用程式介面,根據維基百科的解釋:

應用程式介面是指電腦作業系統程式函式庫提供給應用程式呼叫使用的程式碼,其主要目的是讓應用程式開發人員得以呼叫一組常式功能,而無須考慮其底層的原始碼為何、或理解其內部工作機制的細節。API本身是抽象的,它僅定義了一個介面,而不涉及應用程式在實作過程中的具體操作。

– 維基百科

看不懂嗎?放心,我當初看了 10 遍以上也還是看不懂,說成白話文, API 就像是一種提供服務的概念,今天我是一名前端開發人員,看到網路上各式各樣的應用程式(ex: Google map、twitch 直播、中央氣象局等等),覺得或許可以將這些服務導入到自己的網站中,ex: 我想做一個台北市餐廳列表的一個網站,但我希望點擊每一個餐廳的名字,可以在我的網頁上顯示該餐廳位於 Google map 的何處,這時候我就需要透過 Google map API 來取得 Google map 的服務,才能將該服務應用在我的網站。

API
▲ Ex: 觀光局使用 Google map API 將 Google map 服務導入到自己的網站

2. 舉例來說:各種應用程式的 API

所以所謂 XXX API 可以解釋為:如果我想要使用 XXX 應用程式的服務或資料,就必須透過 XXX API 將 XXX 服務或資料導入到自己的網站中。

Ex 1:
Google map API :如果我想要使用 Google map 的服務,就必須透過 Google map API 將 Google map 的功能導入自己的網站中。

Ex 2:
中央氣象局 API:如果我想要使用中央氣象局的資料,就必須透過中央氣象局 API 將中央氣象局的資料導入自己的網站中。

API 就是串接兩個應用程式的橋梁,透過這個橋梁,你(開發者)可以取得橋的另外一邊(應用程式)的資源(服務或資料等等),換句話說,如果今天你想要的應用程式沒有提供橋梁(API),你就沒有辦法將對方的服務或功能導入到自己的網站,ex: 哪天 Google map 將他的 API 關掉,世界上就沒有任何應用程式可以使用 Google map 的功能了。

當然, API 其實不限於 web application ,任何應用程式都可以開發 API 供開發者使用,像是瀏覽器也提供了許多 API 讓前端開發人員可以使用瀏覽器提供的服務或功能(ex: 操作 DOM、使用 Geolocation 取得使用者的地理位置等等)。

3. 開發 API 的優點

那麼對那些願意開放 API 的應用程式來說,開發應用程式 API 給開發者使用有甚麼優點呢?

  1. 減少競爭者,ex: Google map 在 2011 年以前是可以完全免費使用 API 的,在 2011 ~ 2018 期間對中小型網站的收費也十分親民,這讓許多應用程式不必自己花費大量成本開發自己的地圖應用程式,對 Google 來說也就少了許多潛在的競爭者,同時也造就了許多新創公司的成功,像是 Uber, Airbnb 等等。
  2. 增加獲利,ex: Google map 在 2011 年以後開始進行收費,也就是說世界上任何一個網站使用到 Google map 的功能,都有機會增加 Google 的營收。
  3. 增加知名度,如果你開發 API 給開發者使用後,結果意想不到的大流行,那麼你的應用程式知名度就會大增(但這當然也考量到你的後端設計是否能夠承擔這麼大的流量)。

4. 結論

來總結一下 API 是什麼:

  1. 應用程式提供的一個工具,讓開發者可以使用 API 來存取該應用程式的資料或是服務等等。
  2. 開發者必須按照應用程式 API 的規範才能存取相對應的功能或資料。

了解完 API 的概念後可以自己試著串接 API 看看,一方面訓練自己看 API document 的能力,另一方面也可以對 API 有比較具體的概念。歡迎參考我之前寫的文章:實作API串接(1) ⏤ Unsplash API

希望這篇文章對初學前端開發者可以有比較具體的一些觀念,也希望自己可以之後寫一系列關於 API 的文章(是希望可以寫到 GraphQL 啦哈哈)。

如果覺得我的文章有幫助的話,歡迎幫我的粉專按讚哦~謝謝你!

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Scroll to Top