發表於2024-12-18
暢銷書全新優化和升級,阿裏雲資深大數據架構師/Java技術專傢撰寫,Java RESTful Web Service領域獨一著作
深刻解讀JAX-RS的標準和API設計;Jersey的使用要點和實現原理,以及基於REST的Web服務的設計思想和原則
自第1版發行後,Jersey的版本由2.9更新到瞭2.22.2,此間REST服務得到瞭更廣泛的認可和使用。與此同時,Java 8、Spring Boot和Docker的爆發式發展,使得Java領域的RESTful開發有瞭新的發展。因此,本書第2版應運而生。
第2版部分章節在原有的基礎上做瞭更新,新增瞭微服務和容器化等內容,同時刪除瞭第1版中反饋不好的章節,旨在更精煉、更準確、更全麵地闡述REST式服務,幫助讀者更好地理解和應用實踐。
本書係統、深度講解瞭如何基於Java標準規範實現REST風格的Web服務,由擁有10餘年開發經驗的阿裏雲大數據架構師撰寫,第1版上市後廣獲贊譽,成為該領域的暢銷書。第2版對全書進行瞭優化和重構,不僅根據*新的技術版本對原有過時內容進行瞭更新,而且還根據整個技術領域的發展增添瞭新的內容。除此之外,還對第1版中存在的不足進行瞭優化,使得內容更加與時具進、更加有價值。不僅深刻解讀瞭*新的JAX-RS標準和其API設計,以及Jersey的使用要點和實現原理,還係統講解瞭REST的基本理論,更重要的是從實踐角度深度講解瞭如何基於Jersey實現完整的、安全的、高性能的REST式的Web服務,書中包含大量示例代碼,實戰性強。
全書共10章,包括JAX-RS2入門、REST API設計、REST請求處理、REST服務與異步、REST客戶端、REST測試、微服務、容器化、JAX-RS調優、REST安全等內容。書中從基礎概念開始,結閤大量示例和實現代碼,將REST理論與Java實現相結閤,循序漸進地闡述Java REST式服務,為讀者提供更精煉、更準確、更全麵的參考。??
韓陸,
資深Java技術專傢,曾在用友(總部)、新浪、Avaya和Technicolor等知名企業從事研發工作。目前負責阿裏雲大數據産品的技術架構工作,實踐經驗非常豐富。
InfoQ社區編輯,利用業餘時間,翻譯瞭大量的新聞和文章,主要集中在技術架構、大數據研發、微服務、容器化、敏捷工程等領域。其中MESOS係列被InfoQ收錄為電子書——《深入淺齣Mesos》。
同時,他也是《JSF和Richfaces使用指南》的作者,《Java EE 7 Essentials》的譯者。
韓陸兄是InfoQ非常優秀的社區編輯,他撰寫和翻譯瞭很多微服務、容器相關的文章,在InfoQ網站備受歡迎。從誕生到今天,REST已經有十多年的曆史,並且經久不衰,被越來越多的技術團隊所采用。本書是國內為數不多的係統講解REST技術的書籍,推薦閱讀。
—— 郭 蕾 InfoQ主編
多年前我在開發Sonatype Nexus的時候首次接觸並熟悉瞭REST風格的Web服務,這種風格使得我們的設計簡單、規範且易測,Nexus的大部分功能都可以通過一行簡單的curl命令來驗證,單憑這一點就足以讓我喜愛上 REST風格。現如今,開發REST風格的Web服務可簡單多啦,尤其是如果你遵循JAX-RS 2.0標準並藉助Jersey優秀的實現,編寫REST風格Web服務的難度就大大降低瞭。本書全麵且生動地闡述瞭JAX-RS 2.0標準,不僅覆蓋瞭 API、請求處理、安全等核心內容,更有異步通信、調優等高級主題,無疑是學習Java REST風格Web服務的絕*參考。韓陸技術功底紮實,在寫作過程中潛心閱讀瞭大量的Jersey源碼,這也讓書的質量得到瞭進一步保障,相信本書定會助你在REST的道路上更快更穩地前行。
—— 許曉斌 《Maven實戰》作者
第2版序一
第2版序二
第1版序一
第1版序二
前言
第1章 JAX-RS2入門 1
1.1 解讀REST 1
1.1.1 一種架構風格 2
1.1.2 基本實現形式 2
1.2 解讀REST服務 3
1.2.1 REST式的Web服務 3
1.2.2 對比RPC風格 3
1.2.3 對比MVC風格 4
1.3 解讀JAX-RS標準 5
1.3.1 JAX-RS2標準 5
1.3.2 JAX-RS2的目標 5
1.3.3 非JAX-RS2的目標 6
1.3.4 解讀JAX-RS元素 7
1.4 Jersey項目概要 7
1.4.1 獲得Jersey 8
1.4.2 Jersey問答 8
1.4.3 Jersey項目管理 8
1.4.4 Jersey許可 9
1.4.5 Jersey的模塊 10
1.4.6 GlashFish項目 10
1.5 快速實現Java REST服務 12
1.5.1 第一個REST服務 13
1.5.2 第一個Servlet容器服務 17
1.6 快速瞭解Java REST服務 19
1.6.1 REST工程類型 19
1.6.2 REST應用描述 24
1.7 Java領域的其他REST實現 27
1.7.1 JAX-RS的其他實現 27
1.7.2 其他的REST實現 31
1.8 REST調試工具 33
1.8.1 命令行調試工具 33
1.8.2 基於瀏覽器的圖形化調試插件 34
1.9 本章小結 37
第2章 REST API設計 38
2.1 統一接口 38
2.1.1 GET方法 39
2.1.2 PUT方法 41
2.1.3 DELETE方法 43
2.1.4 POST方法 44
2.1.5 WebDAV擴展方法 45
2.2 資源定位 47
2.2.1 資源地址設計 48
2.2.2 @QueryParam注解 50
2.2.3 @PathParam注解 52
2.2.4 @FormParam注解 55
2.2.5 @BeanParam注解 57
2.2.6 @CookieParam注解 58
2.2.7 @Context注解 58
2.3 傳輸格式 59
2.3.1 基本類型 59
2.3.2 文件類型 60
2.3.3 InputStream類型 61
2.3.4 Reader類型 62
2.3.5 XML類型 62
2.3.6 JSON類型 66
2.4 連通性 82
2.4.1 過渡型鏈接 82
2.4.2 結構型鏈接 83
2.5 處理響應 84
2.5.1 返迴類型 85
2.5.2 處理異常 86
2.6 內容協商 89
2.6.1 @Produces注解 89
2.6.2 @Consumes注解 91
2.7 本章小結 92
第3章 REST請求處理 93
3.1 Jersey的AOP機製 93
3.2 Providers詳解 94
3.3 REST請求流程 100
3.4 REST過濾器 102
3.5 REST攔截器 109
3.6 綁定機製 111
3.7 優先級 115
3.8 本章小結 116
第4章 REST服務與異步 117
4.1 為什麼使用異步機製 117
4.2 JAX-RS2的異步機製 119
4.3 基於HTTP1.1的異步通信 124
4.4 基於HTML5的異步通信 129
4.5 本章小節 138
第5章 REST客戶端 139
5.1 客戶端接口 140
5.2 連接池 142
5.3 封裝Client 147
5.4 請求Spring Boot微服務 148
5.5 JavaScript客戶端 150
5.6 本章小結 152
第6章 REST測試 153
6.1 Jersey測試框架 153
6.2 單元測試 156
6.3 集成測試 158
6.4 日誌增強 159
6.5 本章小結 160
第7章 微服務 161
7.1 微服務技術棧 162
7.2 REST服務與Spring Boot 165
7.3 REST服務與Spring Cloud 172
7.4 本章小結 193
第8章 容器化 195
8.1 容器技術 195
8.2 REST服務與容器 201
8.3 容器化微服務 206
8.4 本章小結 220
第9章 JAX-RS調優 223
9.1 使用緩存優化負載 223
9.2 使用版本號優化服務 229
9.3 使用參數配置優化服務 232
9.4 Java虛擬機調優 234
9.5 本章小結 238
第10章 REST安全 239
10.1 身份認證 240
10.2 資源授權 244
10.3 認證與授權實現 247
10.4 JAX-RS2實現 270
10.5 REST服務與OAuth2 273
10.6 本章小結 280
參考資料 282
Foreword 第2版序一
韓陸是我在阿裏巴巴的同事,業餘時間大傢經常一起聊新的Java技術。REST對當前軟件開發非常重要,除瞭我們一直瞭解的Service API、Open API、移動端對後端的Gatway API調用(這些基本都是REST模式設計的),現在很多的DevOps操作也是通過REST API完成的,如我們瞭解的Docker和SpringBoot Actuator API都是REST風格的,另外HTTP/2的逐步采用,也為REST帶來更多的功能和性能的提升。對Java程序員來說,本書非常難得,你可以深入瞭解JAX-RS標準和Jersey框架;為瞭方便落地開發,書中更著重介紹瞭Spring Boot和Spring Cloud,這些知識目前涉及的中文圖書並不多;最後結閤Docker容器技術,給齣瞭完整基於SpringBoot REST服務應用容器部署的思路。本書的每一個技術點都可以單獨成書,用以詳細闡述,但是能夠濃縮到一本圖書中,挑戰和難度確實比較大,希望這些新的技術和思想能夠幫助到真正前進的程序員。
阿裏巴巴資深技術專傢、速賣通中間件掌門人 陳立兵(花名:雷捲)
第2版序二 Foreword
認識韓陸已有近10 年的時間,那時他在北京航空航天大學軟件學院做碩士畢業論文。他的論文寫的是麵嚮對象數據庫引擎的設計與實現,完全自主實現瞭包括文件讀寫、緩存、索引和事務、數據訪問接口等完整的麵嚮對象數據庫引擎。從那時就瞭解到他是一位技術達人,喜歡鑽研和實踐各種最新的技術。所以當聽說他齣版本書時一點都不覺得意外,他就是這樣一個熱衷於新技術的人。
早在本書第1版的時候,他就找到我希望為本書寫一篇序,那時我婉拒瞭,因為我本人對RESTful相關技術並沒有太多的接觸,不敢貿然推薦。作為一種輕量級Web服務實現架構,兩年多來RESTful架構得到瞭普遍認可和使用;越來越多的學生也開始學習相關的技術,而本書就是這方麵非常有意義的參考資料。書中首先係統地解讀瞭JAX-RS2標準,之後基於JAX-RS標準的參考實現:Jersey開發框架,係統地講解瞭如何基於該框架開展RESTful Web服務的實踐。本書實踐性很強,體係較為完整,涵蓋瞭RESTful Web服務開發各個層麵的問題;書中不僅提供瞭一些典型場景的代碼示例,還有完整的項目案例的講解,這些實踐代碼能夠有助於讀者開展具體的項目實踐。與第1版相比,第2版還新增瞭有關微服務和容器化等目前熱門應用技術實踐的內容,有助於讀者瞭解最新的技術發展方嚮。
北京航空航天大學 譚火彬
Foreword 第1版序一
——REST開發的理想與現實
REST是一種分布式應用的架構風格,也是一種大流量分布式應用的設計方法論。REST是由(構成瞭Web基礎架構的)HTTP、URI等規範的主要設計者Roy Fileding博士在其2000年的博士論文(中文版名為《架構風格與基於網絡應用軟件的架構設計》)中提齣的。到目前為止,關於REST最係統、最全麵的論述,仍然是Fielding的博士論文。
REST就是Web(World Wide Web,簡稱Web或者WWW)本身的架構風格,是設計、開發Web相關規範、Web應用、Web服務的指導原則。不符閤REST風格要求的架構和技術,很難在Web這個生態係統中得到繁榮發展。在我看來,Roy Fielding博士就是15年以來對於分布式應用架構設計理論貢獻最大的人。Fielding在HTTP規範的設計過程中,並沒有采用當時大行其道的DO(Distributed Object,分布式對象)風格,而是自齣機杼、另闢蹊徑,提齣瞭一整套新的設計方法論。Fielding的開創性工作,極大地推動瞭分布式應用設計理論的發展。
有趣的是,其實基於SOAP/WSDL的“大Web Service”(以下簡稱Web Service),幾乎是與REST同時發展起來的。雖然在Web Service中也使用瞭對象,但是Web Service其實是RPC風格的,而不是DO風格的。Web Service在最初幾年發展很快,很大原因是它解決瞭DO風格難以解決的異構係統(不同的硬件係統、不同操作係統、不同的編程語言,等等)之間互操作性的問題。
然而遺憾的是,設計Web Service協議棧的核心人員,幾乎都是來自於企業應用陣營的,尤其是來自於IBM和微軟兩傢公司的人。這些企業應用的專傢們沒有充分認識到Web基礎架構的巨大優點,甚至可以說並沒有理解HTTP協議究竟是用來做什麼的、為何要如此設計。在Web Service協議棧的設計之中,仍然有深深的企業應用痕跡。Web Service雖然宣稱能夠很好地支持互操作,然而因為協議棧的復雜性很高,在實戰中互操作性並不好(例如升級過程睏難而且復雜)。此外,Web Service僅僅將HTTP協議當做一種傳輸協議來使用,還依賴XML這種冗餘度很高的文本格式,這導緻Web Service應用性能低下。很多開發團隊寜可使用Hessian等輕量級的RPC協議,也不願意使用Web Service。在麵嚮互聯網的大流量Web應用(包括Web服務在內)這種運行環境中,Web Service在復雜性、互操作性、性能、可伸縮性等方麵的短闆更加突齣。因此,設計今日麵嚮互聯網的API,已經很少有人會考慮Web Service。這使得Web Service的使用被局限在企業應用運行環境之中,其名稱中的“Web”更像是一個笑話(除瞭都使用HTTP協議,基本上與Web沒什麼關係)。假如在2000年,設計Web Service規範的專傢們,能夠認真讀一下Fielding的博士論文,或者找HTTP、URI等Web基礎架構規範的核心設計人員深入交流一下,Web Service很可能就不是現在這個樣子瞭。不過,曆史是無法假設的。
在Java世界中,與大Web Service相對應的規範是JAX-WS。在大Web Service已經成為明日黃花之後,Java世界急需一套新的規範來取代JAX-WS。這套新的規範就是JAX-RS:Java世界開發RESTful Web Service(與RESTful API含義相同,可混用)的規範。雖然起步很晚,畢竟走上瞭正確的道路。
從Java EE 6開始,JAX-RS在Java EE版圖中,作為最重要的組成部分之一,逐步取代瞭JAX-WS的地位。在所有Java EE相關規範中,JAX-RS是優點很突齣的一個。例如,完全基於POJO、很容易做單元測試、將HTTP作為一種應用協議而不是可替代的傳輸協議(因此提高瞭性能)、優秀的IDE集成,等等。可以說,在大多數場閤,JAX-RS完全可以取代JAX-WS,作為Java Web Service開發的主要技術。JAX-RS同樣也可以完全取代Hessian等基於HTTP協議的RPC風格遠程調用協議。畢竟HTTP本身就是一種REST風格的應用協議,以REST風格來使用HTTP,纔是最高效的使用方式。
Jersey、CXF等支持JAX-RS規範的REST開發框架還支持輸齣WADL。WADL支持客戶端代碼自動生成,還可以將WADL導入到SoapUI等測試工具中,然後做自動化集成測試。從開發Java企業應用、取代JAX-WS的角度來看,JAX-RS已經做得非常棒瞭。
盡管如此,不可不提的是,JAX-RS這套規範,仍然存在著很多遺憾。需要特彆指齣的是,JAX-RS規範並不等於REST架構風格本身,REST的內涵要比JAX-RS廣泛得多。學會瞭使用JAX-RS瞭,並不等於就完全理解瞭REST,開發者仍然需要下工夫認真學習一下本源的REST究竟是什麼。
例如,JAX-RS規範對於應該如何定義一個資源,以及應該如何使用HTTP作為一個統一接口來操作資源,顯然缺乏必要的指導。有很多開發者隻是簡單地將以前JAX-WS中的一個endpoint接口轉換成一個資源接口。接口的方法太多,導緻映射到的HTTP方法不夠用,這也難不倒他們,在URI路徑中加一些字符串就能夠解決(例如,三個接口方法都映射到POST,但是其PATH不同)。這樣的開發方式非常常見,雖然開發者使用瞭JAX-RS規範,但是開發方式完全是RPC風格的,可以說與REST風格沒有任何關係。
此外,JAX-RS規範目前尚不支持HATEOAS(將超文本作為應用狀態的引擎,REST風格的核心特徵之一),從著名的Richardson成熟度模型(由《RESTful Web APIs》的作者Richardson提齣)來衡量,基於JAX-RS規範實現的RESTful API僅僅能夠達到成熟度模型的第二級,即支持資源抽象、統一接口的“CRUD式Web服務”。
可以這樣說,JAX-RS規範與真正的REST風格,覆蓋的範圍其實是不同的。JAX-RS覆蓋的是簡單基於HTTP協議(沒有使用SOAP/WSDL)的各種遠程調用需求,很多需求對於可伸縮性、鬆耦閤的要求並不高,僅僅是希望使用HTTP本身來取代大Web Service作為一種輕量級、容易測試的遠程調用協議。REST架構風格的嚴格要求,在這些場閤並不是非常重要。慵懶是人類的天性,大多數開發者寫代碼隻是為瞭解決手頭的問題,JAX-WS並不好用,JAX-RS解救瞭他們。
如果按照Roy Fielding博士的嚴格要求(REST APIs must be hyper-text driven),那麼包括JAX-RS規範在內都不能算是真正的RESTful。然而,從實戰角度,我認為革命不分先後,隻要能夠達到Richardson成熟度模型第一級,即有清晰的資源抽象, Java RESTful Web Service實戰(第2版) 下載 mobi epub pdf txt 電子書 格式
Java RESTful Web Service實戰(第2版) 下載 mobi pdf epub txt 電子書 格式 2024
Java RESTful Web Service實戰(第2版) 下載 mobi epub pdf 電子書最近正在用restful做一個項目,書裏的內容對我的幫助挺大的,內容通俗易懂
評分先買著 後麵用瞭再看
評分正版書,內容也是我急需瞭解的。
評分比彆傢的都貴
評分學軟件人手一本,睡前翻看,有益睡眠,值得購買
評分學軟件人手一本,睡前翻看,有益睡眠,值得購買
評分又囤瞭好多書,堅持學習和自我提升!
評分沒有學到什麼,理解下概念
評分學軟件人手一本,睡前翻看,有益睡眠,值得購買
Java RESTful Web Service實戰(第2版) mobi epub pdf txt 電子書 格式下載 2024