API 到底是什麼?

前言

相信接觸了程式語言一陣子的大家,都會從前輩們口中聽到、或是從各種技術文章中看到 API 這個名詞,那它到底是什麼呢?

大家先來看看一部很有名的影片

結果看完好像懂了,又好像沒懂??!!

名詞解釋

首先我們先釐清幾個名詞

  • Method/Function:
    Java/C# 稱為 Method;C/C++ 稱為 Function,但不完全相同。
    (在物件導向中的 method 有分兩種:一種是需要先實體化一個物件。一種是可以直接使用。前者我們稱為 method,後者我們稱為 static method。而 function 對應到的是 static method。)

  • Library:
    函式庫,表示將一堆已經寫好的 method/function 包成一個 library,當我們在應用程式的最上方 import(引用) 這個 library 後就能使用其包含的 function。像是我們要使用碘酒或酒精棉片 (function) 會先拿出醫藥箱 (醫藥箱library)。
    (或稱程式庫、C# 又稱為類別庫)


舉個例子來說明:

小明應公司要求,寫了一個 C# 遊戲引擎(幫助遊戲設計者容易和快速地做出遊戲程式的應用程式)。
其中有一個 method 定義如下

1
2
3
public int RoundDoubleNumber(double a){
return Math.Round(Math.Pow(a, 2));
};

Math.Round()、Math.Pow(),是由 C# 內建 library 提供的兩個 static method。

RoundDoubleNumber(),是小明寫的 method,並且小明在官方說明文件中,詳細說明外部程式如何使用 RoundDoubleNumber()。

小明的同事小光要設計一款遊戲 A,需要用到小明寫的遊戲引擎,小光不需要知道 RoundDoubleNumber() 內部的定義,只需要透過官方說明文件來知道用途使用方法

而像 RoundDoubleNumber() 這樣提供給外部應用程式使用的自定義 method/function,我們就稱為 API。官方說明文件又稱 API 說明文件


由上面的例子得知

  • API(Application Programming Interface):
    應用程式介面,指已經寫好的 method/function 提供給外部程式存取。通常是一些系統廠商,為了能夠讓第三方的開發者可以額外開發應用程式來強化他們的產品,所推出可以與他們系統溝通的介面。

舉例

1. Google Map

Google Map 本身是個應用程式,有許多的功能,例如查詢地址或是顯示衛星地圖等。

當 Google 想把部分功能提供給外部的網頁應用程式開發者、手機應用程式開發者,它不必把程式碼開源給大家,而是將想提供的功能 (method) 包成一份 Google Map API。並撰寫官方說明文件,說明如何使用。

>> Google Maps Platform

2. Firebase

Firebase 這個應用程式,提供相當多的 API,有 即時資料庫(Realtime Database)數據分析(Google Analytics)使用者驗證(Authentication) 等的功能。

>> Firebase