指南

什麼是 API?給 App 製作者的白話指南

API(應用程式介面)是一種明確定義的方式,讓一套軟體向另一套軟體請求資料,或要求它執行某件事。你的 App 會以雙方約定的格式送出請求,例如「給我明天的預約」、「向這張卡收取 20 歐元」、「摘要這段文字」,而另一套系統會回傳結構化的回應。API 是 App 各部分彼此溝通的方式,也是你的 App 使用付款、電子郵件、地圖與 AI 等外部服務的方式。

用 AI 建站時,為什麼 API 很重要

幾乎每個實用的 App 都是由透過 API 溝通的部分組成的:

  • 在你的 App 內部,瀏覽器中的畫面會呼叫你自己後端的 API 來載入與儲存資料。
  • 在你的 App 外部,你的後端會呼叫其他公司的 API:用 Stripe 收款、用電子郵件服務寄送收據、用 AI 模型服務產生文字。

當你請 AI 建置工具「接受付款」或「加入 AI 摘要」時,它實際上是在撰寫呼叫 API 的程式碼。了解基本概念,能幫助你理解 AI 需要你提供什麼(通常是該服務的帳號與 API 金鑰)、哪裡可能出錯,以及費用會是多少。

日常生活的比喻

想像一間餐廳。你不會走進廚房自己做菜。你看菜單,用廚房能理解的方式告訴服務生你要什麼,服務生再把餐點端回來,或告訴你這道菜已經賣完了。

  • 菜單就是 API 文件:列出你可以要求什麼,以及如何要求。
  • 服務生就是 API:唯一約定好的方式,讓請求進來、回應出去。
  • 廚房就是另一套系統:你不需要知道它內部如何運作。
  • 你的點餐就是請求;端上來的餐點就是回應。

只要菜單不變,廚房就能更換烤箱、調整人手,而不會影響你。這正是 API 的真正價值:讓兩套系統可以一起運作,而彼此都不需要知道對方是如何建置的。

網頁 API 的請求如何運作

你最常遇到的大多數 API 都是透過 HTTP 運作的網頁 API,也就是你的瀏覽器使用的同一種通訊協定。每個請求都有幾個部分:

部分是什麼範例
方法(Method)動作的種類GET(讀取)、POST(建立)
URL/端點(Endpoint)你要操作之對象的位址https://api.example.com/bookings
標頭(Headers)額外資訊,包括你是誰Authorization: Bearer <你的金鑰>
內容(Body)建立或更新時傳送的資料{"name": "Lena", "time": "14:00"}

每個回應則包含:

部分是什麼範例
狀態碼(Status code)以數字表示結果如何200 成功、201 已建立、404 找不到
內容(Body)回傳的資料,通常為 JSON{"id": 5001, "status": "confirmed"}

JSON(JavaScript Object Notation)是一種簡單的文字格式,以大括號包住名稱與值。它是網頁 API 交換資料的標準方式。

REST:最常見的風格

REST 是設計網頁 API 時廣泛使用的慣例。每一類事物都有自己的網址,而標準方法說明你要對它做什麼。以下是預約 App 的 REST API 可能的樣子:

方法端點作用
GET/api/bookings列出預約
GET/api/bookings/5001取得一筆預約
POST/api/bookings建立新預約
PATCH/api/bookings/5001變更預約的部分內容,例如時間
DELETE/api/bookings/5001取消(刪除)預約

PUT 也存在,慣例上是取代整筆紀錄,而 PATCH 只會變更你傳送的欄位。

你最常看到的狀態碼:

代碼意思
200 / 201成功/已建立
400錯誤的請求——你傳送的內容有誤或缺漏
401未驗證——沒有有效的登入或金鑰
403禁止存取——系統認得你,但你沒有權限執行此動作
404找不到
429請求過多——你已達到速率限制
500伺服器發生錯誤

當你的 App 壞掉時,狀態碼通常是最快的線索。來自付款服務商的 401 通常代表 API 金鑰缺少或錯誤;429 則代表你呼叫得太頻繁。

REST 並不是唯一的風格,GraphQL 與 RPC 風格的 API 也都存在,但大多數服務與 AI 建置的後端使用的是 REST。

實例:預約確認

當客戶在美髮沙龍 App 中預約剪髮時,可能會在一、兩秒內發生數次 API 呼叫:

  1. 瀏覽器中的預約頁面,將服務項目、時間與客戶資料以 POST /api/bookings 傳送到你的後端。
  2. 你的後端檢查該時段是否可用,將預約儲存到資料庫中,並回傳 201 Created。
  3. 你的後端使用電子郵件服務商的機密金鑰呼叫其 API:「把這封確認信寄給 lena@example.com。」
  4. 如果需要訂金,你的後端會請付款服務商的 API 建立結帳工作階段,並把客戶導向該處。
  5. 稍後,付款服務商會呼叫你的 App,告訴你付款已成功。這個反向呼叫就是 Webhook。

