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

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

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

    RESTful知識(shí)要點(diǎn)小結(jié)

    REST是新一代的web service設(shè)計(jì)標(biāo)準(zhǔn),關(guān)于REST的定義,以及同傳統(tǒng)SOAP相比較的優(yōu)略,這里就不羅嗦了,以后可以直接google。
    這里先總結(jié)一下目前學(xué)到的REST相關(guān)知識(shí)。
    REST中存在兩個(gè)很重要的概念:資源 和 狀態(tài)轉(zhuǎn)移,一定要以這兩個(gè)概念為核心,再去了解其他的如緩存、安全等方面。好了,廢話少說,直接看總結(jié):

    1. 定義資源

    REST的首要步驟之一就是定義資源。將客戶端對(duì)URL的訪問定義成對(duì)不同資源的訪問。


    2. 定義統(tǒng)一接口

    HTTP是一種應(yīng)用協(xié)議,而不僅僅是傳輸協(xié)議。HTTP定義了諸如GET、PUT、DELETE、POST等方法對(duì)資源進(jìn)行操作。有了他們,我們無需創(chuàng)造createOrder, getStatus, updateStatus等應(yīng)用程序特定的操作了。

    所以,能否從HTTP基礎(chǔ)設(shè)施中獲得多少利益,主要取決于您把它當(dāng)做應(yīng)用層協(xié)議用的有多好。

    GET用于獲取資源

    PUT用于更新資源

    POST用于創(chuàng)建資源

    DELETE用于刪除資源


    3. 定義表述(Representation)

    資源是一個(gè)抽象的實(shí)體,因此需要在響應(yīng)時(shí)定義一種對(duì)資源的表述。表述的類型有很多種格式,常見的有xml、json、PDF、CSV等等


    4. 使用鏈接(link)實(shí)現(xiàn)狀態(tài)轉(zhuǎn)移

    鏈接(link)提供了一種方式,幫助你從一種資源轉(zhuǎn)移到另外一種資源,這種方式正好解釋了REST中Transfer的含義。譬如,當(dāng)使用GET獲取一個(gè)1000條資源的列表時(shí),如果當(dāng)前的表述無法包括所有的的資源,則可以在當(dāng)前表述中加上-“前頁”/“后頁”等的內(nèi)部鏈接,從而幫助客戶端完成對(duì)剩余資源獲取的轉(zhuǎn)移。

    如下定義的表述中返回一組書籍的列表,同時(shí)在結(jié)果中定義了對(duì)"prev"和"next"等狀態(tài)的轉(zhuǎn)移。

     

    {
        "results": [{
            "price": "25"
            "name": "java in action",
            "title": "java in action",
            "category": "IT",
            "isbn": "109422476",
            "description": "xxxx"},
         {
            "price": "40"
            "name": "Ruby in action",
            "title": "Ruby in action",
            "category": "IT",
            "isbn": "109422479",
            "description": "xxxx"}
        ]
        "links": [
        {
            "uri": "xxxx",
            "rel": "prev"
        },
        {
            "uri": "xxxx",
            "rel": "next"
        }],
        "available-results": 200
    }    

     

    另外,關(guān)于流程的狀態(tài)遷移,可以一步一步按照客戶端發(fā)出的請(qǐng)求返回符合條件的鏈接。

    比如流程是A->B->C->D,當(dāng)請(qǐng)求A時(shí),實(shí)際上并不知道接下來能否滿足條件訪問B,只有當(dāng)服務(wù)器成功響應(yīng)請(qǐng)求A后,在A的響應(yīng)中加入對(duì)資源B的鏈接,此時(shí),客戶端才可以繼續(xù)訪問B的請(qǐng)求。

    以此類推,達(dá)到了流程化中對(duì)多種資源狀態(tài)轉(zhuǎn)移的實(shí)現(xiàn)。


    5. 安全

     可以采用2種方式:

     1)當(dāng)客戶端訪問一個(gè)受保護(hù)資源時(shí),可以設(shè)置Authenticate頭,對(duì)<認(rèn)證用戶名>:<Secret>采用base64編碼,發(fā)送給服務(wù)器端.此種方式可以詳見HTTP協(xié)議。

     2)客戶端先發(fā)送請(qǐng)求,包括用戶名和加密過的密碼,服務(wù)器響應(yīng)后,返回特殊的key,客戶端下次訪問時(shí)候,攜帶上該key,例如

    客戶端采用POST發(fā)送請(qǐng)求:

     

    {
         "email":"xxxxx",
        "password":"xxxx"
    }

     

    服務(wù)器端返回請(qǐng)求:

     

    {
        "email":"xxxx"
        key:"xxxxxxxxxxxxx"
    }

     

    當(dāng)客戶端需要再次訪問受限資源時(shí),可以附帶上該key,這樣服務(wù)器端就知道請(qǐng)求的操作是否能訪問受限資源了。

    6. 緩存

       緩存可以幫助增加可靠性、減少服務(wù)器開銷、降低成本等。REST的緩存主要是利用HTTP協(xié)議的緩存機(jī)制,如Header中的no-cache、Expire、Cache-Control等


    posted on 2012-06-15 08:38 想飛就飛 閱讀(1705) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    公告


    導(dǎo)航

    <2012年6月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    統(tǒng)計(jì)

    常用鏈接

    留言簿(13)

    我參與的團(tuán)隊(duì)

    隨筆分類(69)

    隨筆檔案(68)

    最新隨筆

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 香蕉蕉亚亚洲aav综合| 污视频网站免费观看| 国产成人亚洲精品狼色在线 | 97在线线免费观看视频在线观看| 又硬又粗又长又爽免费看 | 久久久久久a亚洲欧洲AV| 国产免费av片在线无码免费看| 亚洲视频免费在线看| a级毛片免费高清视频| 亚洲av成人一区二区三区在线播放| 亚洲黄色免费观看| 亚洲人成色777777在线观看| 免费乱码中文字幕网站| 免费人成视频在线| 中文字幕免费在线看线人| 日本高清不卡aⅴ免费网站| 少妇亚洲免费精品| 国产成人+综合亚洲+天堂| 亚洲国产日韩精品| 亚洲中文字幕在线无码一区二区| 水蜜桃亚洲一二三四在线| 亚洲无码在线播放| 亚洲精品无码专区久久同性男| 精品久久洲久久久久护士免费| 野花高清在线电影观看免费视频 | 亚洲国产精华液网站w| 一本色道久久综合亚洲精品高清| 免费国产小视频在线观看| 日本免费一区尤物| 韩国日本好看电影免费看| 成人男女网18免费视频| AV大片在线无码永久免费| 久久精品免费一区二区| 69影院毛片免费观看视频在线| 日韩内射激情视频在线播放免费 | 亚洲精品无码不卡在线播放HE| 中文字幕精品无码亚洲字 | www永久免费视频| h片在线观看免费| 国产成人无码精品久久久久免费 | 成人免费午夜无码视频|