[譯]RESTful中不同HTTP請(qǐng)求類型的含義

原文地址:http://javarevisited.blogspot.com/2016/04/what-is-purpose-of-http-request-types-in-RESTful-web-service.html

RESTful web服務(wù)在設(shè)計(jì)上非常依賴于HTTP。通過(guò)使用不同的HTTP方法來(lái)完成工作,使用HTTP的響應(yīng)代碼來(lái)同時(shí)用戶一個(gè)請(qǐng)求是否成功。RESTful表示Representational State tranfer,使用HTTP來(lái)實(shí)現(xiàn)兩個(gè)系統(tǒng)之間通信。RESTful web服務(wù)是一些指向資源的URI(統(tǒng)一資源標(biāo)識(shí)符)的集合。這些URI可以指向一個(gè)資源或者多個(gè)資源的集合。比如說(shuō),/employee/101包含的是員工101的詳細(xì)信息,而/employees會(huì)返回所有員工的列表。在RESTful web服務(wù)中,HTTP請(qǐng)求類型表示要對(duì)資源進(jìn)行的操作。

例如:
使用HTTP GET請(qǐng)求訪問(wèn)/employee/101,可以取回該用戶的詳細(xì)信息。
使用POST請(qǐng)求訪問(wèn)/employee/102,將會(huì)創(chuàng)建一個(gè)ID為102的新員工。、使用PUT請(qǐng)求訪問(wèn)/employee/101,可以用來(lái)更新員工101的信息。
使用DELETE請(qǐng)求訪問(wèn)/employee/101,可以刪除ID為101的員工的數(shù)據(jù)。

在使用PUT和POST請(qǐng)求的時(shí)候,具體的數(shù)據(jù)將會(huì)包含在請(qǐng)求體中。

Purpose of HTTP Request in RESTful WebService

當(dāng)使用RESTful web服務(wù)的時(shí)候,每一種HTTP請(qǐng)求方法的含義如下:

GET

從服務(wù)器取回?cái)?shù)據(jù)(只是取回?cái)?shù)據(jù),而不會(huì)產(chǎn)生其他的影響)。這是一個(gè)冪等的方法(譯者注:使用相同的參數(shù)重復(fù)執(zhí)行,應(yīng)該能夠獲取到相同的結(jié)果)。下面是一個(gè)使用GET請(qǐng)求從服務(wù)器獲取id為123的書(shū)的例子:

GET /books/123

POST

POST請(qǐng)求通常用來(lái)創(chuàng)建一個(gè)實(shí)體,也就是一個(gè)沒(méi)有ID的資源。一旦這個(gè)請(qǐng)求成功執(zhí)行了,就會(huì)在HTTP請(qǐng)求的響應(yīng)中,返回這個(gè)新創(chuàng)建的實(shí)體的id。我們通常用它來(lái)上傳文件或者表單。
比如,下面這個(gè)URL將會(huì)在服務(wù)器上創(chuàng)建一本新書(shū):

POST /books/

PUT

PUT請(qǐng)求和POST請(qǐng)求類似,但是一般用來(lái)更新一個(gè)已有的實(shí)體。通過(guò)把已經(jīng)存在的資源的ID和新的實(shí)體用PUT請(qǐng)求上傳的服務(wù)器,來(lái)更新資源。
比如,下面這個(gè)URL將會(huì)替換掉服務(wù)器上的ID為123的書(shū):

PUT /books/123

可以參考Leonard Richardson, Sam Ruby, and David Heinemeier Hansson寫(xiě)的RESTful Web Services,來(lái)了解RESTful API中什么時(shí)候該使用PUT和POST。

DELETE

DELETE方法用來(lái)從服務(wù)器上刪除資源。和PUT類似,你需要把要?jiǎng)h除的資源的ID上傳給服務(wù)器。
比如下面這個(gè)URL可以用來(lái)刪除服務(wù)器上ID為123的書(shū):

DELETE /books/123

TRACE

提供一種方法來(lái)測(cè)試當(dāng)一個(gè)請(qǐng)求發(fā)生的時(shí)候,服務(wù)器通過(guò)網(wǎng)絡(luò)收到的內(nèi)容。所以,它會(huì)返回你發(fā)送的內(nèi)容。

HEAD

HEAS請(qǐng)求和GET請(qǐng)求資源類似,但是僅僅返回響應(yīng)的頭部(沒(méi)有具體的響應(yīng)體)。同時(shí),和GET請(qǐng)求類似,HEAD也是冪等的,不會(huì)在服務(wù)器上造成其他影響。

OPTIONS

OPTIONS方法允許客戶端請(qǐng)求一個(gè)服務(wù)所支持的請(qǐng)求方法。它所對(duì)應(yīng)的響應(yīng)頭(response header)是Allow, 它非常簡(jiǎn)單地列出了支持的方法。
(以下例子為譯者添加)
比如:

200 OK
Allow: HEAD,GET,PUT,DELETE,OPTIONS

CONNECT

主要用來(lái)建立一個(gè)對(duì)資源的網(wǎng)絡(luò)連接(通常請(qǐng)求一些能夠把HTTP連接轉(zhuǎn)發(fā)成為T(mén)CP連接并保持的代理)。一旦建立連接后,會(huì)響應(yīng)一個(gè)200狀態(tài)碼和一條“Connection Established”的消息。

下面這張圖展示了在RESTful web服務(wù)中,不同的HTTP方法的用法:

不同HTTP方法 的用法

以上就是在RESTful web服務(wù)中不同HTTP請(qǐng)求類型的含義,不管是在Java中還是在其他技術(shù)中。最重要的是理解PUT和POST之間的區(qū)別,盡管PUT和POST都可以用來(lái)創(chuàng)建和更新實(shí)體,但是通常更傾向于使用POST來(lái)創(chuàng)建,而使用PUT來(lái)更新已存在的實(shí)體。


感謝您的閱讀!
本賬號(hào)已經(jīng)不再更新,更多文章請(qǐng)移步我的個(gè)人博客https://www.zacharyjia.me

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容