PUT 和 POST 都有更改指定 URI 的語義,但 PUT 被定義為 idempotent 的方法,POST 則不是 idempotent 的方法。
PUT 請求:如果兩個請求相同,后一個請求會把第一個請求覆蓋掉,所以 PUT 用來改資源。
POST 請求:后一個請求不會把第一個請求覆蓋掉,所以 POST 用來增資源。
POST 和 PUT 的區別
PUT 請求是向服務器端發送數據的,從而改變信息,該請求就像數據庫的 UPDATE 操作一樣,用來修改數據的內容,但是不會增加數據的種類等,也就是說無論進行多少次 PUT 操作,其結果并沒有不同。
POST 請求同 PUT 請求類似,都是向服務器端發送數據的,但是該請求會改變數據的種類等資源,就像數據庫的 INSERT 操作一樣,會創建新的內容。幾乎目前所有的提交操作都是用 POST 請求的。
就像前面所講的一樣,既然 PUT 和 POST 操作都是向服務器端發送數據的,那么兩者有什么區別呢。POST 主要作用在一個集合資源之上的(url),而 PUT 主要作用在一個具體資源之上的(url/xxx),通俗一下講就是,如 URL 可以在客戶端確定,那么可使用 PUT,否則用 POST。
綜上所述,可理解為以下:
POST /url 創建
PUT /url/xxx 更新