標準Http協(xié)議支持六種請求方法,即:
0豪治,GET
1,HEAD
2莹捡,PUT
3鬼吵,DELETE
4,POST
5篮赢,OPTIONS
但其實我們大部分情況下只用到了GET和POST。如果想設計一個符合RESTful規(guī)范的web應用程序琉挖,則這六種方法都會用到启泣。不過即使暫時不想涉及REST,了解這六種方法的本質仍然是很有作用的示辈。大家將會發(fā)現(xiàn)寥茫,原來web也是很簡潔明了的。下面依次說明這六種方法矾麻。
0纱耻,GET:GET可以說是最常見的了,它本質就是發(fā)送一個請求來取得服務器上的某一資源险耀。資源通過一組HTTP頭和呈現(xiàn)數(shù)據(jù)(如HTML文本弄喘,或者圖片或者視頻等)返回給客戶端。GET請求中甩牺,永遠不會包含呈現(xiàn)數(shù)據(jù)蘑志。
1,HEAD:HEAD和GET本質是一樣的贬派,區(qū)別在于HEAD不含有呈現(xiàn)數(shù)據(jù)急但,而僅僅是HTTP頭信息。有的人可能覺得這個方法沒什么用搞乏,其實不是這樣的波桩。想象一個業(yè)務情景:欲判斷某個資源是否存在,我們通常使用GET请敦,但這里用HEAD則意義更加明確镐躲。
2储玫,PUT:這個方法比較少見。HTML表單也不支持這個匀油。本質上來講缘缚,
PUT和POST極為相似,都是向服務器發(fā)送數(shù)據(jù)敌蚜,但它們之間有一個重要區(qū)別桥滨,PUT通常指定了資源的存放位置,而POST則沒有弛车,POST的數(shù)據(jù)存放位置由服務器自己決定齐媒。舉個例子:如一個用于提交博文的URL,/addBlog纷跛。如果用PUT喻括,則提交的URL會是像這樣的”/addBlog/abc123”,其中abc123就是這個博文的地址贫奠。而如果用POST唬血,則這個地址會在提交后由服務器告知客戶端。目前大部分博客都是這樣的唤崭。顯然拷恨,PUT和POST用途是不一樣的。具體用哪個還取決于當前的業(yè)務場景谢肾。
3腕侄,DELETE:刪除某一個資源÷瑁基本上這個也很少見冕杠,不過還是有一些地方比如amazon的S3云服務里面就用的這個方法來刪除資源。
4酸茴,POST:向服務器提交數(shù)據(jù)分预。這個方法用途廣泛,幾乎目前所有的提交操作都是靠這個完成弊决。
5噪舀,OPTIONS:這個方法很有趣,但極少使用飘诗。它用于獲取當前URL所支持的方法与倡。若請求成功,則它會在HTTP頭中包含一個名為“Allow”的頭昆稿,值是所支持的方法纺座,如“GET, POST”。
其實還有一個TRACE方法溉潭,不過這個基本上不會用到净响,這里就不介紹了少欺。以上的六種方法,我們可以跟數(shù)據(jù)庫的CRUD增刪改查操作對應起來:
CREATE :PUT
READ:GET
UPDATE:POST
DELETE:DELETE
這樣一來就實現(xiàn)了HTTP和數(shù)據(jù)庫操作(其實不光是數(shù)據(jù)庫馋贤,任何數(shù)據(jù)如文件圖表都是這樣)的完美統(tǒng)一赞别,這也是REST的精髓之一。