什麼是Web API?

更新於 發佈於 閱讀時間約 9 分鐘

在上一篇文章中,我們對 API 有了初步了解,並探討了它作為應用程式間溝通橋樑的角色。今天,我們將進一步深入介紹 Web API,尤其是它如何運作在現代網路應用程式中。同時,我們會詳細解釋 HTTP 協議,因為它是 Web API 交流的基礎。我們將討論 HTTP 的請求方法、結構,以及它如何回傳響應。


什麼是 Web API?

Web API 是一種 API,專門用於網路上的應用程式之間進行數據交換和操作。就像我們之前提到的,API 是應用程式之間的「溝通橋樑」,而 Web API 就是這種溝通的網路版。不同的應用程式可以透過 Web API 共享功能或數據,而無需直接整合彼此的程式碼。

Web API 是基於 HTTP 協議 來進行通信的,這就像網頁伺服器和瀏覽器之間的「語言」。每當你打開一個網站時,背後其實是 HTTP 協議在傳遞請求和回應,而 Web API 也同樣透過這個協議來實現應用程式之間的互動。


HTTP 協議:Web API 的基石

HTTP(Hypertext Transfer Protocol,超文本傳輸協議)是 Web API 最常用的通訊協議。它定義了如何在客戶端和伺服器之間傳遞數據。每一次請求和回應都依賴於 HTTP 協議,它告訴我們該如何發出請求、數據該如何被傳遞,以及伺服器該如何回應這些請求。讓我們看看一些常見的 HTTP 請求方法。


常見的 HTTP 請求方法

  1. GET
    • 用來從伺服器獲取資源。例如,當你瀏覽網頁或查詢數據時,通常會發送 GET 請求。
    • 範例:GET /api/users/123 用來獲取 ID 為 123 的用戶資料。
    • 特點:GET 請求是「安全」的操作,它不會改變伺服器上的資源,只是用來讀取數據。
  2. POST
    • 用來創建新的資源。例如,當你提交表單或上傳數據時,會使用 POST。
    • 範例:POST /api/users 用來新增一位新的用戶。
    • 特點:POST 會改變伺服器上的數據,並且通常會返回新創建的資源信息。
  3. PUT
    • 用來更新資源。這通常用來替換現有的數據,適合完整更新。
    • 範例:PUT /api/users/123 更新 ID 為 123 的用戶資料。
    • 特點:PUT 是冪等的,無論執行多少次,結果都一樣。
  4. PATCH
    • 用來部分更新資源。例如,你只想更新用戶的名字,而不改動其他資料。
    • 範例:PATCH /api/users/123 只更新 ID 為 123 的用戶部分資料。
    • 特點:只修改必要的部分數據,不會整體替換。
  5. DELETE
    • 用來刪除資源。當你想要移除伺服器上的數據時,會使用 DELETE。
    • 範例:DELETE /api/users/123 刪除 ID 為 123 的用戶資料。
    • 特點:DELETE 請求會永久刪除資源。

這些方法為 Web API 定義了與伺服器互動的方式,每種請求方法對應不同的操作,具體執行邏輯由伺服器決定。

以下是 HTTP 請求方法的整理表格,可以更直觀地瞭解每種方法的用途、特點,以及它們對伺服器資源的影響和安全性:

HTTP 方法用途範例特點對資源的影響安全性

GET

從伺服器獲取資源

GET /api/users/123

請求用來讀取數據,不會改變伺服器上的資源

不改變

安全、冪等

POST

創建新的資源

POST /api/users

用來創建新資源,通常會返回創建的資源信息

改變資源

非安全、非冪等

PUT

完整更新資源

PUT /api/users/123

用來替換現有資源的全部內容

完整替換

非安全、冪等

PATCH

部分更新資源

PATCH /api/users/123

用來部分更新現有資源

部分修改

非安全、非冪等

DELETE

刪除資源

DELETE /api/users/123

用來刪除資源,會永久刪除伺服器上的數據

刪除資源

非安全、冪等


說明:

  • 安全性:GET 請求被認為是「安全」的,因為它們不會改變伺服器上的數據。而 POST、PUT、PATCH 和 DELETE 會改變伺服器狀態,因此被視為「非安全」的。
  • 冪等:PUT 和 DELETE 被稱為「冪等」的操作,意思是無論你執行多少次操作,結果都是一樣的。而 POST 和 PATCH 是「非冪等」的,因為每次執行可能會導致不同的結果(例如重複創建資源)。

HTTP 的結構:Headers、Body 和狀態碼

HTTP Headers

