HTTP 協議支持多種參數提交方式,主要取決于請求方法(Method)和內容類型(Content-Type)。
以下是主要的參數提交協議:
1. URL 查詢參數 (Query Parameters)
請求方法: GET (也可用于其他方法)
格式:?
?key1=value1&key2=value2
示例:?
GET /users?id=123&name=John
獲取方式:
SpringBoot:?
@RequestParam
Servlet:?
request.getParameter()
2. 表單提交 (Form Data)
請求方法: POST (也可用于 PUT/PATCH)
Content-Type:?
application/x-www-form-urlencoded
?或?multipart/form-data
格式:
application/x-www-form-urlencoded
:?key1=value1&key2=value2
?(類似查詢參數但在請求體中)multipart/form-data
: 用于文件上傳,包含邊界分隔符
示例:
<form action="/submit" method="post" enctype="application/x-www-form-urlencoded"><input name="username" value="John"><input type="submit"> </form>
獲取方式:
SpringBoot:?
@RequestParam
?或?@ModelAttribute
Servlet:?
request.getParameter()
3. JSON 請求體 (JSON Payload)
請求方法: POST/PUT/PATCH/DELETE
Content-Type:?
application/json
格式: JSON 對象
示例:
json
{"name": "John","age": 30 }
獲取方式:
SpringBoot:?
@RequestBody
Servlet: 通過?
request.getReader()
?讀取輸入流
4. XML 請求體 (XML Payload)
請求方法: POST/PUT/PATCH/DELETE
Content-Type:?
application/xml
?或?text/xml
格式: XML 文檔
示例:
<user><name>John</name><age>30</age> </user>
獲取方式:
SpringBoot:?
@RequestBody
?配合 XML 解析器Servlet: 通過?
request.getReader()
?讀取輸入流
5. RESTful 路徑參數 (Path Variables)
請求方法: 任意方法
格式:?
/resource/{id}
示例:?
GET /users/123
獲取方式:
SpringBoot:?
@PathVariable
Servlet: 需要手動解析 URL
6. HTTP 頭部參數 (Headers)
位置: HTTP 頭部
示例:
Authorization: Bearer token123 Accept-Language: en-US
獲取方式:
SpringBoot:?
@RequestHeader
Servlet:?
request.getHeader()
7. Cookie 參數
位置: HTTP Cookie 頭部
示例:
Cookie: sessionId=abc123; username=John
獲取方式:
SpringBoot:?
@CookieValue
Servlet:?
request.getCookies()
8. GraphQL 查詢
請求方法: POST/GET
Content-Type:?
application/json
?(通常)格式: GraphQL 查詢語言
示例:
{"query": "{ user(id: 123) { name age } }" }
獲取方式: 需要專門的 GraphQL 處理器
9. WebSocket 參數
協議: WebSocket
格式: 自定義,通常為 JSON 或二進制
獲取方式: 通過 WebSocket API 處理
10. Server-Sent Events (SSE)
協議: HTTP 長連接
Content-Type:?
text/event-stream
格式: 特定的事件流格式
獲取方式: 通過專門的 SSE 客戶端處理
總結表
提交方式 | 典型 Content-Type | 主要用途 | SpringBoot 注解 |
---|---|---|---|
URL 查詢參數 | - | GET 請求簡單參數 | @RequestParam |
表單數據 | application/x-www-form-urlencoded | 傳統表單提交 | @RequestParam ,?@ModelAttribute |
多部分表單 | multipart/form-data | 文件上傳 | @RequestPart |
JSON 請求體 | application/json | REST API 復雜數據 | @RequestBody |
XML 請求體 | application/xml | 傳統 XML 接口 | @RequestBody |
路徑參數 | - | RESTful URL 設計 | @PathVariable |
HTTP 頭部 | - | 認證、語言偏好等 | @RequestHeader |
Cookie | - | 會話管理、用戶追蹤 | @CookieValue |