文章編號:10777時間:2024-09-29人氣:
在構建供人使用的網站之余,你是否考慮過創造能夠為機器服務的平臺?Web不僅僅是一個龐大的應用程序集合,它實際上是一個計算的分布式平臺,驅動著Webservices、聚合應用和Ajax的發展。 然而,現代Webservices技術似乎偏離了Web最初的簡潔性,不再如Web般直觀,其優勢正在逐漸流失。
《RESTful Web Services (影印版)》旨在重塑Web在Webservices中的核心地位。 它揭示了如何利用日常所熟悉的工具訪問可編程的Web,REST——這個架構風格是關鍵。 本書涵蓋了以下內容:
作為第一本將REST設計哲學應用于實際Webservices的書籍,《RESTful Web Services (影印版)》不僅提供了最佳實踐的指南,還提供了將理念轉化為實際代碼的技術支持。 通過與Web合作而非對抗,你將學習如何利用可編程Web的潛力。 本書將全面教授你所需的一切知識。
Restlet Client Sign的翻譯為:Restlet客戶端簽名。 Restlet是一個用于構建RESTful Web服務的開源框架,它提供了一組API和工具,幫助開發者更加便捷地創建和管理RESTful資源。 而“Client Sign”則可能指的是在使用Restlet框架進行客戶端通信時,對請求進行簽名的一種機制。 這種簽名通常用于身份驗證、授權或數據完整性驗證等目的。 在Restlet框架中,客戶端簽名可能涉及以下幾個步驟:1. 生成簽名:在發送請求之前,客戶端使用某種算法(如HMAC、RSA等)和密鑰對請求進行簽名。 簽名算法和密鑰的選擇應根據具體的安全需求和標準來確定。 2. 附加簽名:簽名生成后,客戶端將其附加到請求中。 這通常是通過在請求頭或請求參數中添加特定的字段來實現的。 3. 驗證簽名:服務器端接收到請求后,會提取簽名并使用相同的算法和密鑰進行驗證。 如果簽名驗證通過,則表明請求來自可信的客戶端,并且請求內容在傳輸過程中沒有被篡改。 通過使用客戶端簽名機制,Restlet框架可以提供更高級別的安全性,確保只有授權的客戶端能夠訪問和修改資源。 此外,它還可以防止中間人攻擊和數據篡改等安全風險。 總之,Restlet Client Sign是指在使用Restlet框架進行RESTful通信時,對客戶端請求進行簽名的一種機制。 這種機制有助于提高通信的安全性和可靠性,確保只有授權的客戶端能夠訪問和修改資源。
REST (REpresentation State Transfer) 描述了一個架構樣式的網絡系統,比如 web 應用程序。 它首次出現在 2000 年 Roy Fielding 的博士論文中,他是 HTTP 規范的主要編寫者之一。 REST 指的是一組架構約束條件和原則。 滿足這些約束條件和原則的應用程序或設計就是 RESTful。 Web 應用程序最重要的 REST 原則是,客戶端和服務器之間的交互在請求之間是無狀態的。 從客戶端到服務器的每個請求都必須包含理解請求所必需的信息。 如果服務器在請求之間的任何時間點重啟,客戶端不會得到通知。 此外,無狀態請求可以由任何可用服務器回答,這十分適合云計算之類的環境。 客戶端可以緩存數據以改進性能。 在服務器端,應用程序狀態和功能可以分為各種資源。 資源是一個有趣的概念實體,它向客戶端公開。 資源的例子有:應用程序對象、數據庫記錄、算法等等。 每個資源都使用 URI (Universal Resource Identifier) 得到一個惟一的地址。 所有資源都共享統一的界面,以便在客戶端和服務器之間傳輸狀態。 使用的是標準的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。 Hypermedia 是應用程序狀態的引擎,資源表示通過超鏈接互聯。 另一個重要的 REST 原則是分層系統,這表示組件無法了解它與之交互的中間層以外的組件。 通過將系統知識限制在單個層,可以限制整個系統的復雜性,促進了底層的獨立性。 當REST 架構的約束條件作為一個整體應用時,將生成一個可以擴展到大量客戶端的應用程序。 它還降低了客戶端和服務器之間的交互延遲。 統一界面簡化了整個系統架構,改進了子系統之間交互的可見性。 REST 簡化了客戶端和服務器的實現。 RESTful的實現:RESTful Web 服務與 RPC 樣式的 Web 服務了解了什么是什么是REST,我們再看看RESTful的實現。 最近,使用 RPC 樣式架構構建的基于 SOAP 的 Web 服務成為實現 SOA 最常用的方法。 RPC 樣式的 Web 服務客戶端將一個裝滿數據的信封(包括方法和參數信息)通過 HTTP 發送到服務器。 服務器打開信封并使用傳入參數執行指定的方法。 方法的結果打包到一個信封并作為響應發回客戶端。 客戶端收到響應并打開信封。 每個對象都有自己獨特的方法以及僅公開一個 URI 的 RPC 樣式 Web 服務,URI 表示單個端點。 它忽略 HTTP 的大部分特性且僅支持 POST 方法。 由于輕量級以及通過 HTTP 直接傳輸數據的特性,Web 服務的 RESTful 方法已經成為最常見的替代方法。 可以使用各種語言(比如 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 和 API 都使用這種混合架構。 RESTful的實現:RESTful Web 服務的 Java 框架有兩個 Java 框架可以幫助構建 RESTful Web 服務。 erome Louvel 和 Dave Pawson 開發的 Restlet(見 參考資料)是輕量級的。 它實現針對各種 RESTful 系統的資源、表示、連接器和媒體類型之類的概念,包括 Web 服務。 在 Restlet 框架中,客戶端和服務器都是組件。 組件通過連接器互相通信。 該框架最重要的類是抽象類 Uniform 及其具體的子類 Restlet,該類的子類是專用類,比如 Application、Filter、Finder、Router 和 Route。 這些子類能夠一起處理驗證、過濾、安全、數據轉換以及將傳入請求路由到相應資源等操作。 Resource 類生成客戶端的表示形式。 JSR-311是 Sun Microsystems 的規范,可以為開發 RESTful Web 服務定義一組 Java API。 Jersey是對 JSR-311 的參考實現。 JSR-311 提供一組注釋,相關類和接口都可以用來將 Java 對象作為 Web 資源展示。 該規范假定 HTTP 是底層網絡協議。 它使用注釋提供 URI 和相應資源類之間的清晰映射,以及 HTTP 方法與 Java 對象方法之間的映射。 API 支持廣泛的 HTTP 實體內容類型,包括 HTML、XML、JSON、GIF、JPG 等。 它還將提供所需的插件功能,以允許使用標準方法通過應用程序添加其他類型。 RESTful的實現:構建 RESTful Web 服務的多層架構RESTful Web 服務和動態 Web 應用程序在許多方面都是類似的。 有時它們提供相同或非常類似的數據和函數,盡管客戶端的種類不同。 例如,在線電子商務分類網站為用戶提供一個瀏覽器界面,用于搜索、查看和訂購產品。 如果還提供 Web 服務供公司、零售商甚至個人能夠自動訂購產品,它將非常有用。 與大部分動態 Web 應用程序一樣,Web 服務可以從多層架構的關注點分離中受益。 業務邏輯和數據可以由自動客戶端和 GUI 客戶端共享。 惟一的不同點在于客戶端的本質和中間層的表示層。 此外,從數據訪問中分離業務邏輯可實現數據庫獨立性,并為各種類型的數據存儲提供插件能力。 圖1 展示了自動化客戶端,包括 Java 和各種語言編寫的腳本,這些語言包括 Python、Perl、Ruby、PHP 或命令行工具,比如 curl。 在瀏覽器中運行且作為 RESTful Web 服務消費者運行的 Ajax、Flash、JavaFX、GWT、博客和 wiki 都屬于此列,因為它們都代表用戶以自動化樣式運行。 自動化 Web 服務客戶端在 Web 層向 Resource Request Handler 發送 HTTP 響應。 客戶端的無狀態請求在頭部包含方法信息,即 POST、GET、PUT 和 DELETE,這又將映射到 Resource Request Handler 中資源的相應操作。 每個請求都包含所有必需的信息,包括 Resource Request Handler 用來處理請求的憑據。 從Web 服務客戶端收到請求之后,Resource Request Handler 從業務邏輯層請求服務。 Resource Request Handler 確定所有概念性的實體,系統將這些實體作為資源公開,并為每個資源分配一個惟一的 URI。 但是,概念性的實體在該層是不存在的。 它們存在于業務邏輯層。 可以使用 Jersey 或其他框架(比如 Restlet)實現 Resource Request Handler,它應該是輕量級的,將大量職責工作委托給業務層。 Ajax 和 RESTful Web 服務本質上是互為補充的。 它們都可以利用大量 Web 技術和標準,比如 HTML、JavaScript、瀏覽器對象、XML/JSON 和 HTTP。 當然也不需要購買、安裝或配置任何主要組件來支持 Ajax 前端和 RESTful Web 服務之間的交互。 RESTful Web 服務為 Ajax 提供了非常簡單的 API 來處理服務器上資源之間的交互。 圖1 中的 Web 瀏覽器客戶端作為 GUI 的前端,使用表示層中的 Browser Request Handler 生成的 HTML 提供顯示功能。 Browser Requester Handler 可以使用 MVC 模型(JSF、Struts 或 Spring 都是 Java 的例子)。 它從瀏覽器接受請求,從業務邏輯層請求服務,生成表示并對瀏覽器做出響應。 表示供用戶在瀏覽器中顯示使用。 表示不僅包含內容,還包含顯示的屬性,比如 HTML 和 CSS。 業務規則可以集中到業務邏輯層,該層充當表示層和數據訪問層之間的數據交換的中間層。 數據以域對象或值對象的形式提供給表示層。 從業務邏輯層中解耦 Browser Request Handler 和 Resource Request Handler 有助于促進代碼重用,并能實現靈活和可擴展的架構。 此外,由于將來可以使用新的 REST 和 MVC 框架,實現它們變得更加容易,無需重寫業務邏輯層。 數據訪問層提供與數據存儲層的交互,可以使用 DAO 設計模式或者對象-關系映射解決方案(如 Hibernate、OJB 或 iBATIS)實現。 作為替代方案,業務層和數據訪問層中的組件可以實現為 EJB 組件,并取得 EJB 容器的支持,該容器可以為組件生命周期提供便利,管理持久性、事務和資源配置。 但是,這需要一個遵從 Java EE 的應用服務器(比如 JBoss),并且可能無法處理 Tomcat。 該層的作用在于針對不同的數據存儲技術,從業務邏輯中分離數據訪問代碼。 數據訪問層還可以作為連接其他系統的集成點,可以成為其他 Web 服務的客戶端。 數據存儲層包括數據庫系統、LDAP 服務器、文件系統和企業信息系統(包括遺留系統、事務處理系統和企業資源規劃系統)。 使用該架構,您可以開始看到 RESTful Web 服務的力量,它可以靈活地成為任何企業數據存儲的統一 API,從而向以用戶為中心的 Web 應用程序公開垂直數據,并自動化批量報告腳本。 什么是REST:結束語REST 描述了一個架構樣式的互聯系統(如 Web 應用程序)。 REST 約束條件作為一個整體應用時,將生成一個簡單、可擴展、有效、安全、可靠的架構。 由于它簡便、輕量級以及通過 HTTP 直接傳輸數據的特性,RESTful Web 服務成為基于 SOAP 服務的一個最有前途的替代方案。 用于 web 服務和動態 Web 應用程序的多層架構可以實現可重用性、簡單性、可擴展性和組件可響應性的清晰分離。 Ajax 和 RESTful Web 服務本質上是互為補充的。
通過REST風格體系架構,請求和響應都是基于資源表示的傳輸來構建的。
資源是通過全局ID來標識的,這些ID一般使用的是一個統一資源標識符(URI)。
客戶端應用使用HTTP方法(如,GET、POST、PUT或DELETE)來操作一個或多個資源。
通常,GET是用于獲取或列出一個或多個資源,POST用于創建,PUT用于更新或替換,而DELETE則用于刪除資源。
例如,GET http //host/context/employees/將獲取ID為的員工的表示。
這個響應表示可以是包含詳細的員工信息的XML或ATOM,或者是具有更好UI的JSP/HTML頁面。
您看到哪種表示方式取決于服務器端實現和您的客戶端請求的MIME類型。
RESTful Web Service是一個使用HTTP和REST原理實現的Web Service。
通常,一個RESTful Web Service將定義基本資源URI、它所支持的表示/響應MIME,以及它所支持的操作。
本文將介紹如何使用Spring創建Java實現的服務器端RESTful Web Services。
這個例子將使用瀏覽器、curl和Firefox插件RESTClient作為發出請求的客戶端。
本文假定您是熟悉REST基本知識的。
Spring 3的REST支持在Spring框架支持REST之前,人們會使用其他幾種實現技術來創建Java RESTful Web Services,如Restlet、RestEasy和Jersey。
Jersey是其中最值得注意的,它是JAX-RS(JSR 311)的參考實現。
Spring是一個得到廣泛應用的Java EE框架,它在版本3以后就增加了RESTful Web Services開發的支持。
雖然,對REST的支持并不是JAX-RS的一種實現,但是它具有比標準定義更多的特性。
REST支持被無縫整合到Spring的MVC層,它可以很容易應用到使用Spring構建的應用中。
Spring REST支持的主要特性包括:注釋,如@RequestMapping 和 @PathVariable,支持資源標識和URL映射ContentNegotiatingViewResolver支持為不同的MIME/內容類型使用不同的表示方式使用相似的編程模型無縫地整合到原始的 MVC 層創建一個示例RESTful Web Service本節中的例子將演示Spring 3環境的創建過程,并創建一個可以部署到Tomcat中的“Hello World”應用。
然后我們再完成一個更復雜的應用來了解Spring 3 REST支持的重要概念,如多種MIME類型表示支持和JAXB支持。
另外,本文還使用一些代碼片斷來幫助理解這些概念。
Hello World:使用Spring 3 REST支持要創建這個例子所使用的開發環境,您需要:IDE:Eclipse IDE for JEE (v3.4+)Java SE5 以上Web 容器:Apache Tomcat 6.0(Jetty或其他容器也可)Spring 3框架(v3.0.3是本文編寫時的最新版本)其他程序庫:JAXB 2、JSTL、commons-logging在 Eclipse 中創建一個Web應用,然后設置Tomcat 6作為它的運行環境。
然后,您需要設置文件來激活Spring WebApplicationContext。
這個例子將Spring bean配置分成兩個文件 包含與MVC/REST有關的配置,包含服務級別的配置(如數據源 beans)。
清單 1 顯示了中的Spring配置的部分。
清單 1. 在中激活Spring WebApplicationContext以下是引用片段:
探索輕量級 RESTful 服務,本文通過一個Java實現的簡單示例來展開。 在近二十年的Web服務歷程中,RESTful架構逐漸成為主流,如eBay和Facebook。 本文將通過一個名為“小說”服務的代碼示例,展示如何使用基礎的HttpServlet來構建和部署RESTful服務,無需依賴如Jersey或Restlet這樣的框架。 “小說”服務僅依賴于三個核心類:Novel、NovelsServlet和一些實用工具函數。 通過Tomcat作為Web服務器,部署過程相當簡單,如在README文件中指導的那樣。 通過WAR文件部署,訪問格式如,并支持熱部署。 示例代碼中,Novel類代表小說實體,實現了Comparable接口進行排序。 Novels類提供了存儲、讀取和編碼小說的功能,包括從文本文件初始化數據。 NovelsServlet是HttpServlet的子類,重載了CRUD操作,處理GET、POST、PUT和DELETE請求。 HTTP請求格式遵循標準,如GET請求可以查詢小說列表,POST用于創建,PUT用于更新,DELETE用于刪除。 通過配置文件,可以配置服務的路由和安全設置。 總的來說,HttpServlet作為Java Web服務的核心,為輕量級RESTful服務提供了基礎。 盡管JAX-RS和Restlet等框架提供了更高級的功能,但簡單的Servlet代碼結構清晰,易于理解和維護,是初學者入門RESTful服務的良好起點。
內容聲明:
1、本站收錄的內容來源于大數據收集,版權歸原網站所有!
2、本站收錄的內容若侵害到您的利益,請聯系我們進行刪除處理!
3、本站不接受違法信息,如您發現違法內容,請聯系我們進行舉報處理!
4、本文地址:http://m.sycxjdsbhs.com/article/81c47fa30bbe185cf8b0.html,復制請保留版權鏈接!
讓textarea自由呼吸,告別換行難題,輸入內容,提交提交成功!constform=document.getElementById,form,consttextarea=document.getElementById,textarea,constmessage=document.querySelector,.message,f...。
互聯網資訊 2024-09-26 01:28:46
什么是C類,C類是駕駛證的一種,允許駕駛員駕駛重型機動車,例如卡車、公共汽車和拖車,C類主要考什么,C類駕駛證考試主要考核以下內容,交通規則和法規駕駛技能機械知識交通規則和法規交通規則和法規部分主要考核駕駛員對交通規則的了解,包括,交通標志和信號道路通行規則法律責任和處罰駕駛技能駕駛技能部分主要考核駕駛員的操作能力,包括,...。
互聯網資訊 2024-09-25 17:51:42
引言AFXMessageBox是一個MFC中常用的類,用于向用戶顯示消息框,它提供了一系列用于顯示信息、警告和錯誤消息的函數,通過正確使用afxMessageBox,可以顯著增強用戶體驗并提高應用程序的可用性,顯示信息消息使用afxMessageBox顯示信息消息時,請遵循以下最佳實踐,使用標題欄的圖標和文本明確傳達消息的類型,例如,...。
最新資訊 2024-09-25 06:19:20
在當今快速發展的數字世界中,為客戶提供卓越的體驗至關重要,聊天機器人已成為企業提供即時支持和改善客戶體驗的寶貴工具,什么是聊天機器人,<,于更復雜的問題,個性化體驗,聊天機器人可以收集和分析客戶數據,以提供個性化的支持和推薦,這有助于建立更牢固的客戶關系,客戶滿意度提高,通過提供即時支持和問題快速解決,聊天機器人可以顯著提高客戶滿...。
最新資訊 2024-09-16 01:07:17
在快速發展的技術領域,持續學習對于保持編程技術的更新至關重要,編程語言、框架和技術不斷更新換代,因此養成持續學習的習慣對于軟件開發人員來說至關重要,持續學習的好處保持技能相關性,持續學習有助于確保您的技能與當前行業需求保持相關性,從而提高您的就業能力和競爭力,解決新問題,學習新的技術和方法可以為您提供解決新問題和克服編程挑戰所需的新視...。
最新資訊 2024-09-15 20:41:48
https,picocss.com,9.TachyonsTachyons是一個功能強大的框架,它使用實用程序類來構建網站,它提供了一個廣泛的類集合,可以輕松創建各種類型的組件,下載,https,tachyons.io,10.TailwindCSSTailwindCSS是一個先進的框架,它使用實用程序類和JIT編譯來構建網站,它...。
技術教程 2024-09-13 17:22:13
在當今快速發展的科技時代,編程已成為一項必備技能,為了幫助你提升編程能力,我們整理了這份全面的電子書資源庫,其中包含各種編程語言、概念和技術的書籍,無論你是初學者還是經驗豐富的程序員,你都能在這里找到有用的資源,趕快探索吧,開啟你的編程之旅!初學者入門Python編程基礎一本面向初學者的Python編程指南,涵蓋了基礎語法、數據類型和...。
本站公告 2024-09-10 20:52:52
什么是織夢之家,織夢之家是一個基于WordPress建立的網站建設平臺,它提供了一系列針對中國用戶的工具和服務,讓用戶能夠輕松快捷地創建自己的網站或博客,織夢之家擁有強大的功能和一個易于使用的界面,即使是沒有任何網站建設經驗的用戶也能輕松上手,織夢之家的主要功能主題庫,織夢之家提供了一個豐富的主題庫,用戶可以從中選擇適合自己網站或博客...。
最新資訊 2024-09-09 21:37:59
本文檔提供了獲取Java程序,JavaRuntimeEnvironment,JRE或JavaDevelopmentKit,JDK,的分步指南,適用于各種平臺和版本,適用平臺WindowsmacOSLinux獲取方式官方網站從Oracle官方網站下載Java程序是獲取最新版本的首選方法,OracleJava網站軟件包管理器對于Linux...。
最新資訊 2024-09-09 13:32:41
在Python中,sort函數是一個強大且多用途的工具,可用于對列表進行排序,通過利用sort函數,你可以優化你的代碼,提高列表處理效率,sort函數簡介sort函數對可變序列,例如列表,就地排序,默認情況下,該函數使用Timsort算法,該算法是一種歸并排序和插入排序的混合,根據列表的大小和元素分布提供最佳性能,要使用sort函數,...。
互聯網資訊 2024-09-09 00:23:19
在數字化時代,在線考試系統已經成為教育和培訓領域必不可少的工具,它不僅可以簡化考試流程,縮短考試時間,還可以提高考試的安全性、公平性和效率,對于許多教育機構和企業來說,采購商用在線考試系統可能是一筆不小的開支,為了解決這一問題,許多開源在線考試系統應運而生,這些系統通常免費提供,功能強大,可以滿足各種考試需求,本文將為您介紹一些優秀的...。
技術教程 2024-09-08 10:40:46
新手上路選擇一門編程語言,例如Python或Java,尋找在線教程或課程,開始學習基礎知識,建立基礎項目,如簡單游戲或計算器,參加編程挑戰賽或解決代碼難題,與其他初學者交流,分享經驗和尋求幫助,初級程序員精通一門編程語言的語法和概念,理解數據結構和算法,能夠編寫簡單的程序并解決實際問題,參與團隊項目,與他人合作,繼續不斷學習,探索新技...。
本站公告 2024-09-07 15:47:50