POST
HTTP POST 方法 將資料傳送到伺服器。請求主體型別由 Content-Type 標頭指示。
PUT 和 POST 之間的區別在於 PUT 是冪等的:呼叫一次或多次連續呼叫具有相同的效果(即沒有副作用),而連續的相同 POST 可能會有額外的影響,例如多次透過訂單。
POST 請求通常透過 HTML 表單 傳送,並導致伺服器上的更改。在這種情況下,內容型別是透過將適當的字串放入 enctype 屬性中 <form> 元素或 formenctype 屬性中 <input> 或 <button> 元素。
application/x-www-form-urlencoded:鍵值對用'&'分隔,鍵值之間用'='分隔。鍵值中非字母數字字元都經過 百分比編碼:這就是為什麼這種型別不適合用於二進位制資料(請改用multipart/form-data)的原因。multipart/form-data:每個值都作為一塊資料(“主體部分”)傳送,每個部分之間用使用者代理定義的分隔符(“邊界”)分隔。鍵值對在每個部分的Content-Disposition標頭中給出。text/plain
當 POST 請求透過除 HTML 表單之外的方法傳送時,例如 fetch() 呼叫,主體可以採用任何型別。正如 HTTP 1.1 規範中所述,POST 的設計是為了允許一種統一的方法來涵蓋以下功能
- 對現有資源的註釋
- 將訊息釋出到公告板、新聞組、郵件列表或類似的群組文章中;
- 透過註冊模態新增新使用者;
- 提供資料塊,例如提交表單的結果,到資料處理流程;
- 透過追加操作擴充套件資料庫。
語法
http
POST /test
示例
使用預設 application/x-www-form-urlencoded 內容型別的簡單表單
http
POST /test HTTP/1.1
Host: foo.example
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
field1=value1&field2=value2
使用 multipart/form-data 內容型別的表單
http
POST /test HTTP/1.1
Host: foo.example
Content-Type: multipart/form-data;boundary="boundary"
--boundary
Content-Disposition: form-data; name="field1"
value1
--boundary
Content-Disposition: form-data; name="field2"; filename="example.txt"
value2
--boundary--
規範
| 規範 |
|---|
| HTTP 語義 # POST |
瀏覽器相容性
BCD 表格僅在瀏覽器中載入