亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

REST架構及RESTful應用程序簡介

 更新時間:2022年03月07日 11:59:45   作者:字正腔圓  
這篇文章主要為大家介紹了REST架構及RESTful的應用程序簡介,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

REST (REpresentation State Transfer) 描述了一個架構樣式的網絡系統,指的是一組架構約束條件和原則。

RESTful 指的是滿足這些約束條件和原則的應用程序或設計。

RESTful service是一種架構模式,它的輕量級web服務,發(fā)揮HTTP協議的原生的GET,PUT,POST,DELETE。

REST 并非始終是正確的選擇。 它作為一種設計 Web 服務的方法而變得流行,這種方法對專有中間件(例如某個應用程序服務器)的依賴比基于 SOAP 和 WSDL 的方法更少。 

使用REST的關鍵是如何抽象資源,抽象得越精確,對REST的應用就越好。

REST服務關鍵原則:

1. 給一切物體一個ID

2.連接物體在一起

3.使用標準方法

4.資源多重表述

5.無狀態(tài)通信

REST能實現是一種解耦方法,讓我們實現這些架構特性:性能,伸縮性,簡化,可修改性,擴展性 

在J2EE中我們可以使用JAX-RS, Dropwizard… 
dotnet平臺可以使用Web API, WCF,servicestack,nancyfx 

Web 應用程序最重要的 REST 原則是,客戶端和服務器之間的交互在請求之間是無狀態(tài)的。從客戶端到服務器的每個請求都必須包含理解請求所必需的信息。如果服務器在請求之間的任何時間點重啟,客戶端不會得到通知。此外,無狀態(tài)請求可以由任何可用服務器回答,這十分適合云計算之類的環(huán)境。客戶端可以緩存數據以改進性能。

在服務器端,應用程序狀態(tài)和功能可以分為各種資源。資源是一個有趣的概念實體,它向客戶端公開。資源的例子有:應用程序對象、數據庫記錄、算法等等。每個資源都使用 URI (Universal Resource Identifier) 得到一個惟一的地址。所有資源都共享統一的界面,以便在客戶端和服務器之間傳輸狀態(tài)。使用的是標準的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。Hypermedia 是應用程序狀態(tài)的引擎,資源表示通過超鏈接互聯。

另一個重要的 REST 原則是分層系統,這表示組件無法了解它與之交互的中間層以外的組件。通過將系統知識限制在單個層,可以限制整個系統的復雜性,促進了底層的獨立性。

當 REST 架構的約束條件作為一個整體應用時,將生成一個可以擴展到大量客戶端的應用程序。它還降低了客戶端和服務器之間的交互延遲。統一界面簡化了整個系統架構,改進了子系統之間交互的可見性。REST 簡化了客戶端和服務器的實現。

REST 對比 RPC 

了解了什么是什么是REST,我們再看看RESTful的實現。最近,使用 RPC 樣式架構構建的基于 SOAP 的 Web 服務成為實現 SOA 最常用的方法。RPC 樣式的 Web 服務客戶端將一個裝滿數據的信封(包括方法和參數信息)通過 HTTP 發(fā)送到服務器。服務器打開信封并使用傳入參數執(zhí)行指定的方法。方法的結果打包到一個信封并作為響應發(fā)回客戶端。客戶端收到響應并打開信封。每個對象都有自己獨特的方法以及僅公開一個 URI 的 RPC 樣式 Web 服務,URI 表示單個端點。它忽略 HTTP 的大部分特性且僅支持 POST 方法。

由于輕量級以及通過 HTTP 直接傳輸數據的特性,Web 服務的 RESTful 方法已經成為最常見的替代方法??梢允褂酶鞣N語言(比如 Java 程序、Perl、Ruby、Python、PHP 和 Javascript[包括 Ajax])實現客戶端。RESTful Web 服務通常可以通過自動客戶端或代表用戶的應用程序訪問。但是,這種服務的簡便性讓用戶能夠與之直接交互,使用它們的 Web 瀏覽器構建一個 GET URL 并讀取返回的內容。

在 REST 樣式的 Web 服務中,每個資源都有一個地址。資源本身都是方法調用的目標,方法列表對所有資源都是一樣的。這些方法都是標準方法,包括 HTTP GET、POST、PUT、DELETE,還可能包括 HEADER 和 OPTIONS。

在 RPC 樣式的架構中,關注點在于方法,而在 REST 樣式的架構中,關注點在于資源 —— 將使用標準方法檢索并操作信息片段(使用表示的形式)。資源表示形式在表示形式中使用超鏈接互聯。

Leonard Richardson 和 Sam Ruby 在他們的著作 RESTful Web Services 中引入了術語 REST-RPC 混合架構。REST-RPC 混合 Web 服務不使用信封包裝方法、參數和數據,而是直接通過 HTTP 傳輸數據,這與 REST 樣式的 Web 服務是類似的。但是它不使用標準的 HTTP 方法操作資源。它在 HTTP 請求的 URI 部分存儲方法信息。好幾個知名的 Web 服務,比如 Yahoo 的 Flickr API 和 del.icio.us API 都使用這種混合架構。

