天天躁日日躁狠狠躁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)系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲精品有码在线观看 | 国精产品砖一区二区三区糖心 | 日韩成人黄色 | 男总裁憋尿PLAY灌尿BL | 国产亚洲精品久久久久久一区二区 | 拍床戏被肉高H纯肉H在水 | https黄视| 国产永久免费高清在线观看 | 野花日本大全免费高清完整版 | 久久永久影院免费 | 日本一本免费线观看视频 | 亚洲国产货青视觉盛宴 | 国产精选视频在线观看 | 趁老师睡着吃她的奶水 | 乌克兰14一18处交见血 | 八妻子秋霞理在线播放 | 99视频精品全部免费免费观 | 国产精品一区二区三区免费 | 国产在线高清视频无码 | 国产精品ⅴ视频免费观看 | 国产自拍视频在线一区 | 乳色吐息未增删樱花ED在线观看 | 亚洲欧洲日韩国产一区二区三区 | 2020久久精品永久免费 | 国产精品一区二区AV97 | 岛国片免费在线观看 | 国产在线观看码高清视频 | 最新黄色在线 | 视频一区二区中文字幕 | 欧美疯狂做受xxxxx喷水 | 久久精品中文闷骚内射 | 大屁股妇女流出白浆 | 亚洲精品无码久久久久A片 亚洲精品无码国产爽快A片百度 | 日本精品无码久久久久APP | 欧式午夜理伦三级在线观看 | 午夜伦理yy44008影院 | 一个人免费观看完整视频日本 | 国产成人在线观看免费网站 | 国产区在线不卡视频观看 | 激情女人花| 97精品一区二区视频在线观看 |