发表于2024-11-23
畅销书全新优化和升级,阿里云资深大数据架构师/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 电子书这个好这个好这个好这个好这个好这个好这个好这个
评分看见搞活动就买了好多书,之后慢慢看!!!!
评分挺好的 就是挺贵的 不过是正品
评分不错 东京自营就是放心 excellent .good wonderful.fantastic!
评分不建议买。讲的内容太宽泛。不深入。不实用。
评分活动的时候买的,看起来还不错
评分一般般吧
评分不错是正品!
评分看了一部分,觉得还可以
Java RESTful Web Service实战(第2版) mobi epub pdf txt 电子书 格式下载 2024