盡力說清楚POST/PUT/PATCH
在 postman 裡面,我們可以看到 form-data 的原始碼類似
POST /api/order?ab=ab HTTP/1.1 Host: localhost:8081 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW cache-control: no-cache Postman-Token: 07d87f1e-94fd-4656-881c-898cfc66be36 Content-Disposition: form-data; name="goodsId" 1 Content-Disposition: form-data; name="num" 1 Content-Disposition: form-data; name="skuMapIndex" 黃色>M Content-Disposition: form-data; name="addressId" 1 ------WebKitFormBoundary7MA4YWxkTrZu0gW--
x-www-form-urlencoded 的原始碼類似
POST /api/order?ab=ab HTTP/1.1 Host: localhost:8081 Content-Type: application/x-www-form-urlencoded cache-control: no-cache Postman-Token: 92f20568-aad7-445d-aaae-e949db87c53d %08apiToken=ljjljja=b
x-www-form-urlencoded 優點:
- 使用&連線的k=v字串,更簡潔
缺點:
- 使用utf-8編碼,中文長度變長
- 不支援檔案(2進位制內容)
POST PUT 和 PATCH
標準中 post 用來更新全部內容,put 和 patch 用來更新部分資源。其中 put 是冪等的,patch 不是冪等。
但是實際專案中,即使 post 也不會用來更新全部內容,比如 created_time 就一定是伺服器端生成,而不是客戶端上傳。因此這三者更實用上的區別是:PUT、PATCH 不支援 form-data