HTTP Headers 是請求和回應中的元數據,用於傳遞關於請求和響應的額外信息。常見的 HTTP Headers 包括:

  • Content-Type:指定請求或回應的數據格式,如 application/jsontext/html
  • Authorization:用來傳遞身份驗證信息(例如 Token)。
  • Accept:告訴伺服器客戶端希望接收的數據格式。
  • User-Agent:識別發送請求的客戶端軟件。

HTTP Body

HTTP Body 是用來傳遞具體數據的部分。對於 POST、PUT、PATCH 這類操作,請求的 Body 通常包含了用來創建或更新資源的數據。而響應的 Body 則通常包含伺服器返回的資源數據。

HTTP 狀態碼

每次伺服器處理完請求後,會返回一個狀態碼,告訴客戶端請求的結果。這些狀態碼幫助我們快速了解伺服器的回應狀況。狀態碼分為五大類:

  1. 1xx 信息回應:表示請求已接收,正在處理中。
  2. 2xx 成功回應:表示請求成功處理,最常見的是 200 OK
  3. 3xx 重定向:表示資源已移動,需要重定向,常見的是 301 Moved Permanently
  4. 4xx 客戶端錯誤:表示請求有問題,例如 404 Not Found
  5. 5xx 伺服器錯誤:表示伺服器在處理請求時發生錯誤,如 500 Internal Server Error

常見的 HTTP 狀態碼一覽表

狀態碼描述類型說明

200

OK

成功

請求成功並返回數據。

201

Created

成功

新資源已成功創建。

204

No Content

成功

請求成功,但無需返回內容。

301

Moved Permanently

重定向

資源已永久移動到新位置。

302

Found

重定向

資源臨時移動。

304

Not Modified

重定向

資源未修改,可使用緩存。

400

Bad Request

客戶端錯誤

請求格式有誤,伺服器無法理解。

401

Unauthorized

客戶端錯誤

請求需要身份驗證。

403

Forbidden

客戶端錯誤

用戶無權進行此操作。

404

Not Found

客戶端錯誤

找不到請求的資源。

500

Internal Server Error

伺服器錯誤

伺服器處理請求時發生錯誤。

502

Bad Gateway

伺服器錯誤

伺服器作為代理,收到無效的上游響應。

503

Service Unavailable

伺服器錯誤

伺服器暫時無法處理請求。

這邊最最最常看到就是那萬惡的404Not Found,就是基於Http協議的狀態碼!


總結:Web API 與 HTTP 的核心聯繫

Web API 的運作離不開 HTTP 協議。無論是發送請求還是接收回應,HTTP 協議中的方法、Headers、Body 和狀態碼,都是讓 Web API 正常運作的基礎。掌握這些概念後,我們就能更好地理解如何設計和使用 Web API。

在下一篇文章中,我們將探討如何設計優秀的 Web API,讓它不僅能運作流暢,還能符合最佳實踐,讓開發者和使用者都獲得良好的體驗。

