WEB API 是什麼?
從 Application、Programming 和 Interface 理解 API,再看為什麼透過 Web 使用程式功能時,會叫做 Web API。
不曉得大家有沒有聽過 API?
如果你最近開始用 AI 寫程式,或者想把兩個工具串起來,應該很容易碰到這個詞。
有人叫你申請 API,也有人跟你說,這個服務沒有開放 API,所以不能直接串。
那 API 到底是什麼?為什麼有時候前面又會加上一個 Web?
我們先把名字拆開來看。
API 的全名是 Application Programming Interface,中文通常翻成「應用程式介面」。這也是 MDN 對 API 的說明所談的概念。
先講 Application,也就是應用程式。
你手機裡的 App、電腦上的軟體,或者一支幫你整理檔案的小程式,都可以是應用程式。
不用把它想得很大。不是一定要有畫面、有按鈕,才叫應用程式。
在這裡,你可以先想成有兩支程式。
一支已經寫好,裡面有你想用的功能。另一支是你正在寫的程式,想請前面那支程式幫你做事。
譬如有一支程式,已經可以根據城市查詢天氣。你現在要做一個小工具,也想使用它查天氣的功能。
但你要怎麼叫它做事?
這就要接著看 Programming 和 Interface。
Programming 通常翻成「程式設計」。放在這裡,可以先理解成:用程式去呼叫另一支程式已經寫好的功能,讓它執行。
不是把對方的程式重新寫一次,也不是你自己去操作它的畫面。
而是你寫的程式,可以叫對方已經寫好的程式做事。
像前面的天氣工具,你的程式把想查的城市交給對方,對方就執行查詢,再把結果交回來。
那中間要透過什麼,才能叫它做事?
就是 Interface,介面。
大家看到介面,很容易想到登入頁面、購物車,或者手機上可以按的按鈕。
這些是給人操作的介面。
但今天要使用功能的是另一支程式,它不一定需要看畫面,也不需要拿滑鼠去按按鈕。
它需要的是一個給程式使用的入口。
API 講的就是這種介面。
你可以透過這個介面,使用對方開放的功能,不需要先看懂它裡面的程式怎麼寫。
就像你用滑鼠,不需要知道滑鼠裡面的零件怎麼運作,只要透過它提供的操作方式,就能使用它。
不過,介面本身會限制你能怎麼操作。
以一支只有左右兩個按鍵的滑鼠來說,你可以按左鍵、按右鍵,但不能直接在滑鼠上輸入英文字母。
要輸入文字,你會用鍵盤。鍵盤提供的操作方式,又跟滑鼠不一樣。
程式的介面也是一樣。
對方提供查詢天氣的功能,不代表你可以透過同一個介面,叫它幫你整理電腦裡的檔案。
它要求你提供城市,你就要照它接受的方式提供。不能什麼都沒給,就期待它知道你想查哪裡。
能用哪些功能、需要提供什麼、執行後會拿到什麼結果,都是使用這個介面時要知道的事情。
所以,你可以先把這個使用方向想清楚。
一支程式提供功能,另一支程式透過它的介面,去呼叫這些功能。
這裡講的方向,是誰提供功能、誰來使用。查詢之後,資料仍然可以傳回來。
也不代表兩支程式接上以後,就能互相操作對方所有的功能。另一邊如果也要提供功能給你使用,同樣需要有可以使用的介面。
那前面多了一個 Web,又差在哪裡?
API 本身不一定需要網路。
你在電腦裡寫一支程式,使用作業系統提供的 API 讀取檔案,就可以在自己的電腦裡完成。
而這篇講的 Web API,是把這種給程式使用的介面,透過 Web 提供出來。
你的程式跟對方的程式,不需要放在同一台電腦上。你的程式可以透過網路,把使用功能的要求送過去,再接收對方處理後的結果。
這種送出要求、收到回應的運作方式,可以參考 MDN 的 HTTP 說明。
我們繼續用假設的天氣工具來看。
你想做一個小工具,讓使用者選擇城市,就能看到天氣。
但你自己沒有氣象觀測站,也沒有天氣資料。
你可以找一個提供天氣資料,而且有開放 Web API 的服務。
使用者選好城市後,你的程式就透過對方提供的介面,把要查詢的城市送過去。
對方執行已經寫好的查詢功能,再把天氣資料傳回來。你的程式收到後,就能整理成使用者看得懂的畫面。
這裡,你做的是自己的小工具,用到的則是另一支程式已經提供的功能。
你不需要重新做一套天氣查詢服務,但要先確認對方開放了什麼,以及要怎麼使用。
如果你要請 AI 幫忙串接,也可以把需求講清楚:「我要讓使用者選擇城市,透過這個服務提供的 API 查詢天氣,再把結果顯示出來。請依照它的使用文件完成。」
接起來之後沒有結果,就先看你的程式送了什麼、對方回了什麼。城市有沒有提供?提供的方式對不對?對方回來的是天氣資料,還是查詢失敗的原因?

