在 HTTP 請求報文 中,方法(Method) 是用來說明客戶端希望對服務器資源執行的操作。它出現在 HTTP 報文的第一行,稱為 請求行,格式如下:
METHOD Request-URI HTTP-Version
例如:
GET /index.html HTTP/1.1
? 常見 HTTP 方法詳解
方法名 | 含義 | 是否有請求體 | 是否冪等 | 常見用途 |
---|---|---|---|---|
GET | 獲取資源 | 否 | ? 是 | 瀏覽網頁、獲取數據 |
POST | 提交資源(如表單) | ? 是 | ? 否 | 登錄、注冊、上傳數據 |
PUT | 更新資源(整體替換) | ? 是 | ? 是 | 修改整個用戶信息等 |
DELETE | 刪除資源 | 否(可選體) | ? 是 | 刪除記錄、數據等 |
HEAD | 獲取響應頭,不返回內容體 | 否 | ? 是 | 檢查資源是否存在 |
OPTIONS | 詢問支持的方法 | 否 | ? 是 | CORS 預檢、功能探測 |
PATCH | 局部更新資源 | ? 是 | ? 有爭議(大多數認為是) | 局部修改用戶資料等 |
TRACE | 回顯請求報文 | 否 | ? 是 | 調試用,不常見 |
CONNECT | 用于建立隧道(如 HTTPS) | 否 | ? 否 | HTTPS代理 |
“冪等(Idempotent)”
? 一句話定義:
冪等操作:無論執行一次還是執行多次,其對系統的最終影響是一樣的。
🎯 通俗解釋
你可以把“冪等”理解為:
- “我重復點多少次這個按鈕,最終結果都一樣。”
🔍 方法詳解
1. GET
-
用途:獲取資源。
-
特點:
- 參數通過 URL 傳遞(?key=value)
- 不應產生副作用(不修改資源)
- 不能帶請求體
2. POST
-
用途:向服務器提交數據。
-
特點:
- 請求體中包含數據(如表單、JSON)
- 常用于登錄、注冊、上傳
- 不冪等,連續發送多次會產生多次影響
3. PUT
-
用途:更新(替換)指定資源。
-
特點:
- 是冪等的:多次調用效果一樣
- 請求體中包含完整的新資源
- 常用于 REST API 中修改資源
4. DELETE
-
用途:刪除資源。
-
特點:
- 通常是冪等的:刪除一次和多次一樣
- 不一定有請求體
5. HEAD
-
與 GET 類似,但不返回響應體,只返回響應頭。
-
常用于:
- 測試資源是否存在
- 檢查資源是否被修改(配合
ETag
)
6. OPTIONS
- 查看服務器允許的 HTTP 方法。
- 用于跨域請求的預檢請求(preflight)
返回響應頭如:
Allow: GET, POST, OPTIONS
7. PATCH
- 與 PUT 不同,它是部分更新資源。
- 用于只修改一個字段或局部數據。
- 示例:只更新用戶名,而不提交整個用戶對象。
🚨 冪等性說明
- 冪等:調用一次與多次效果一致(無副作用)
- 非冪等:多次調用可能產生不同影響
方法 | 冪等性 |
---|---|
GET | ? 冪等 |
PUT | ? 冪等 |
DELETE | ? 冪等 |
POST | ? 非冪等 |
PATCH | ? 通常認為是 |
🧾 示例:完整 HTTP 請求報文
POST /api/login HTTP/1.1
Host: www.example.com
Content-Type: application/json
Content-Length: 38{"username": "admin","password": "123456"
}
如你還想看某個方法的具體交互過程(如 OPTIONS
的跨域示例、PATCH
的 JSON格式)或使用工具如 curl
、Postman
測試,我可以繼續講解。需要嗎?