前兩個步驟是你自己在前端與後端之間的 API。第 3 至 5 步則是第三方 API。

常見名詞解釋

名詞意思
端點(Endpoint)API 會回應的一個特定網址。
API 金鑰向服務識別你的 App 的機密字串。請像對待密碼一樣小心保管。
驗證(Authentication)證明呼叫者是誰——透過金鑰、權杖或登入。請參閱什麼是驗證。
速率限制(Rate limit)在一段時間內可以發出的請求數量上限。
SDK現成的程式庫,讓呼叫特定 API 更容易。
文件(Documentation)「菜單」:有哪些端點、它們接受什麼、回傳什麼。
沙盒/測試模式(Sandbox/test mode)服務的測試版本,不會動用真實金錢或真實資料。
Webhook某件事發生時,另一項服務對你的 App 發出的呼叫。

常見錯誤與迷思

  • 把秘密金鑰放在前端。 任何在瀏覽器中執行的程式碼,任何造訪的人都能看到。秘密金鑰必須留在伺服器上,保存在環境變數或機密設定中。
  • 把金鑰貼到聊天中。 聊天紀錄可能會被保存。請改用建置工具提供的機密功能,並更換任何已經外洩的金鑰。
  • 以為 API 是免費的。 許多 API 依請求次數或使用量收費,AI 模型 API 則依 Token 計費。請查看價格並設定花費上限。請參閱如何使用 LLM API。
  • 沒有處理失敗情況。 外部服務會當機、逾時、觸及限制。請要求合理的錯誤訊息與重試機制。
  • 信任瀏覽器。 你自己的 API 必須自行檢查權限。隱藏按鈕並不能阻止有人直接呼叫端點。
  • 測試時使用正式金鑰。 在準備上線之前,請使用測試模式的金鑰。

向你的 AI 建置工具要求什麼

  • 「這個 App 使用了哪些外部 API?每一項的費用是多少?」
  • 「只從伺服器呼叫付款 API。從環境變數讀取金鑰。」
  • 「列出我們 API 的每一個端點、它做什麼,以及誰被允許呼叫它。」
  • 「在更新或刪除預約之前,請在伺服器上檢查登入的使用者是否擁有該預約。」
  • 「如果電子郵件 API 失敗,仍然保存預約,並記錄錯誤。」
  • 「目前請使用服務商的測試模式。」

Mythex 中的 API

Mythex 可以為你建置自己的 API——無論是網頁 App 的一部分,還是與前端並行運行的獨立後端(Node、Python(FastAPI)、C# 或 Java)——並撰寫呼叫外部服務的程式碼。你應該把外部服務的金鑰以專案機密的方式新增,而不是在聊天中貼上;它們在預覽中以及發布後都能被你的 App 使用。文件中提供了整合任何 API與建置 REST API 後端的範例。

常見問題

用白話來說,什麼是 API?

API(應用程式介面)是一種明確定義的方式,讓一套軟體向另一套軟體請求資料或要求它執行某件事。你的 App 以雙方約定的格式送出請求,對方系統再回傳回應,例如天氣資料、付款結果或 AI 產生的回覆。

什麼是 REST API?

REST API 是一種常見的網頁 API 風格:每一類事物(例如預約、客戶)都有自己的網址,並使用標準的 HTTP 方法。GET 用來讀取,POST 用來建立,PUT 或 PATCH 用來更新,DELETE 用來刪除。資料通常以 JSON 格式回傳。

什麼是 API 金鑰?應該放在哪裡?

API 金鑰是一串機密字串,用來向服務識別你的 App,並且通常可以讓它動用費用或存取資料。請將它保存在環境變數或專案的伺服器機密設定中,絕對不要放在會在瀏覽器中執行的程式碼裡,也不要放在公開的儲存庫中。

API 和 Webhook 有什麼區別?

使用 API 時,你的 App 會在需要時向另一項服務請求某些東西。使用 Webhook 時,則是另一項服務在某件事發生時呼叫你的 App,例如付款服務商通知你某筆付款已成功。

Mythex · Pricing · 用 AI 打造任何東西 · 網站與應用程式範本 · Mythex 比較 · AI 應用程式開發詞彙表 · 免費的 AI 應用程式開發工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港)