當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 鷹潭OA > 鷹潭網(wǎng)站建設(shè)公司
RESTful的實(shí)現(xiàn)
申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114
鷹潭網(wǎng)站建設(shè)www.diyphp.netREST (REpresentation State Transfer) 描繪了一個(gè)架構(gòu)款式的收集系統(tǒng),比方 web 使用順序。它初次呈現(xiàn)在 2000 年 Roy Fielding 的博士論文中,他是 HTTP 標(biāo)準(zhǔn)的首要編寫者之一。REST 指的是一組架構(gòu)約束前提和準(zhǔn)則。知足這些約束前提和準(zhǔn)則的使用順序或設(shè)計(jì)就是 RESTful。
Web 使用順序最主要的 REST 準(zhǔn)則是,客戶端和效勞器之間的交互在懇求之間是無形態(tài)的。從客戶端到效勞器的每個(gè)懇求都必需包括了解懇求所必需的信息。假如效勞器在懇求之間的任何工夫點(diǎn)重啟,客戶端不會(huì)獲得告訴。此外,無形態(tài)懇求可以由任何可用效勞器答復(fù),這非常合適云核算之類的情況??蛻舳丝梢跃彺鏀?shù)據(jù)以改良功能。
在效勞器端,使用順序形態(tài)和功用可以分為各類資本。資本是一個(gè)風(fēng)趣的概念實(shí)體,它向客戶端公開。資本的例子有:使用順序?qū)ο?、?shù)據(jù)庫記載、算法等等。每個(gè)資本都運(yùn)用 URI (Universal Resource Identifier) 獲得一個(gè)專一的地址。一切資本都共享一致的界面,以便在客戶端和效勞器之間傳輸形態(tài)。運(yùn)用的是規(guī)范的 HTTP 辦法,比方 GET、PUT、POST 和 DELETE。Hypermedia 是使用順序形態(tài)的引擎,資本透露表現(xiàn)經(jīng)過超鏈接互聯(lián)。
另一個(gè)主要的 REST 準(zhǔn)則是分層系統(tǒng),這透露表現(xiàn)組件無法調(diào)查它與之交互的中心層以外的組件。經(jīng)過將系統(tǒng)常識(shí)限制在單個(gè)層,可以限制整個(gè)系統(tǒng)的復(fù)雜性,促進(jìn)了底層的自力性。
當(dāng) REST 架構(gòu)的約束前提作為一個(gè)全體使用時(shí),將生成一個(gè)可以擴(kuò)展到很多客戶端的使用順序。它還降低了客戶端和效勞器之間的交互推遲。一致界面簡(jiǎn)化了整個(gè)系統(tǒng)架構(gòu),改良了子系統(tǒng)之間交互的可見性。REST 簡(jiǎn)化了客戶端和效勞器的完成。
RESTful的完成:RESTful Web 效勞與 RPC 款式的 Web 效勞
調(diào)查了什么是什么是REST,我們?cè)倏纯碦ESTful的完成。比來,運(yùn)用 RPC 款式架構(gòu)構(gòu)建的基于 SOAP 的 Web 效勞成為完成 SOA 最常用的辦法。RPC 款式的 Web 效勞客戶端將一個(gè)裝滿數(shù)據(jù)的信封(包羅辦法和參數(shù)信息)經(jīng)過 HTTP 發(fā)送到效勞器。效勞器翻開信封并運(yùn)用傳入?yún)?shù)執(zhí)行指定的辦法。辦法的后果打包到一個(gè)信封并作為呼應(yīng)發(fā)還客戶端??蛻舳耸盏胶魬?yīng)并翻開信封。每個(gè)對(duì)象都有本人共同的辦法以及僅公開一個(gè) URI 的 RPC 款式 Web 效勞,URI 透露表現(xiàn)單個(gè)端點(diǎn)。它疏忽 HTTP 的大局部特征且僅支撐 POST 辦法。
因?yàn)檩p量級(jí)以及經(jīng)過 HTTP 直接傳輸數(shù)據(jù)的特征,Web 效勞的 RESTful 辦法曾經(jīng)成為最經(jīng)常見的替代辦法??梢赃\(yùn)用各類言語(比方 Java 順序、Perl、Ruby、Python、PHP 和 Javascript[包羅 Ajax])完成客戶端。RESTful Web 效勞凡間可以經(jīng)過主動(dòng)客戶端或代表用戶的使用順序拜訪。然則,這種效勞的簡(jiǎn)潔性讓用戶可以與之直接交互,運(yùn)用它們的 Web 閱讀器構(gòu)建一個(gè) GET URL 并讀取返回的內(nèi)容。
在 REST 款式的 Web 效勞中,每個(gè)資本都有一個(gè)地址。資本自身都是辦法挪用的目的,辦法列表對(duì)一切資本都是一樣的。這些辦法都是規(guī)范辦法,包羅 HTTP GET、POST、PUT、DELETE,還能夠包羅 HEADER 和 OPTIONS。
在 RPC 款式的架構(gòu)中,存眷點(diǎn)在于辦法,而在 REST 款式的架構(gòu)中,存眷點(diǎn)在于資本 —— 將運(yùn)用規(guī)范辦法檢索并操作信息片段(運(yùn)用透露表現(xiàn)的方式)。資本透露表現(xiàn)方式在透露表現(xiàn)方式中運(yùn)用超鏈接互聯(lián)。
Leonard Richardson 和 Sam Ruby 在他們的著作 RESTful Web Services 中引入了術(shù)語 REST-RPC 夾雜架構(gòu)。REST-RPC 夾雜 Web 效勞不運(yùn)用信封包裝辦法、參數(shù)和數(shù)據(jù),而是直接經(jīng)過 HTTP 傳輸數(shù)據(jù),這與 REST 款式的 Web 效勞是相似的。然則它不運(yùn)用規(guī)范的 HTTP 辦法操作資本。它在 HTTP 懇求的 URI 局部存儲(chǔ)辦法信息。好幾個(gè)知名的 Web 效勞,比方 Yahoo 的 Flickr API 和 del.icio.us API 都運(yùn)用這種夾雜架構(gòu)。
RESTful的完成:RESTful Web 效勞的 Java 框架
有兩個(gè) Java 框架可以協(xié)助構(gòu)建 RESTful Web 效勞。erome Louvel 和 Dave Pawson 開拓的 Restlet(見 參考材料)是輕量級(jí)的。它完成針對(duì)各類 RESTful 系統(tǒng)的資本、透露表現(xiàn)、銜接器和媒體類型之類的概念,包羅 Web 效勞。在 Restlet 框架中,客戶端和效勞器都是組件。組件經(jīng)過銜接器相互通訊。該框架最主要的類是抽象類 Uniform 及其詳細(xì)的子類 Restlet,該類的子類是專用類,比方 Application、Filter、Finder、Router 和 Route。這些子類可以一同處置驗(yàn)證、過濾、平安、數(shù)據(jù)轉(zhuǎn)換以及將傳入懇求路由到響應(yīng)資本等操作。Resource 類生成客戶端的透露表現(xiàn)方式。
JSR-311是 Sun Microsystems 的標(biāo)準(zhǔn),可認(rèn)為開拓 RESTful Web 效勞界說一組 Java API。Jersey是對(duì) JSR-311 的參考完成。
JSR-311 供應(yīng)一組注釋,相關(guān)類和接口都可以用來將 Java 對(duì)象作為 Web 資本展現(xiàn)。該標(biāo)準(zhǔn)假定 HTTP 是底層收集和談。它運(yùn)用注釋供應(yīng) URI 和響應(yīng)資本類之間的明晰映射,以及 HTTP 辦法與 Java 對(duì)象辦法之間的映射。API 支撐普遍的 HTTP 實(shí)體內(nèi)容類型,包羅 HTML、XML、JSON、GIF、JPG 等。它還將供應(yīng)所需的插件功用,以答應(yīng)運(yùn)用規(guī)范辦法經(jīng)過使用順序添加其他類型。
RESTful的完成:構(gòu)建 RESTful Web 效勞的多層架構(gòu)
RESTful Web 效勞和動(dòng)態(tài) Web 使用順序在很多方面都是相似的。有時(shí)它們供應(yīng)一樣或十分相似的數(shù)據(jù)和函數(shù),雖然客戶端的品種分歧。例如,在線電子商務(wù)分類網(wǎng)站為用戶供應(yīng)一個(gè)閱讀器界面,用于查找、檢查和訂購產(chǎn)物。假如還供應(yīng) Web 效勞供公司、零售商甚至小我可以主動(dòng)訂購產(chǎn)物,它將十分有效。與大局部動(dòng)態(tài) Web 使用順序一樣,Web 效勞可以從多層架構(gòu)的存眷點(diǎn)別離中受益。營業(yè)邏輯和數(shù)據(jù)可以由主動(dòng)客戶端和 GUI 客戶端共享。專一的分歧點(diǎn)在于客戶端的實(shí)質(zhì)和中心層的透露表現(xiàn)層。此外,從數(shù)據(jù)拜訪平分離營業(yè)邏輯可完成數(shù)據(jù)庫自力性,并為各類類型的數(shù)據(jù)存儲(chǔ)供應(yīng)插件才能。
圖 1 展現(xiàn)了主動(dòng)化客戶端,包羅 Java 和各類言語編寫的劇本,這些言語包羅 Python、Perl、Ruby、PHP 或敕令行東西,比方 curl。在閱讀器中運(yùn)轉(zhuǎn)且作為 RESTful Web 效勞消費(fèi)者運(yùn)轉(zhuǎn)的 Ajax、Flash、JavaFX、GWT、博客和 wiki 都屬于此列,由于它們都代表用戶以主動(dòng)化款式運(yùn)轉(zhuǎn)。主動(dòng)化 Web 效勞客戶端在 Web 層向 Resource Request Handler 發(fā)送 HTTP 呼應(yīng)??蛻舳说臒o形態(tài)懇求在頭部包括辦法信息,即 POST、GET、PUT 和 DELETE,這又將映射到 Resource Request Handler 中資本的響應(yīng)操作。每個(gè)懇求都包括一切必需的信息,包羅 Resource Request Handler 用來處置懇求的憑證。
從 Web 效勞客戶端收到懇求之后,Resource Request Handler 從營業(yè)邏輯層懇求效勞。Resource Request Handler 確定一切概念性的實(shí)體,系統(tǒng)將這些實(shí)體作為資本公開,并為每個(gè)資本分派一個(gè)專一的 URI。然則,概念性的實(shí)體在該層是不存在的。它們存在于營業(yè)邏輯層。可以運(yùn)用 Jersey 或其他框架(比方 Restlet)完成 Resource Request Handler,它應(yīng)該是輕量級(jí)的,將很多職責(zé)任務(wù)托付給營業(yè)層。
Ajax 和 RESTful Web 效勞實(shí)質(zhì)上是互為增補(bǔ)的。它們都可以應(yīng)用很多 Web 技能和規(guī)范,比方 HTML、JavaScript、閱讀器對(duì)象、XML/JSON 和 HTTP。當(dāng)然也不需求購置、裝置或裝備任何首要組件來支撐 Ajax 前端和 RESTful Web 效勞之間的交互。RESTful Web 效勞為 Ajax 供應(yīng)了十分簡(jiǎn)略的 API 來處置效勞器上資本之間的交互。
圖 1 中的 Web 閱讀器客戶端作為 GUI 的前端,運(yùn)用透露表現(xiàn)層中的 Browser Request Handler 生成的 HTML 供應(yīng)顯示功用。Browser Requester Handler 可以運(yùn)用 MVC 模子(JSF、Struts 或 Spring 都是 Java 的例子)。它從閱讀器承受懇求,從營業(yè)邏輯層懇求效勞,生成透露表現(xiàn)并對(duì)閱讀器做出呼應(yīng)。透露表現(xiàn)供用戶在閱讀器中顯示運(yùn)用。透露表現(xiàn)不只包括內(nèi)容,還包括顯示的屬性,比方 HTML 和 CSS。
<img class="fit-image" border="0" alt="多層 Web 使用順序情況圖" src="http://images.51cto.com/files/uploadimg/20090805/1546390.jpg" width="498" />
營業(yè)規(guī)矩可以集中到營業(yè)邏輯層,該層充任透露表現(xiàn)層和數(shù)據(jù)拜訪層之間的數(shù)據(jù)交流的中心層。數(shù)據(jù)以域?qū)ο蠡蛑祵?duì)象的方式供應(yīng)給透露表現(xiàn)層。從營業(yè)邏輯層中解耦 Browser Request Handler 和 Resource Request Handler 有助于促進(jìn)代碼重用,并能完成靈敏和可擴(kuò)展的架構(gòu)。此外,因?yàn)槲磥砜梢赃\(yùn)用新的 REST 和 MVC 框架,完成它們變得愈加輕易,無需重寫營業(yè)邏輯層。
數(shù)據(jù)拜訪層供應(yīng)與數(shù)據(jù)存儲(chǔ)層的交互,可以運(yùn)用 DAO 設(shè)計(jì)形式或許對(duì)象-關(guān)系映射處理方案(如 Hibernate、OJB 或 iBATIS)完成。作為替代方案,營業(yè)層和數(shù)據(jù)拜訪層中的組件可以完成為 EJB 組件,并獲得 EJB 容器的支撐,該容器可認(rèn)為組件生命周期供應(yīng)便當(dāng),治理耐久性、事務(wù)和資本裝備。然則,這需求一個(gè)服從 Java EE 的使用效勞器(比方 JBoss),而且能夠無法處置 Tomcat。該層的效果在于針對(duì)分歧的數(shù)據(jù)存儲(chǔ)技能,從營業(yè)邏輯平分離數(shù)據(jù)拜訪代碼。數(shù)據(jù)拜訪層還可以作為銜接其他系統(tǒng)的集成點(diǎn),可以成為其他 Web 效勞的客戶端。
數(shù)據(jù)存儲(chǔ)層包羅數(shù)據(jù)庫系統(tǒng)、LDAP 效勞器、文件系統(tǒng)和企業(yè)信息系統(tǒng)(包羅遺留系統(tǒng)、事務(wù)處置系統(tǒng)和企業(yè)資本規(guī)劃系統(tǒng))。運(yùn)用該架構(gòu),您可以開端看到 RESTful Web 效勞的力氣,它可以靈敏地成為任何企業(yè)數(shù)據(jù)存儲(chǔ)的一致 API,然后向以用戶為中間的 Web 使用順序公開垂直數(shù)據(jù),并主動(dòng)化批量申報(bào)劇本。
什么是REST:完畢語
REST 描繪了一個(gè)架構(gòu)款式的互聯(lián)絡(luò)統(tǒng)(如 Web 使用順序)。REST 約束前提作為一個(gè)全體使用時(shí),將生成一個(gè)簡(jiǎn)略、可擴(kuò)展、有用、平安、牢靠的架構(gòu)。因?yàn)樗?jiǎn)潔、輕量級(jí)以及經(jīng)過 HTTP 直接傳輸數(shù)據(jù)的特征,RESTful Web 效勞成為基于 SOAP 效勞的一個(gè)最有出路的替代方案。用于 web 效勞和動(dòng)態(tài) Web 使用順序的多層架構(gòu)可以完成可重用性、簡(jiǎn)略性、可擴(kuò)展性和組件可呼應(yīng)性的明晰別離。Ajax 和 RESTful Web 效勞實(shí)質(zhì)上是互為增補(bǔ)的。開拓人員可以輕松運(yùn)用 Ajax 和 RESTful Web 效勞一同創(chuàng)立豐厚的界面。
- 1GAE上搭建PHP環(huán)境并開啟URL
- 2最新動(dòng)態(tài)-久途遷新址
- 3ecshop的數(shù)據(jù)字典
- 4Linux操作系統(tǒng)中用PHP構(gòu)建網(wǎng)站詳解
- 5玩具租賃商城系統(tǒng)需求5
- 6網(wǎng)站策劃的重要討論
- 7企業(yè)為啥要權(quán)威的網(wǎng)站建設(shè)公司做官網(wǎng)呢?
- 8房地產(chǎn)行業(yè)微信營銷方案3
- 9網(wǎng)站制作如何設(shè)計(jì)網(wǎng)站
- 10關(guān)于編碼最佳應(yīng)用實(shí)踐
- 11網(wǎng)站建設(shè)的效果圖設(shè)計(jì)不好導(dǎo)致的一些后果
- 12利用構(gòu)造方法實(shí)現(xiàn)模塊的解耦
- 13SQL到NOSQL的思維轉(zhuǎn)變
- 14最全Facebook圖片存儲(chǔ)架構(gòu)技術(shù)
- 15企業(yè)建站要寫簡(jiǎn)潔的代碼
- 16代碼審查可以幫助提高代碼質(zhì)量
- 17魅妝社區(qū)項(xiàng)目開發(fā)文檔
- 18玩具租賃電商平臺(tái)是什么
- 19網(wǎng)站優(yōu)化企業(yè)的方法
- 20網(wǎng)站建設(shè)和營銷帶來的經(jīng)濟(jì)效益
- 21二維碼是網(wǎng)站建設(shè)推廣和發(fā)展的雙刃劍
- 22全站內(nèi)置SEO優(yōu)化機(jī)制
- 23php銜接到MySQL數(shù)據(jù)庫效勞器時(shí)三種首要的API:mysql,mysqli,pdo差異及聯(lián)絡(luò)
- 24介紹如何使用你的JavaScript
- 25Windows Azure 網(wǎng)站上運(yùn)行 CakePHP
- 26 玩具租賃商城系統(tǒng)需求2
- 27網(wǎng)站建設(shè)后,如何確定行業(yè)切入點(diǎn)進(jìn)行網(wǎng)絡(luò)營銷
- 28如何讓搜索引擎看到更真實(shí)的網(wǎng)頁
- 29企業(yè)為什么偏愛須要專業(yè)的網(wǎng)站構(gòu)造單位做官方網(wǎng)站呢?
- 30ecshop中jQuery沖突解決
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