API就是當前端要跟後端拿資料、傳資料時溝通的橋樑
API(Application Programming Interface)是一種介面,讓不同的系統之間能用同一套規則來「對話」
在 Web 開發中,API 通常指的就是 Web API (REST API),前端透過 HTTP 請求 跟後端交換資料
要讓前端與後端能順利溝通,API 必須有一套大家都能理解的「通用語言」
主要有兩個部分:
/users
→ 所有使用者/users/123
→ ID 為 123 的那位使用者GET /users
→ 取得所有使用者POST /users
→ 建立一個新使用者PUT /users/123
→ 更新 ID=123 的使用者DELETE /users/123
→ 刪除 ID=123 的使用者API 回傳的資料,支援XML、JSON、純文本、HTML,但大多用 JSON (JavaScript Object Notation),因為它其實就是 JavaScript 的物件格式,所以在前端幾乎不用轉換就能直接使用,很方便
範例:
{
"id": 123,
"name": "Joanne",
"email": "test@example.com"
}
這份 JSON 就代表一個使用者的基本資料
向 API 發送請求,就是透過 HTTP Method 來表達你想做的事
假設今天要取得某資料,流程大概會是這樣:
發出請求
前端透過 fetch
發送一個 GET 請求:
const response = await fetch(`/api/all-data/${date}`);
解析資料
收到伺服器回傳的資料後,把它轉成 JavaScript 能處理的 JSON:
const allData = await response.json();
處理與分發資料
把資料丟到自己的函式裡做運算、繪圖或分析
更新 UI
最後再把結果呈現在畫面上,讓使用者看到最新資料
Note: SOAP是什麼?
當提到API的時候,有時候也會聽到 SOAP (Simple Object Access Protocol)
請求的樣子可能像是這樣:
(程式碼取自維基百科)
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<req:echo xmlns:req="http://localhost:8080/wxyc/login.do">
<req:category>classifieds</req:category>
</req:echo>
</soapenv:Body>
</soapenv:Envelope>
https://aws.amazon.com/tw/compare/the-difference-between-soap-rest/
https://aws.amazon.com/tw/what-is/api/