RESTful的實現:

RESTful Web 服務的 Java 框架

有兩個 Java 框架可以幫助構建 RESTful Web 服務。erome Louvel 和 Dave Pawson 開發(fā)的 Restlet(見 參考資料)是輕量級的。它實現針對各種 RESTful 系統的資源、表示、連接器和媒體類型之類的概念,包括 Web 服務。在 Restlet 框架中,客戶端和服務器都是組件。組件通過連接器互相通信。該框架最重要的類是抽象類 Uniform 及其具體的子類 Restlet,該類的子類是專用類,比如 Application、Filter、Finder、Router 和 Route。這些子類能夠一起處理驗證、過濾、安全、數據轉換以及將傳入請求路由到相應資源等操作。Resource 類生成客戶端的表示形式。

JSR-311是 Sun Microsystems 的規(guī)范,可以為開發(fā) RESTful Web 服務定義一組 Java API。Jersey是對 JSR-311 的參考實現。

JSR-311 提供一組注釋,相關類和接口都可以用來將 Java 對象作為 Web 資源展示。該規(guī)范假定 HTTP 是底層網絡協議。它使用注釋提供 URI 和相應資源類之間的清晰映射,以及 HTTP 方法與 Java 對象方法之間的映射。API 支持廣泛的 HTTP 實體內容類型,包括 HTML、XML、JSON、GIF、JPG 等。它還將提供所需的插件功能,以允許使用標準方法通過應用程序添加其他類型。

構建 RESTful Web 服務的多層架構

RESTful Web 服務和動態(tài) Web 應用程序在許多方面都是類似的。有時它們提供相同或非常類似的數據和函數,盡管客戶端的種類不同。例如,在線電子商務分類網站為用戶提供一個瀏覽器界面,用于搜索、查看和訂購產品。如果還提供 Web 服務供公司、零售商甚至個人能夠自動訂購產品,它將非常有用。與大部分動態(tài) Web 應用程序一樣,Web 服務可以從多層架構的關注點分離中受益。業(yè)務邏輯和數據可以由自動客戶端和 GUI 客戶端共享。惟一的不同點在于客戶端的本質和中間層的表示層。此外,從數據訪問中分離業(yè)務邏輯可實現數據庫獨立性,并為各種類型的數據存儲提供插件能力。

圖中展示了自動化客戶端,包括 Java 和各種語言編寫的腳本,這些語言包括 Python、Perl、Ruby、PHP 或命令行工具,比如 curl。在瀏覽器中運行且作為 RESTful Web 服務消費者運行的 Ajax、Flash、JavaFX、GWT、博客和 wiki 都屬于此列,因為它們都代表用戶以自動化樣式運行。自動化 Web 服務客戶端在 Web 層向 Resource Request Handler 發(fā)送 HTTP 響應??蛻舳说臒o狀態(tài)請求在頭部包含方法信息,即 POST、GET、PUT 和 DELETE,這又將映射到 Resource Request Handler 中資源的相應操作。每個請求都包含所有必需的信息,包括 Resource Request Handler 用來處理請求的憑據。

從 Web 服務客戶端收到請求之后,Resource Request Handler 從業(yè)務邏輯層請求服務。Resource Request Handler 確定所有概念性的實體,系統將這些實體作為資源公開,并為每個資源分配一個惟一的 URI。但是,概念性的實體在該層是不存在的。它們存在于業(yè)務邏輯層??梢允褂?Jersey 或其他框架(比如 Restlet)實現 Resource Request Handler,它應該是輕量級的,將大量職責工作委托給業(yè)務層。

Ajax 和 RESTful Web 服務本質上是互為補充的。它們都可以利用大量 Web 技術和標準,比如 HTML、JavaScript、瀏覽器對象、XML/JSON 和 HTTP。當然也不需要購買、安裝或配置任何主要組件來支持 Ajax 前端和 RESTful Web 服務之間的交互。RESTful Web 服務為 Ajax 提供了非常簡單的 API 來處理服務器上資源之間的交互。

 Web 瀏覽器客戶端作為 GUI 的前端,使用表示層中的 Browser Request Handler 生成的 HTML 提供顯示功能。Browser Requester Handler 可以使用 MVC 模型(JSF、Struts 或 Spring 都是 Java 的例子)。它從瀏覽器接受請求,從業(yè)務邏輯層請求服務,生成表示并對瀏覽器做出響應。表示供用戶在瀏覽器中顯示使用。表示不僅包含內容,還包含顯示的屬性,比如 HTML 和 CSS。

業(yè)務規(guī)則可以集中到業(yè)務邏輯層,該層充當表示層和數據訪問層之間的數據交換的中間層。數據以域對象或值對象的形式提供給表示層。從業(yè)務邏輯層中解耦 Browser Request Handler 和 Resource Request Handler 有助于促進代碼重用,并能實現靈活和可擴展的架構。此外,由于將來可以使用新的 REST 和 MVC 框架,實現它們變得更加容易,無需重寫業(yè)務邏輯層。

