<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    (轉)讀HTTP協議(RFC-2616)總結

    讀HTTP協議(RFC-2616)總結


    http://ayufox.javaeye.com/blog/391812

    關鍵字: http rest

    1.資源(Resource)
          什么是資源,首先我們看《架構風格與基于網絡的軟件架構設計》的作者:Roy Thomas Fielding對資源的一個說明

    Roy Thomas Fielding 寫道
    REST對于信息的核心抽象是資源。任何能夠被命名的信息都能夠作為一個資源:一份文檔或一張圖片、一個暫時性的服務(例如,“洛杉磯今日的天氣”)、一個其他資源的集合、一個非虛擬的對象(例如,人)等等。換句話說,任何可能作為一個創作者的超文本引用的目標的概念都必須符合資源的定義。一個資源是到一組實體的概念上的映射,而不是在任何特定時刻與該映射相關聯的實體本身。
    更精確地說,資源R是一個隨時間變化的成員函數MR(t),該函數將時間t映射到等價的一個實體或值的集合,集合中的值可能是資源的表現和/或資源的標識符。一個資源可以映射到空集,這允許在一個概念的任何實現存在之前引用這個概念——這一觀念對于Web之前的大多數超文本系統來說比較陌生 [61]。一些資源在它們被創建后的任何時刻來檢查,它們都對應著相同的值的集合,從這個意義上說它們是靜態的。其他的資源所對應的值則會隨時間而頻繁地變化。對于一個資源來說,唯一必須是靜態的是映射的語義,因為語義才是區別資源的關鍵。

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



    posted on 2010-05-18 21:31 liujg 閱讀(215) 評論(0)  編輯  收藏 所屬分類: Java基礎

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    boddiy

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 无码国产精品久久一区免费| 99久久精品国产免费| 午夜老司机免费视频| 亚洲中文无码av永久| 91免费精品国自产拍在线不卡| 亚洲小视频在线播放| 国产桃色在线成免费视频| 亚洲jjzzjjzz在线观看| 无码国产精品一区二区免费式直播 | 久久久高清日本道免费观看| 亚洲av最新在线网址| 亚洲视频免费播放| 久久精品国产亚洲av麻豆图片 | 最好看的中文字幕2019免费| 亚洲国产av高清无码| 全免费一级午夜毛片| 一级做a爰片久久毛片免费看 | 免费无遮挡无码永久视频| 亚洲蜜芽在线精品一区| 欧美a级在线现免费观看| 国产精品亚洲天堂| 国产精品亚洲精品日韩已满| 亚洲电影免费观看| 欧美亚洲国产SUV| 亚洲色大成网站WWW久久九九| 无码一区二区三区免费| 亚洲午夜无码久久| 国产亚洲av人片在线观看| 麻豆高清免费国产一区| 亚洲日韩一中文字暮| 国产亚洲美女精品久久久| 亚洲精品国产免费| 免费无遮挡无码视频在线观看| 亚洲AV无码成人精品区在线观看 | 亚洲精品tv久久久久久久久久| 日韩视频免费在线观看| 亚洲人成网站在线观看播放动漫| 国产zzjjzzjj视频全免费 | 成人免费视频一区二区三区| 一区二区三区免费电影| 亚洲国产视频网站|