天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

深入淺出REST

  英文原文:A Brief Introduction to REST

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

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

  REST關鍵原則

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

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

  下面讓我們進一步審視這些原則。

  為所有“事物”定義ID

  在這里我使用了“事物”來代替更正式準確的術語“資源”,因為一條如此簡單的原則,不應該被淹沒在術語當中。思考一下人們構建的系統(tǒng),通常會找到一系列值得被標識的關鍵抽象。每個事物都應該是可標識的,都應該擁有一個明顯的ID——在Web中,代表ID的統(tǒng)一概念是:URI。URI構成了一個全局命名空間,使用URI標識你的關鍵資源意味著它們獲得了一個唯一、全局的ID。

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

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

  下面是一些你可能想到的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——這是個有用的觀點,盡管不是RESTful設計所必須的——應該能十分容易地推測出URI的含義:它們明顯地標識著單一“數(shù)據(jù)項”。但是再往下看:

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

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

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

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

  來對第一個原則做下總結:使用URI標識所有值得標識的事物,特別是應用中提供的所有“高級”資源,無論這些資源代表單一數(shù)據(jù)項、數(shù)據(jù)項集合、虛擬亦或?qū)嶋H的對象還是計算結果等。

  將所有事物鏈接在一起

  接下來要討論的原則有一個有點令人害怕的正式描述:“超媒體被當作應用狀態(tài)引擎(Hypermedia as the engine of application state)”,有時簡寫為HATEOAS。(嚴格地說,這不是我說的。)這個描述的核心是超媒體概念,換句話說:是鏈接的思想。鏈接是我們在HTML中常見的概念,但是它的用處絕不局限于此(用于人們網(wǎng)絡瀏覽)。考慮一下下面這個虛構的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知識庫深入淺出REST,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 宝贝好紧好爽再搔一点试視頻 | 青青草久久伊人 | 久久久久久久久人体 | 99热热在线精品久久 | 精品国产自在现线拍400部 | 色噜噜噜亚洲男人的天堂 | 扒开屁股眼往里面夹东西 | 午夜DV内射一区区 | 中文日韩亚洲欧美字幕 | 恋夜秀场支持安卓版全部视频国产 | 久久女婷五月综合色啪 | 亚洲成A人片在线观看中文不卡 | 欧美hdxxxx | 日韩一区精品视频一区二区 | 欧洲最大无人区免费高清完整版 | 国产又粗又猛又爽又黄的免费视频 | 亚洲第一伊人 | 同时被两个男人轮流舔 | 护士日本xx厕所 | 国内精品人妻无码久久久影院蜜桃 | 国产精品久久久精品日日 | 日本高清无吗 | 欧美怡红院视频一区二区三区 | 高清 国产 在线 亚洲 | 草莓视频cm.888tw | 97视频免费上传播放 | 超碰免费视频caopoom9 | 国产成人精品免费视频大全办公室 | JIZJIZJIZ 日本老师水多 | 美女快播第一网 | 三级全黄的视频在线观看 | 偷拍 拍自 欧美色区 | 色老汉网址导航 | 亚洲七七久久桃花综合 | 日本少妇内射视频播放舔 | 我的好妈妈8高清在线观看WWW | 一级黄色香蕉视频 | a亚洲在线观看不卡高清 | 久久精麻豆亚洲AV国产品 | 国产精品欧美久久久久天天影视 | 伊人久久艹 |