青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

理解RESTful架構

轉載自:http://www.ruanyifeng.com/blog/2011/09/restful.html

作者: 阮一峰

日期: 2011年9月12日

越來越多的人開始意識到,網站即軟件,而且是一種新型的軟件。

這種"互聯網軟件"采用客戶端/服務器模式,建立在分布式體系上,通過互聯網通信,具有高延時(high latency)、高并發等特點。

網站開發,完全可以采用軟件開發的模式。但是傳統上,軟件和網絡是兩個不同的領域,很少有交集;軟件開發主要針對單機環境,網絡則主要研究系統之間的通信?;ヂ摼W的興起,使得這兩個領域開始融合,現在我們必須考慮,如何開發在互聯網環境中使用的軟件。

RESTful架構,就是目前最流行的一種互聯網軟件架構。它結構清晰、符合標準、易于理解、擴展方便,所以正得到越來越多網站的采用。

但是,到底什么是RESTful架構,并不是一個容易說清楚的問題。下面,我就談談我理解的RESTful架構。

一、起源

REST這個詞,是Roy Thomas Fielding在他2000年的博士論文中提出的。

Fielding是一個非常重要的人,他是HTTP協議(1.0版和1.1版)的主要設計者、Apache服務器軟件的作者之一、Apache基金會的第一任主席。所以,他的這篇論文一經發表,就引起了關注,并且立即對互聯網開發產生了深遠的影響。

他這樣介紹論文的寫作目的:

"本文研究計算機科學兩大前沿----軟件和網絡----的交叉點。長期以來,軟件研究主要關注軟件設計的分類、設計方法的演化,很少客觀地評估不同的設計選擇對系統行為的影響。而相反地,網絡研究主要關注系統之間通信行為的細節、如何改進特定通信機制的表現,常常忽視了一個事實,那就是改變應用程序的互動風格比改變互動協議,對整體表現有更大的影響。我這篇文章的寫作目的,就是想在符合架構原理的前提下,理解和評估以網絡為基礎的應用軟件的架構設計,得到一個功能強、性能好、適宜通信的架構。"

(This dissertation explores a junction on the frontiers of two research disciplines in computer science: software and networking. Software research has long been concerned with the categorization of software designs and the development of design methodologies, but has rarely been able to objectively evaluate the impact of various design choices on system behavior. Networking research, in contrast, is focused on the details of generic communication behavior between systems and improving the performance of particular communication techniques, often ignoring the fact that changing the interaction style of an application can have more impact on performance than the communication protocols used for that interaction. My work is motivated by the desire to understand and evaluate the architectural design of network-based application software through principled use of architectural constraints, thereby obtaining the functional, performance, and social properties desired of an architecture. )

二、名稱

Fielding將他對互聯網軟件的架構原則,定名為REST,即Representational State Transfer的縮寫。我對這個詞組的翻譯是"表現層狀態轉化"。

如果一個架構符合REST原則,就稱它為RESTful架構。

要理解RESTful架構,最好的方法就是去理解Representational State Transfer這個詞組到底是什么意思,它的每一個詞代表了什么涵義。如果你把這個名稱搞懂了,也就不難體會REST是一種什么樣的設計。

三、資源(Resources)

REST的名稱"表現層狀態轉化"中,省略了主語。"表現層"其實指的是"資源"(Resources)的"表現層"。

所謂"資源",就是網絡上的一個實體,或者說是網絡上的一個具體信息。它可以是一段文本、一張圖片、一首歌曲、一種服務,總之就是一個具體的實在。你可以用一個URI(統一資源定位符)指向它,每種資源對應一個特定的URI。要獲取這個資源,訪問它的URI就可以,因此URI就成了每一個資源的地址或獨一無二的識別符。

所謂"上網",就是與互聯網上一系列的"資源"互動,調用它的URI。

四、表現層(Representation)

"資源"是一種信息實體,它可以有多種外在表現形式。我們把"資源"具體呈現出來的形式,叫做它的"表現層"(Representation)。

比如,文本可以用txt格式表現,也可以用HTML格式、XML格式、JSON格式表現,甚至可以采用二進制格式;圖片可以用JPG格式表現,也可以用PNG格式表現。

URI只代表資源的實體,不代表它的形式。嚴格地說,有些網址最后的".html"后綴名是不必要的,因為這個后綴名表示格式,屬于"表現層"范疇,而URI應該只代表"資源"的位置。它的具體表現形式,應該在HTTP請求的頭信息中用Accept和Content-Type字段指定,這兩個字段才是對"表現層"的描述。

五、狀態轉化(State Transfer)