數據訪問層提供與數據存儲層的交互,可以使用 DAO 設計模式或者對象-關系映射解決方案(如 Hibernate、OJB 或 iBATIS)實現。作為替代方案,業(yè)務層和數據訪問層中的組件可以實現為 EJB 組件,并取得 EJB 容器的支持,該容器可以為組件生命周期提供便利,管理持久性、事務和資源配置。但是,這需要一個遵從 Java EE 的應用服務器(比如 JBoss),并且可能無法處理 Tomcat。該層的作用在于針對不同的數據存儲技術,從業(yè)務邏輯中分離數據訪問代碼。數據訪問層還可以作為連接其他系統的集成點,可以成為其他 Web 服務的客戶端。

數據存儲層包括數據庫系統、LDAP 服務器、文件系統和企業(yè)信息系統(包括遺留系統、事務處理系統和企業(yè)資源規(guī)劃系統)。使用該架構,您可以開始看到 RESTful Web 服務的力量,它可以靈活地成為任何企業(yè)數據存儲的統一 API,從而向以用戶為中心的 Web 應用程序公開垂直數據,并自動化批量報告腳本。

什么是REST:

REST 描述了一個架構樣式的互聯系統(如 Web 應用程序)。REST 約束條件作為一個整體應用時,將生成一個簡單、可擴展、有效、安全、可靠的架構。由于它簡便、輕量級以及通過 HTTP 直接傳輸數據的特性,RESTful Web 服務成為基于 SOAP 服務的一個最有前途的替代方案。用于 web 服務和動態(tài) Web 應用程序的多層架構可以實現可重用性、簡單性、可擴展性和組件可響應性的清晰分離。Ajax 和 RESTful Web 服務本質上是互為補充的。開發(fā)人員可以輕松使用 Ajax 和 RESTful Web 服務一起創(chuàng)建豐富的界面。

以上就是REST架構及RESTful應用程序簡介的詳細內容,更多關于REST及RESTful的資料請關注腳本之家其它相關文章!

相關文章

  • SpringBoot如何使用mica-xss防止Xss攻擊

    SpringBoot如何使用mica-xss防止Xss攻擊

    這篇文章主要介紹了SpringBoot如何使用mica-xss防止Xss攻擊問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 詳解SpringBoot 多線程處理任務 無法@Autowired注入bean問題解決

    詳解SpringBoot 多線程處理任務 無法@Autowired注入bean問題解決

    這篇文章主要介紹了詳解SpringBoot 多線程處理任務 無法@Autowired注入bean問題解決,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • Java?中的5個代碼性能提升技巧

    Java?中的5個代碼性能提升技巧

    這篇文章主要給大家分享了Java的5個代碼性能提升的技巧,雖然大多數情況下極致優(yōu)化代碼是沒有必要的,但是作為一名技術開發(fā)者,我們還是想追求代碼的更小、更快,更強。如果哪天發(fā)現程序的運行速度不盡人意,就需要這樣的文章了,需要的朋友可以參考一下
    2021-12-12
  • Springboot詳解實現食品倉庫管理系統流程

    Springboot詳解實現食品倉庫管理系統流程

    這是一個使用Springboot開發(fā)的食品倉庫管理系統,是為商家提供商品貨物進銷存的信息化管理系統,具有一個倉庫管理系統該有的所有功能,感興趣的朋友快來看看吧
    2022-06-06
  • Mybatis是這樣防止sql注入的

    Mybatis是這樣防止sql注入的

    本文詳細講解了Mybatis是如何防止sql注入的,對大家的學習或工作具有一定的參考借鑒價值。需要的朋友可以收藏下,方便下次瀏覽觀看
    2021-12-12
  • 如何自定義Jackson序列化?@JsonSerialize

    如何自定義Jackson序列化?@JsonSerialize

    這篇文章主要介紹了如何自定義Jackson序列化?@JsonSerialize,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot 配置文件加載位置與優(yōu)先級問題詳解

    SpringBoot 配置文件加載位置與優(yōu)先級問題詳解

    這篇文章主要介紹了SpringBoot 配置文件加載位置與優(yōu)先級問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Java設計模式中橋接模式應用詳解

    Java設計模式中橋接模式應用詳解

    橋接,顧名思義,就是用來連接兩個部分,使得兩個部分可以互相通訊。橋接模式將系統的抽象部分與實現部分分離解耦,使他們可以獨立的變化。本文通過示例詳細介紹了橋接模式的原理與使用,需要的可以參考一下
    2022-11-11
  • Java 爬蟲數據異步加載如何解決

    Java 爬蟲數據異步加載如何解決

    這篇文章主要介紹了Java 爬蟲遇上數據異步加載,試試這兩種辦法!問題如何解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 源碼分析Spring?中?@Qualifier?注解基本用法

    源碼分析Spring?中?@Qualifier?注解基本用法

    這篇文章主要介紹了源碼分析Spring?中?@Qualifier?注解基本用法,在源碼分析的過程中,也?GET?到?Spring?許多新的玩法,感興趣的小伙伴趕緊去試試吧
    2023-08-08

最新評論