一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

深入淺出REST

  英文原文:A Brief Introduction to REST

  作者:Stefan Tilkov ,譯者:苑永凱,發(fā)布于 2007-12-25

  不知你是否意識(shí)到,圍繞著什么才是實(shí)現(xiàn)異構(gòu)的應(yīng)用應(yīng)用通信的“正確”方式,一場(chǎng)爭(zhēng)論正進(jìn)行的如火如荼:雖然當(dāng)前主流的方式明顯地集中在基于SOAP、WSDL和WS-*規(guī)范的Web Services領(lǐng)域,但也有少數(shù)人用細(xì)小但洪亮的聲音主張說(shuō)更好的方式是REST,表述性狀態(tài)轉(zhuǎn)移(REpresentational State Transfer)的簡(jiǎn)稱。在本文中,我不會(huì)涉及爭(zhēng)論的話題,而是嘗試對(duì)REST和RESTful HTTP應(yīng)用集成做實(shí)用性的介紹。以我的經(jīng)驗(yàn),有些話題一旦觸及就會(huì)引來(lái)眾多的討論,當(dāng)涉及到這方面話題的時(shí)候,我會(huì)深入詳細(xì)地闡述。

  REST關(guān)鍵原則

  大部分對(duì)REST的介紹是以其正式的定義和背景作為開(kāi)場(chǎng)的。但這兒且先按下不表,我先提出一個(gè)簡(jiǎn)單扼要的定義:REST定義了應(yīng)該如何正確地使用(這和大多數(shù)人的實(shí)際使用方式有很大不同)Web標(biāo)準(zhǔn),例如HTTP和URI。如果你在設(shè)計(jì)應(yīng)用程序時(shí)能堅(jiān)持REST原則,那就預(yù)示著你將會(huì)得到一個(gè)使用了優(yōu)質(zhì)Web架構(gòu)(這將讓你受益)的系統(tǒng)。總之,五條關(guān)鍵原則列舉如下:

  • 為所有“事物”定義ID
  • 將所有事物鏈接在一起
  • 使用標(biāo)準(zhǔn)方法
  • 資源多重表述
  • 無(wú)狀態(tài)通信

  下面讓我們進(jìn)一步審視這些原則。

  為所有“事物”定義ID

  在這里我使用了“事物”來(lái)代替更正式準(zhǔn)確的術(shù)語(yǔ)“資源”,因?yàn)橐粭l如此簡(jiǎn)單的原則,不應(yīng)該被淹沒(méi)在術(shù)語(yǔ)當(dāng)中。思考一下人們構(gòu)建的系統(tǒng),通常會(huì)找到一系列值得被標(biāo)識(shí)的關(guān)鍵抽象。每個(gè)事物都應(yīng)該是可標(biāo)識(shí)的,都應(yīng)該擁有一個(gè)明顯的ID——在Web中,代表ID的統(tǒng)一概念是:URI。URI構(gòu)成了一個(gè)全局命名空間,使用URI標(biāo)識(shí)你的關(guān)鍵資源意味著它們獲得了一個(gè)唯一、全局的ID。

  對(duì)事物使用一致的命名規(guī)則(naming scheme)最主要的好處就是你不需要提出自己的規(guī)則——而是依靠某個(gè)已被定義,在全球范圍中幾乎完美運(yùn)行,并且能被絕大多數(shù)人所理解的規(guī)則。想一下你構(gòu)建的上一個(gè)應(yīng)用(假設(shè)它不是采用RESTful方式構(gòu)建的)中的任意一個(gè)高級(jí)對(duì)象(high-level object),那就很有可能看到許多從使用唯一標(biāo)識(shí)中受益的用例。比如,如果你的應(yīng)用中包含一個(gè)對(duì)顧客的抽象,那么我可以相當(dāng)肯定,用戶會(huì)希望將一個(gè)指向某個(gè)顧客的鏈接,能通過(guò)電子郵件發(fā)送到同事那里,或者加入到瀏覽器的書簽中,甚至寫到紙上。更透徹地講:如果在一個(gè)類似于Amazon.com的在線商城中,沒(méi)有用唯一的ID(一個(gè)URI)標(biāo)識(shí)它的每一件商品,可想而知這將是多么可怕的業(yè)務(wù)決策。

  當(dāng)面對(duì)這個(gè)原則時(shí),許多人驚訝于這是否意味著需要直接向外界暴露數(shù)據(jù)庫(kù)記錄(或者數(shù)據(jù)庫(kù)記錄ID)——自從多年以來(lái)面向?qū)ο蟮膶?shí)踐告誡我們,要將持久化的信息作為實(shí)現(xiàn)細(xì)節(jié)隱藏起來(lái)之后,哪怕是剛有點(diǎn)想法都常會(huì)使人驚恐。但是這條原則與隱藏實(shí)現(xiàn)細(xì)節(jié)兩者之間并沒(méi)有任何沖突:通常,值得被URI標(biāo)識(shí)的事物——資源——要比數(shù)據(jù)庫(kù)記錄抽象的多。例如,一個(gè)定單資源可以由定單項(xiàng)、地址以及許多其它方面(可能不希望作為單獨(dú)標(biāo)識(shí)的資源暴露出來(lái))組成。標(biāo)識(shí)所有值得標(biāo)識(shí)的事物,領(lǐng)會(huì)這個(gè)觀念可以進(jìn)一步引導(dǎo)你創(chuàng)造出在傳統(tǒng)的應(yīng)用程序設(shè)計(jì)中不常見(jiàn)的資源:一個(gè)流程或者流程步驟、一次銷售、一次談判、一份報(bào)價(jià)請(qǐng)求——這都是應(yīng)該被標(biāo)識(shí)的事物的示例。同樣,這也會(huì)導(dǎo)致創(chuàng)建比非RESTful設(shè)計(jì)更多的持久化實(shí)體。

  下面是一些你可能想到的URI的例子:

http://example.com/customers/1234

http://example.com/orders/2007/10/776654

http://example.com/products/4554

http://example.com/processes/salary-increase-234

  正如我選擇了創(chuàng)建便于閱讀的URI——這是個(gè)有用的觀點(diǎn),盡管不是RESTful設(shè)計(jì)所必須的——應(yīng)該能十分容易地推測(cè)出URI的含義:它們明顯地標(biāo)識(shí)著單一“數(shù)據(jù)項(xiàng)”。但是再往下看:

http://example.com/orders/2007/11

http://example.com/products?color=green

  首先,這兩個(gè)URI看起來(lái)與之前的稍有不同——畢竟,它們不是對(duì)一件事物的標(biāo)識(shí),而是對(duì)一類事物集合的標(biāo)識(shí)(假定第一個(gè)URI標(biāo)識(shí)了所有在2007年11月份提交的定單,第二個(gè)則是綠顏色產(chǎn)品的集合)。但是這些集合自身也是事物(資源),也應(yīng)該被標(biāo)識(shí)。

  注意,使用唯一、全局統(tǒng)一的命名規(guī)則的好處,既適用于瀏覽器中的Web應(yīng)用,也適用于機(jī)對(duì)機(jī)(machine-to-machine,m2m)通信。

  來(lái)對(duì)第一個(gè)原則做下總結(jié):使用URI標(biāo)識(shí)所有值得標(biāo)識(shí)的事物,特別是應(yīng)用中提供的所有“高級(jí)”資源,無(wú)論這些資源代表單一數(shù)據(jù)項(xiàng)、數(shù)據(jù)項(xiàng)集合、虛擬亦或?qū)嶋H的對(duì)象還是計(jì)算結(jié)果等。

  將所有事物鏈接在一起

  接下來(lái)要討論的原則有一個(gè)有點(diǎn)令人害怕的正式描述:“超媒體被當(dāng)作應(yīng)用狀態(tài)引擎(Hypermedia as the engine of application state)”,有時(shí)簡(jiǎn)寫為HATEOAS。(嚴(yán)格地說(shuō),這不是我說(shuō)的。)這個(gè)描述的核心是超媒體概念,換句話說(shuō):是鏈接的思想。鏈接是我們?cè)贖TML中常見(jiàn)的概念,但是它的用處絕不局限于此(用于人們網(wǎng)絡(luò)瀏覽)。考慮一下下面這個(gè)虛構(gòu)的XML片段:

<order self="http://example.com/customers/1234">  <amount>23</amount>  <product ref="http://example.com/products/4554">    <customer ref="http://example.com/customers/1234"></customer>  </product></order>

it知識(shí)庫(kù)深入淺出REST,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 成人影院观看 | 91视频免费网址 | 国产精品久久久久鬼色 | 日韩理论在线 | 欧美另类丰满69xxxxx | 一区二区三区免费在线观看 | 国产亚洲精品国产第一 | 六月丁香婷婷天天在线 | 91城中村在线精品 | 视频一区二区三区在线观看 | 国产高清在线视频 | 色噜噜视频| 好吊操免费视频 | 精品国产免费第一区二区三区日韩 | 亚洲日本一区二区三区 | 91精品国产丝袜白色高跟鞋 | 欧美成人免费一级人片 | 久久国产精品久久久 | 91亚洲国产系列精品第56页 | 国产乱子伦一区二区三区 | 永久黄网站色视频免费 | 欧美成人性色区 | 美女很黄很黄是免费的·无遮挡网站 | 麻豆视频导航 | 亚洲一区二区中文 | 激情小视频在线 | 91玖玖| 四虎影视国产永久免费 | 碰碰碰人人澡人人爱摸 | 中文字幕一区二区三区永久 | 久久青草免费91线频观看站街 | 中文字幕精品一区 | 亚洲欧美人妖另类激情综合区 | 国产一级一极性活片 | 免费视频一区二区 | 999热精品这里在线观看 | 影院成人区精品一区二区婷婷丽春院影视 | 国产欧美激情一区二区三区 | 男女朋友做爽爽爽免费视频网 | 中文字幕一区二区三区免费视频 | 色思思|