訪問一個網站,就代表了客戶端和服務器的一個互動過程。在這個過程中,勢必涉及到數據和狀態的變化。

互聯網通信協議HTTP協議,是一個無狀態協議。這意味著,所有的狀態都保存在服務器端。因此,如果客戶端想要操作服務器,必須通過某種手段,讓服務器端發生"狀態轉化"(State Transfer)。而這種轉化是建立在表現層之上的,所以就是"表現層狀態轉化"。

客戶端用到的手段,只能是HTTP協議。具體來說,就是HTTP協議里面,四個表示操作方式的動詞:GET、POST、PUT、DELETE。它們分別對應四種基本操作:GET用來獲取資源,POST用來新建資源(也可以用于更新資源),PUT用來更新資源,DELETE用來刪除資源。

六、綜述

綜合上面的解釋,我們總結一下什么是RESTful架構:

  (1)每一個URI代表一種資源;

 ?。?)客戶端和服務器之間,傳遞這種資源的某種表現層;

  (3)客戶端通過四個HTTP動詞,對服務器端資源進行操作,實現"表現層狀態轉化"。

七、誤區

RESTful架構有一些典型的設計誤區。

最常見的一種設計錯誤,就是URI包含動詞。因為"資源"表示一種實體,所以應該是名詞,URI不應該有動詞,動詞應該放在HTTP協議中。

舉例來說,某個URI是/posts/show/1,其中show是動詞,這個URI就設計錯了,正確的寫法應該是/posts/1,然后用GET方法表示show。

如果某些動作是HTTP動詞表示不了的,你就應該把動作做成一種資源。比如網上匯款,從賬戶1向賬戶2匯款500元,錯誤的URI是:

  POST /accounts/1/transfer/500/to/2

正確的寫法是把動詞transfer改成名詞transaction,資源不能是動詞,但是可以是一種服務:

  POST /transaction HTTP/1.1
  Host: 127.0.0.1
  
  from=1&to=2&amount=500.00

另一個設計誤區,就是在URI中加入版本號

  http://www.example.com/app/1.0/foo

  http://www.example.com/app/1.1/foo

  http://www.example.com/app/2.0/foo

因為不同的版本,可以理解成同一種資源的不同表現形式,所以應該采用同一個URI。版本號可以在HTTP請求頭信息的Accept字段中進行區分(參見Versioning REST Services):

  Accept: vnd.example-com.foo+json; version=1.0

  Accept: vnd.example-com.foo+json; version=1.1

  Accept: vnd.example-com.foo+json; version=2.0

(完)

