關鍵字: http rest
1.資源(Resource) 什么是資源,首先我們看《架構風格與基于網(wǎng)絡的軟件架構設計》的作者:Roy Thomas Fielding對資源的一個說明
簡而言之,資源是一個抽象的東西,而在具體資源訪問時,會根據(jù)內(nèi)容協(xié)商的結果表示成一個具體表述(Representations)。每個資源由統(tǒng)一的資源標識符(URI)來描述,類似于資源的ID,或者說資源的地址。 2.表述(Representations) 表述是資源的具體表現(xiàn)形式,譬如,今天深圳的天氣(資源),可以使用一副天氣jpg圖來描述,也可以XML數(shù)據(jù)來描述,也可以使用HTML的頁面來描述,一種資源可以有多種表述,也就是說,通過同一個URI地址可以獲取到多種表現(xiàn)形式,而具體怎么表現(xiàn),則取決于Web客戶端與Web服務端內(nèi)容協(xié)商的一個結果。 3.內(nèi)容協(xié)商 客戶端和服務端通過內(nèi)容協(xié)商來協(xié)商請求內(nèi)容和響應內(nèi)容的格式,主要協(xié)商的內(nèi)容包括: 請求協(xié)商: 1)字符集(Accept-Charset):客戶端通過發(fā)送該協(xié)商建議服務端使用該字符集來發(fā)送響應結果,譬如 Accept-Charset=gb2312,utf-8;q=0.7,*;q=0.7,客戶端建議服務端優(yōu)先使用gb2312或者utf-8來發(fā)送響應結果 2)請求編碼(Accept-Encoding):客戶端告訴服務端客戶端所支持的編碼格式,譬如Accept-Encoding =gzip,deflate表明客戶端支持gzip壓縮或者普通響應的結果 3)語言(Accept-Language):客戶端通過發(fā)送該協(xié)商告訴服務端客戶端所使用的語言,譬如Accept-Language=zh-cn,zh;q=0.5表明客戶端偏號的語言是中文,譬如對于”今天深圳的天氣“這個資源來說,服務端可以通過該選項決定使用什么語言來表述資源 4)表述偏好(Accept):客戶端通過該選項告訴服務端其表述的偏號,譬如一個請求”今天深圳的天氣“的Ajax程序,可以通過設置表述偏好為Accept=application/json來告訴服務端,希望得到Json描述的結果,而一個瀏覽器則可以通過傳輸表述偏好為Accept=text/html來告訴服務端,希望得到Html描述的結果 響應協(xié)商: 1)表述/表述字符集(Content-Type):服務端通過該協(xié)商告訴客戶端表述的格式和字符集的情況,譬如Content-Type=text/html; charset=utf-8表示響應內(nèi)容格式為Html,字符集為utf-8 2)表述編碼(Accept-Encoding):服務端通過該協(xié)商告訴客戶端表述的編碼,譬如Content-Encoding=gzip服務端告訴客戶端內(nèi)容使用gzip壓縮 4.方法 方法定義了對資源的操作,主要的方法包括GET、POST、UPDATE、DELETE等等,它們分別代表了對資源的讀、建、改、刪的操作 5.緩存 HTTP協(xié)議支持在Web的各個節(jié)點對資源的表述進行緩存,譬如在瀏覽器客戶端、代理服務器、反向代理服務器、目標服務器等上對表述進行緩存(注意,此處的緩存不僅僅是指在目標服務器上進行的業(yè)務級別的緩存) 1)客戶端請求 如果客戶端緩存了某些表述,則在進行讀請求(GET)時,攜帶請求條件(所謂的條件GET,使用Cache-Control指令),服務端接收到客戶端的請求條件,比較確認客戶端的表述是否過時,如果沒有,則返回304響應,否則則把最新的表述響應給客戶端 2)服務端響應 服務端對一些需要緩存的表述,則響應中攜帶緩存指令,告訴請求客戶端如何對表述進行緩存 3)方法對緩存的影響 當對一個資源進行UPDATE或DELETE時,請求途經(jīng)的所有服務器(如代理服務器、反向代理服務器、目標服務器)會自動將該資源對應的所有表述 緩存失效。 6.狀態(tài)碼 狀態(tài)碼描述了資源請求的結果,主要狀態(tài)碼包括: 1)1XX:信息類 2)2XX:成功類 典型的成功響應包括: 200 OK,表示請求正常處理 201 Created,表示POST請求已經(jīng)接受,資源已創(chuàng)建,對于此響應,一般響應會攜帶新建資源的Reference給請求客戶端 202 Accepted,表示POST/UDATE請求已經(jīng)接受,但不一定處理,譬如對于POST/UPDATE請求為后臺新建線程處理,可以使用該響應碼 3)3XX: 重定向類 典型的重定向響應包括: 300 Multiple Choice:表明請求的資源有多種表述 301 Moved Permenently:表明所請求的資源已轉移到其他位置,建議到新的位置上去請求資源 304 Not Modify:主要是針對攜帶條件的GET請求,服務端向客戶端表明所請求的資源沒有發(fā)生變化,可以繼續(xù)使用客戶端已緩存的數(shù)據(jù) 4)4XX: 客戶端錯誤類 典型的客戶端錯誤響應包括: 400 Bad Request:表明客戶端的請求格式服務端無法識別 403 Forbiden:客戶端要訪問的資源權限受限,不允許訪問 404 Not found:客戶端要訪問的資源不存在 405 Method Not Allowed:客戶端請求的方法不允許,譬如有可能一個資源不允許刪除,則不允許進行DELETE請求 408 Request Timeout:請求超時 5)5XX: 服務端錯誤類 典型的服務端響應包括: 500 Internal Server Error:服務器內(nèi)部錯誤,無法響應 503 Service Unavailable:服務器無法處理當前請求 504 Gateway Timeout:網(wǎng)關超時
posted on 2010-05-18 21:31 liujg 閱讀(215) 評論(0) 編輯 收藏 所屬分類: Java基礎
Powered by: BlogJava Copyright © liujg