POST

HTTP POST 方法 將資料傳送到伺服器。請求主體型別由 Content-Type 標頭指示。

PUTPOST 之間的區別在於 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 的設計是為了允許一種統一的方法來涵蓋以下功能

  • 對現有資源的註釋
  • 將訊息釋出到公告板、新聞組、郵件列表或類似的群組文章中;
  • 透過註冊模態新增新使用者;
  • 提供資料塊,例如提交表單的結果,到資料處理流程;
  • 透過追加操作擴充套件資料庫。
請求有主體
成功響應有主體
安全
冪等
可快取 僅當包含新鮮度資訊時
HTML 表單 中允許

語法

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 表格僅在瀏覽器中載入

另請參閱