posted on 2014-06-01 12:27 楊粼波 閱讀(641) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久久久性| 亚洲激情在线观看| 亚洲一区影院| 国产欧美日韩精品a在线观看| 亚洲欧美中文在线视频| 亚洲自拍啪啪| 影音先锋亚洲电影| 91久久国产综合久久| 欧美系列一区| 久久久夜精品| 欧美mv日韩mv国产网站app| 一区二区三区鲁丝不卡| 亚洲一区二区三区乱码aⅴ| 国产精品影院在线观看| 欧美激情四色| 国产精品毛片高清在线完整版| 欧美一区二区三区在线| 久久亚洲欧美国产精品乐播| 夜夜嗨一区二区三区| 香蕉免费一区二区三区在线观看| 亚洲成人资源网| 一区二区三区高清视频在线观看| 国产亚洲欧美一区| 亚洲精品资源| 国内一区二区三区| 日韩一级二级三级| 一色屋精品视频免费看| 夜夜嗨一区二区| 亚洲福利精品| 午夜精品久久久久久99热| 亚洲国产日韩一区| 性色av一区二区怡红| 日韩午夜激情电影| 久久久久综合网| 欧美一区二区三区视频免费| 欧美经典一区二区三区| 久久精品二区三区| 国产精品国产三级国产aⅴ入口 | 亚洲精品乱码久久久久久久久 | 亚洲精品一二三区| 一区精品久久| 欧美一区二区高清在线观看| 一本大道av伊人久久综合| 久久精品理论片| 欧美亚洲一级片| 欧美日韩在线一二三| 欧美日韩成人一区二区| 亚洲国产婷婷| 国产精品一区二区女厕厕| 亚洲激情自拍| 亚洲电影免费在线 | 久久中文字幕一区| 国产精品社区| 亚洲色在线视频| 亚洲伦理在线观看| 欧美成人一区在线| 欧美大片91| 亚洲国产成人av| 免费精品99久久国产综合精品| 久久九九免费视频| 国产一区二区三区在线观看精品| 亚洲视频免费在线| 亚洲欧美日韩成人高清在线一区| 欧美三级在线| 亚洲网站在线| 久久精品成人一区二区三区| 国产亚洲精品bt天堂精选| 亚洲欧美在线一区二区| 久久gogo国模裸体人体| 国产一区成人| 久久人人九九| 亚洲精品黄色| 亚洲一区二区久久| 国产日产欧产精品推荐色| 欧美亚洲网站| 欧美电影专区| 在线视频日韩| 国产视频一区二区在线观看| 欧美亚洲综合久久| 蜜桃av久久久亚洲精品| 亚洲日韩第九十九页| 欧美日韩国产亚洲一区| 中文精品视频一区二区在线观看| 午夜精彩国产免费不卡不顿大片| 国产色爱av资源综合区| 久久人人看视频| 夜夜嗨av一区二区三区中文字幕| 香港久久久电影| 尤物yw午夜国产精品视频| 欧美高清在线视频| 亚洲性线免费观看视频成熟| 久久婷婷国产综合尤物精品| 亚洲精品久久7777| 国产精品稀缺呦系列在线| 久久久噜噜噜久久狠狠50岁| 亚洲精品国产精品乱码不99| 欧美一级一区| 亚洲精品久久久久久久久久久久久 | 久热精品在线视频| 中日韩高清电影网| 国产亚洲二区| 欧美日韩国产高清| 久久国产精品黑丝| 99精品国产一区二区青青牛奶| 欧美中文在线免费| 亚洲精品社区| 好看的日韩av电影| 欧美系列电影免费观看| 久久夜色精品国产欧美乱| 亚洲午夜精品在线| 亚洲国产成人在线| 久久精品国产91精品亚洲| 夜夜嗨av一区二区三区网页| 国产一区二区三区在线播放免费观看| 欧美成人a视频| 久久久蜜臀国产一区二区| 国产欧美一区二区白浆黑人| 欧美国产成人精品| 久久精品国产欧美亚洲人人爽| 9久草视频在线视频精品| 欧美a级一区| 久久精品在线| 欧美一级视频免费在线观看| 中文国产成人精品久久一| 亚洲激情精品| 亚洲高清免费在线| 国内视频一区| 国产一区二区三区不卡在线观看| 欧美小视频在线观看| 欧美精品一区二区久久婷婷| 久久综合五月| 久久免费观看视频| 久久av最新网址| 久久成人国产| 久久er99精品| 久久精品水蜜桃av综合天堂| 午夜精品久久久久久99热软件 | 欧美国产日本| 奶水喷射视频一区| 欧美chengren| 亚洲国产精品成人精品| 欧美激情欧美狂野欧美精品| 蘑菇福利视频一区播放| 欧美成人情趣视频| 亚洲国产精品成人va在线观看| 欧美成人午夜影院| 亚洲第一福利视频| 最新国产の精品合集bt伙计| 亚洲人成网站色ww在线| 亚洲精品国产品国语在线app| 亚洲激情午夜| 国产精品99久久久久久久久久久久| 亚洲人成亚洲人成在线观看图片| 亚洲欧洲一区| 亚洲一区黄色| 欧美一区午夜精品| 久久亚洲免费| 欧美日韩麻豆| 国产女主播一区二区三区| 韩国女主播一区| 亚洲国产婷婷香蕉久久久久久99| 亚洲人成欧美中文字幕| 9久草视频在线视频精品| 亚洲一区在线播放| 久久久精品久久久久| 欧美高清你懂得| 日韩一级精品视频在线观看| 午夜精彩国产免费不卡不顿大片| 久久国产婷婷国产香蕉| 欧美激情2020午夜免费观看| 国产精品久久久久久久第一福利 | 激情久久久久久久| 妖精视频成人观看www| 亚洲欧美在线播放| 欧美成人第一页| 一区二区三区毛片| 久久久久欧美| 国产精品国产成人国产三级| 伊人蜜桃色噜噜激情综合| 一区二区欧美在线| 久久综合给合久久狠狠狠97色69| 亚洲人成小说网站色在线| 亚洲欧美日本国产有色| 欧美成人tv| 国外视频精品毛片| 亚洲欧美日本日韩| 欧美α欧美αv大片| 午夜精品久久久久久久久久久久久 | 日韩午夜电影在线观看| 欧美与黑人午夜性猛交久久久| 欧美激情91| 模特精品在线| 狼狼综合久久久久综合网 | 久久一综合视频| 国产欧美日韩一区二区三区| 一区二区日韩伦理片| 女生裸体视频一区二区三区 | 亚洲国产综合91精品麻豆| 欧美一区二区视频在线观看| 国产精品video|