avatar-img
0會員
12內容數
歡迎來到 ChiYu Code Journey!這裡是我分享技術心得與開發經驗的空間,主要內容涵蓋 C#、.Net、API 開發及雲端等程式主題。偶爾也會分享一些日常生活點滴,像是我與我家可愛的法鬥相處的趣事等。希望在這裡能和大家一起學習、交流,一同踏上這段程式旅程!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
ChiYu Code Journey 的其他內容
本篇文章淺顯易懂地介紹什麼是API(應用程式介面),並以生活化的例子和C#程式碼範例說明介面的概念,以及API在不同領域的應用和優勢,例如Web API、作業系統API、庫或框架API等,並點出其在社群媒體整合、支付系統、地圖服務等日常生活中的重要性。
本篇文章淺顯易懂地介紹什麼是API(應用程式介面),並以生活化的例子和C#程式碼範例說明介面的概念,以及API在不同領域的應用和優勢,例如Web API、作業系統API、庫或框架API等,並點出其在社群媒體整合、支付系統、地圖服務等日常生活中的重要性。
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
※ 什麼是Web API API 就是後端開出來讓前端來用的介面,讓前端與後端可以溝通。 API流程: 終端使用者用任何一種裝置進入瀏覽器。 瀏覽器透過 API 向後端發出請求,請求查詢或修改資料。 後端透過 API 收到前端的請求後,取得資料並回應給前端。 前端渲染畫面,終端使用者
Thumbnail
※ 原本狀態:伺服器渲染 這是 MVC 架構下的 request / response 示意圖,在這張圖呈現的架構裡,畫面和資料都由同一個架構處理。 伺服器渲染流程: 瀏覽器針對特定網址送出請求。 路由器解析請求後,轉接給對應的 controller。 controller 按照要求,透過
Thumbnail
一、什麼是Web Service?   簡單說就是「服務」的概念,人與人間、電腦與電腦間都是一樣的,一個是人與人的一來一回交流,媒介是語言中文,另一個則是個人電腦與伺服器的交流,媒介是HTTP/Internet,那麼有了媒介,就會有共同格式才能做
HTTP(Hyper Text Transfer Protocol,超文字傳輸協定) 通常執行在TCP協定上。請求和回傳訊息的頭是ASCII,而內容是MIME。 HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer) 以HT
xhr 在下面的例子裡,我們首先建立了一個 XMLHttpRequest 物件,並使用 .open() 開啟一個 URL,最後使用 .send() 發出 request。 具體來說步驟有四個: 建立XMLHttpReque 開啟一個請求。 送出請求。 拿到回應後去處理畫面要如何呈現。
※ 什麼是 RESTful API? 這種運用 HTTP 來表達語義的路由設計風格稱為 RESTful API,它描述了如何實現 Web API 的架構。所謂的 API 是應用程式介面 (application programming interface),網址也是一種應用程式的「介面」,故稱為
Thumbnail
在API介接中使用x-www-form-urlencoded格式時,可能會遇到一些踩坑的情況,本文分享了作者在這方面遇到的問題和解決方法。
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
Request內容 package main import ( "fmt" "log" "net/http" "strings" ) func request(w http.ResponseWriter, r *http.Request) { //這些資訊是輸出到伺服器端的列印訊息
Thumbnail
Accept:用戶端能夠接收的內容類型。 Accept: text/plain, text/html Accept-Charset:瀏覽器可以接受的字元編碼集。 Accept-Charset: utf8 Accept-Encoding:指定瀏覽器可以支援的web伺服器返回內容壓縮編碼
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
※ 什麼是Web API API 就是後端開出來讓前端來用的介面,讓前端與後端可以溝通。 API流程: 終端使用者用任何一種裝置進入瀏覽器。 瀏覽器透過 API 向後端發出請求,請求查詢或修改資料。 後端透過 API 收到前端的請求後,取得資料並回應給前端。 前端渲染畫面,終端使用者
Thumbnail
※ 原本狀態:伺服器渲染 這是 MVC 架構下的 request / response 示意圖,在這張圖呈現的架構裡,畫面和資料都由同一個架構處理。 伺服器渲染流程: 瀏覽器針對特定網址送出請求。 路由器解析請求後,轉接給對應的 controller。 controller 按照要求,透過
Thumbnail
一、什麼是Web Service?   簡單說就是「服務」的概念,人與人間、電腦與電腦間都是一樣的,一個是人與人的一來一回交流,媒介是語言中文,另一個則是個人電腦與伺服器的交流,媒介是HTTP/Internet,那麼有了媒介,就會有共同格式才能做
HTTP(Hyper Text Transfer Protocol,超文字傳輸協定) 通常執行在TCP協定上。請求和回傳訊息的頭是ASCII,而內容是MIME。 HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer) 以HT
xhr 在下面的例子裡,我們首先建立了一個 XMLHttpRequest 物件,並使用 .open() 開啟一個 URL,最後使用 .send() 發出 request。 具體來說步驟有四個: 建立XMLHttpReque 開啟一個請求。 送出請求。 拿到回應後去處理畫面要如何呈現。
※ 什麼是 RESTful API? 這種運用 HTTP 來表達語義的路由設計風格稱為 RESTful API,它描述了如何實現 Web API 的架構。所謂的 API 是應用程式介面 (application programming interface),網址也是一種應用程式的「介面」,故稱為
Thumbnail
在API介接中使用x-www-form-urlencoded格式時,可能會遇到一些踩坑的情況,本文分享了作者在這方面遇到的問題和解決方法。
Thumbnail
先前幾篇筆記介紹了網路請求,瀏覽器儲存資料的方式,那麼實務上,前端最常需要發送網路請求的時候,就是透過呼叫 API,去向後端工程師發送/請求資料,所以今天來記錄什麼是 API吧!
Thumbnail
Request內容 package main import ( "fmt" "log" "net/http" "strings" ) func request(w http.ResponseWriter, r *http.Request) { //這些資訊是輸出到伺服器端的列印訊息
Thumbnail
Accept:用戶端能夠接收的內容類型。 Accept: text/plain, text/html Accept-Charset:瀏覽器可以接受的字元編碼集。 Accept-Charset: utf8 Accept-Encoding:指定瀏覽器可以支援的web伺服器返回內容壓縮編碼