什麼是 API
2024-11-30 16:18:49
# 什麼是API
## 目的
讓非程式背景或剛開始接觸程式的人可以理解什麼是API(Application Program Interface)應用程式介面
---
## 前言
當我 30 歲半路出家開始學程式(2020~2021),已是前後端分離的時代。前後端分離的架構中,**API 是不可或缺的一部分**。
當時為了理解這個神祕單字背後的意義,我搜尋了許多文章(當時還沒有 ChatGPT 等 AI 工具),但閱讀之後還是似懂非懂。只知道設計一串網址,可以用來執行某些功能,這就是 API。
進入職場後,撰寫更多程式碼、閱讀更多文件,對 API 有了更深入的理解。同時,面對非程式背景部門同事的提問,我也發展出了一套自己的解釋方式。
有些概念對程式設計師來說「懂的人自然懂」,但重點是:**如何讓不懂的人也能懂**。
(~~畢竟即使是程式設計師,也常常在看技術文件時覺得「這到底在公X小」。~~)
我本身是第一屆學員,發現後幾屆的學員中強者比例很高,大家可以對內容給予更多回饋與建議。
---
## 進入主題
> 每次有非程式背景的人問起,我都會將重點放在 API 的 I(Interface,介面),強調它是:
> 透過 1.*觸發* 2.*介面* 3.*達成* 4.*目的*。
> 至於背後如何實現功能,並不需要了解。
### 用一些簡單 *非應用程式* 舉例
1. 開瓦斯爐
伸出你的你的手去旋轉旋鈕,火就出現了
* 介面: 旋鈕
* 觸發方式: "旋轉"旋鈕
* 目的: 點火
* 如何達成: 透過噴出瓦斯並產生火花點燃(機構細節不提...)
2. 開電風扇
伸出手指按開關,實現開關電風扇
* 介面: 開關
* 觸發方式: "按壓" 開關
* 目的: 控制電風扇開關
* 如何達成: 完成電路迴路,驅動馬達運作。
3. 餐廳吃飯
坐在餐廳座位上,向服務生點餐,餐點會送上來。
* 介面: 服務生
* 觸發方式: 對服務生說話
* 目的: 享用餐點
* 如何達成: 廚房完成餐點製作後,由服務生送達(製作細節無需了解)。
---
### 將上述概念套用到「應用程式」中的 API
1. 註冊帳號
在網頁上填寫表單,按下「註冊」按鈕,完成帳號註冊。
* 介面: https://xxx.xxx.xx/api/register
* 觸發方式: 前端發送 HTTP POST
* 目的: 註冊會員
* 如何達成:
1. 檢查參數(如漏填欄位、Email 格式是否正確)。
2. 確認是否已有重複 Email。
3. 將密碼進行 Hash。
4. 將資料寫入資料庫。
5. 返回成功訊息。
2. 取得未來天氣預報
你在網頁首頁看到現在到未來7天的天氣預報
* 介面: https://xxx.xxx.xx/api/weather?limit=7
* 觸發方式: 前端 發送 HTTP GET
* 目的: 取得7天天氣預報
* 如何達成: 前端需要知道嗎(~~不需要~~)
### 既然有前後端的API,有沒有其他類型的 API
> 當你開始接觸文件時,會遇到各式各樣的 API docs,但它們不一定是網址。
> 然而,它們一定是一種「介面」。
1. Axios API(JS 程式設計中常用的發送請求套件)
執行一個 HTTP GET 請求的例子:
* 介面: axios.get(url)
* 觸發方式: 執行 axios.get()
* 目的: 發送 HTTP GET 請求
* 如何達成: 可深入 Axios 的 source code 了解。
2. 服務之間溝通也不一定要透過 HTTP,有其他的方式,這邊就不多提。
---
## 結論
在整個服務的運作中,功能的實現都透過各種 介面(Interface)。
* 透過網頁取得未來天氣預報
1. 使用 Web User Interface(如表格與按鈕)。
2. 使用 Axios API(axios.get(url))發送 HTTP 請求。
3. 與 後端 API https://xxx.xxx.xx/api/weather?limit=7 溝通以取得資料。
* 回到開發上
1. 每個專案都有各種 需求(目的)。
2. 後端設計出能達成需求的功能。
3. 設定觸發方式。
4. 設計一個 介面(API),方便開發者使用。
---
以上內容是我在解釋「什麼是 API」時,對非程式背景或程式新手的說明方式。希望這樣的例子能幫助剛接觸的人更好地理解 API 的概念!
## 參考資料
* [API 到底是什麼? 用白話文帶你認識](https://medium.com/codingbar/api-%E5%88%B0%E5%BA%95%E6%98%AF%E4%BB%80%E9%BA%BC-%E7%94%A8%E7%99%BD%E8%A9%B1%E6%96%87%E5%B8%B6%E4%BD%A0%E8%AA%8D%E8%AD%98-95f65a9cfc33)
* [API是什麼?淺談API概念與運用案例|天矽科技客製化網頁設計](https://www.tsg.com.tw/blog-detail4-120-1-api.htm)
* 使用ChatGPT校稿
點擊複製文章連結
X