一、關於PATCH
Http的【RFC2616】原本定義用於上傳數據的方法只有POST和PUT,但是考慮到兩者的不足,就增加了PATCH方法。
用PATCH方法,默認是以x-www-form-urlencoded的contentType來發送信息,並且信息內容是放在request的body里。
PUT方法和PATCH方法的提交目的地都是直接指向資源,而POST方法提交的數據的目的地是一個行為處理器。
PUT方法用來替換資源,而patch方法用來更新部分資源,然而PATCH和POST都是非冪等的,POST請求服務器執行一個動作,多次請求會多次執行。PATCH提供的實體則需要根據程序或其它協議的定義,解析后在服務器上執行,以此來修改服務器上的數據。也就是說,PATCH請求是會執行某個程序的,如果重復提交,程序可能執行多次,對服務器上的資源就可能造成額外的影響POST方法和PATCH方法它們的實體部分都是結構化的數據,所以PAtch也是非冪等的。POST方法的實體結構一般是 multipart/form-data或 application/x-www-form-urlencoded而PATCH方法的實體結構則隨其它規范定義。這和PUT方法的無結構實體相比就是最大的區別。
二、關於PATCH的延伸
然后聯系到HTTP的八種請求類型:OPTION、HEADER、GET、POST、PUT、DELETE、TRANCE、CONNECT
1、OPTION 返回給服務器針對特定資源所支持的請求方式,也可以利用向web服務器發送‘*’的請求來測試服務器的功能性。
2、HEADER是需要向服務器索要與GET一樣的請求,但是不返回返回體,這個方法可以在不必傳輸整個響應內容的情況下,獲取包含在響應消息頭中的元信息。
3、GET 向指定資源請求數據,一般用來獲取,查詢資源信息,較不安全,冪等(冪等是對同一URL的多個請求應該返回同樣的結果)的,只用來獲取數據不會修改數據,其請求顯示在url上,會被緩存,對請求長度有限制。和post是常用的提交方式。
4、POST 向指定資源提交數據進行請求處理,一般用來更新資源信息,非冪等,請求顯示在請求體里面,不會被緩存,對請求長度無限制。
5、PUT 向指定資源上傳最新的內容
6、DELETE 請求服務器器刪除Request-URI所標識的資源。
7、TRANCE 回顯服務器收到的請求,主要用於測試或診斷。
8、CONNECT HTTP1.1預留給可以將連接改為管道方式的服務器
