RESTful Web APIs中文版

RESTful Web APIs中文版 pdf epub mobi txt 电子书 下载 2025

[美] Leonard Richardson,[美] Mike Amundsen 著,赵震一,李哲 译
图书标签:
  • RESTful
  • API
  • Web
  • 设计
  • REST
  • 架构
  • HTTP
  • 网络编程
  • 软件架构
  • Web服务
  • Leonard Richardson
  • Sam Ruby
  • 中文版
想要找书就要到 图书大百科
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121231155
版次:1
商品编码:11479919
品牌:Broadview
包装:平装
开本:16开
出版时间:2014-06-01
用纸:胶版纸
页数:404
正文语种:中文

具体描述

编辑推荐

  

  近年来,REST的流行导致了各种“RESTful”API的巨大增长,但是这些API却错失了很多架构的好处。通过这本实用指南,你将可以学习到如何设计可用的,并能随着时间不断进化的REST API。通过专注于跨多种领域的解决方案,本书向你展示了该如何使用那些为世界上成功的分布式计算系统——万维网而设计的工具,从而来 创建强大且安全的应用。你将探索REST背后的概念,学习多种可用于创建基于超媒体API的策略,并在本书一步步的指导下整合你所学到的所有内容,从而去设计RESTful的web API。

  √ 审查了包括集合模式和纯超媒体在内的API设计策略。

  √ 理解如何将超媒体与表述整合进一个一致的API。

  √ 探索XMDP和ALPS profile格式是如何帮助你应对web API的“语义挑战”的。

  √ 学习近二十多种标准化的超媒体数据格式。

  √ 应用在API实现中使用HTTP的实践。

  √ 使用JSON-LD标准及其他Linked Data方法来创建web API。

  √ 理解在嵌入式系统使用REST的CoAP协议。

内容简介

  《RESTful Web APIs中文版》是针对RESTful API的实用指南,通过展示各种用来创建高可用应用的强大工具,讲解REST的深层原理,以及介绍基于超媒体API的策略,使读者得以在将上述内容融会贯通后,设计出让客户高度满意的RESTful的web API。本书极具专业性与前瞻性,既代表了API领域的前沿趋势,也覆盖了API领域的重要实践。

作者简介

  Leonard Richardson, 《Ruby Cookbook》 (O’Reilly)一书的作者,曾 创建了包括Beautiful Soup在内 的多个开源代码库。Mike Amundsen 是包括《Building Hypermedia APIs with HTML5 and Node》(O’Reilly) 在内的十几本为人所称道的技术图书的作者。

目录


前言
第1章 网上冲浪
场景1:广告牌
资源和表述
可寻址性
场景2:主页
短会话(Short Session)
自描述消息(self-descriptive message)
场景3:链接
标准方法
场景4:表单和重定向
应用状态(Application State)
资源状态(resource state)
连通性(connectedness)
与众不同的Web
Web API落后于Web
语义挑战
第2章 一个简单的API
第3章 资源和表述
第4章 超媒体
第5章 领域特定设计
第6章 集合模式(Collection Pattern)
第7章 纯-超媒体设计
第8章 Profile
第9章 API设计流程
第10章 超媒体动物园
第11章 API中的HTTP
第12章 资源描述和Linked Data
第13章 CoAP:嵌入式系统的REST
附录
词汇表

精彩书摘

  “大多数软件系统在创建时都有一个隐含的假设:整个系统处在一个实体的控制之下;或者至少参与到系统中的所有实体都向着一个共同目标行动,而不是有着各自不同的目标。当系统在互联网上开放地运行时,无法安全地满足这样的假设。”
  ——RoyFielding
  ArchitecturalStylesandtheDesignofNetwork-basedSoftwareArchitectures“Discordia信徒应该一直使用官方的Discordian文档编号系统。”
  ——MalaclypsetheYounger和LordOmarKhayyamRavenhurst
  我要向你展示一种可以更好地进行分布式计算的方式,它使用了有史以来最成功的分布式系统,即万维网的根本思想。如果你已经决定(或者你的经理已经决定)需要为你的公司发布一个webAPI的话,我希望你能够读一下这本书。不管在你计划中的是一个公共的API,还是一个纯粹的内部API,抑或是一个只有受信伙伴可以访问的API——它们都可以从REST的哲学中受益。
  如果你想学习如何编写API客户端的话,那么这本书对你来说并不是必要的。这是因为大多数现有的API设计都基于一些有着数年之久的假设,而这些假设正是我想要摧毁的。
  大部分今天的API都有着一个很大的问题:一旦部署,它们将无法改变。有一些大名鼎鼎的API会在一次部署后多年保持静态不变,即使围绕它们的行业发生着改变,这是因为要改变它们非常困难。
  但是RESTful架构是为掌控变化而设计的。万维网由数百万的网站组成,运行在数千种不同的服务器实现之上,并且经历着周期性的重新设计。这些网站被数十亿的用户访问着,而这些用户使用着几十种硬件平台之上的数百种不同的客户端实现。你的部署在一开始可能看上去不会如此混乱,但是当你的应用越发接近web的规模时,你将会看到越发相似的混乱景象。
  要改变一个非常简单的系统通常都是很容易的。在规模很小时,一个RESTful系统比一个一键式的解决方案(push-buttonsolution)需要花费更多预支的设计成本。但是当你的API逐渐成熟并开始发生变化时,你将会真正需要一些像REST这样的方式来应对变化。
  y一个商业上成功的API将保持连续多年的可用。一些API拥有数百甚至是数以千计的用户。就算问题域只是偶然地发生变化,对客户端带来的累积效应将是非常大的。
  y有一些API一直都在发生变化,新的数据元素和业务规则不断地被添加进来。
  y在某些API中,每个客户端都可以通过改变工作流来使其适合自己的需求。即使API自身从不变化,每个客户端对API的经历(鉴于经历不同的工作流)将会不同。
  y编写API客户端的人通常不会和编写服务器的人隶属于同一个团队。所有向公共开放的API都属于这一类。
  如果你不知道外部的客户端是哪种类型的话,你需要在做出变化时格外小心——否则你就需要一个能够在发生变化时保证不会破坏所有客户端的设计。如果你为你的API复制了现有的设计,你将很可能只是在重复以往犯过的错误。不幸的是,大部分的改进发生在幕后,它们大都还处于实验阶段并需要经过漫长的标准流程。我将会在本书中讨论到数十种特定的技术,包括很多还仍然处于开发之中。但是我的主要目标是要教会你REST的基本原则。通过对这些内容的学习,你将可以对任何实验成果以及那些通过流程审核的标准善加利用。
  这里有两个我想在本书中尝试解决的具体问题:重复的工作以及对超媒体的逃避。让我们来看看它们。
  重复的工作
  现今已发布的API都是根据托管它们的公司的名字进行命名的。我们谈论着“TwitterAPI”、“FacebookAPI”和“Google+API”。这三套API做着相似的事情。它们都拥一些用户账户的概念,(在其他方面)它们都允许用户向自己的账户发布文本信息。但是每个API都具有完全不同的设计,学习一个API并不能帮助你学习下一个。当然,Twitter、Facebook和Google都是互相竞争的大型公司,它们并不想让你很容易地就学会它们竞争对手的API。但是小公司和非营利性组织也在做着相同的事。它们重新设计着自己的API,就好比从来没有人在这方面有过相似的想法一样,但是这干扰了它们想让人们实际使用它们的API的目标。
  让我来向你展示一个例子吧。网站ProgrammableWeb(http://www。programmableweb。com/)拥有着一个超过8000个API的目录。当我正在编写此书之时,它已经收录了57种微博API——这些API的主要用途是向用户的账户发布文本信息注2。很不错,有57家公司在这个领域发布了API,但是我们真的需要57种不同的设计吗?我们在这里讨论并不是那些复杂难懂的业务,例如保险政策或法规守则,我们讨论的只是向用户账号发布少量的文本信息。你想成为那个设计第58种微博API的人吗?
  最显而易见的解决方案便是创建一个微博API的标准。但是我们已经有了一个可以很好工作的标准:Atom发布协议(AtomPublishingProtocol)。它发布于2005年,然而几乎没有人使用它。有一些关于API的原因,使得每个人都想从头开始设计他们自己的API,即使从业务的角度来看这并没有什么意义。
  我不认为凭我一个人的力量就能结束这种无用功,但是我确实认为可以将问题分解成若干有意义的小块,然后提供一些方式来让新的API可以复用已经完成的这些工作。
  超媒体很难
  早在2007年,LeonardRichardson和SamRuby编写了本书的前身,RESTfulWebServices(O‘Reilly)。那本书同样也尝试于解决两个大的问题。其中一个问题已经被解决,而另一个却没有任何进展。
  第一个问题是:在2007年,在API设计的多个阵营中,REST学派正在与使用基于SOAP等重量级技术的对手学派进行对峙,他们忙于应对来自对方的对REST学派合理性的质疑。RESTfulWebServices一书的出现打破了这种对峙的僵局,有效地为RESTful设计原则防御了来自SOAP学派的进攻。
  很好,这场对峙已经结束,而REST赢得了胜利。SOAPAPI仍在被使用着,不过仅限于那些起初支持SOAP学派的大公司。几乎所有面向公众的API口头上都说自己遵守了RESTful原则。
  这又将我们带到了第二个问题:REST并不只是一个技术词汇——它同样还是一个营销术语。在很长一段时间里,REST成了一个口号,它象征着任何站在SOAP学派对立面的势力。任何没有使用SOAP的API都将自己标榜为REST,即使它的设计与REST毫无关系甚至是违背了REST的基本原则。这样做是错误的,是令人困惑的,它给REST这个技术词汇带来了一个坏名声。
  这种情况自2007年便有了较大的改善。每当我审视那些新的API,我看到了开发者们的工作,可以看得出,这些开发人员是理解那些我将在本书前几章中解释的概念的。今天大部分举着REST大旗的开发者都理解资源和表述,理解如何使用URL来为资源命名,以及如何正确地使用HTTP方法。因此本书的前三章将不需要做过多的事情,只需让新的开发者加速赶上我们即可。
  但是在REST中,还有一个方面令大部分的开发人员仍然无法理解,即:超媒体。我们都理解Web环境中的超媒体。它只是作为代表链接的一个华丽的词汇。网页经过互相的链接,随即产生了万维网,万维网便是由超媒体驱动的。但是,貌似只要在webAPI中涉及到超媒体,我们便有了心理障碍。这是一个大问题,因为超媒体是一项能让webAPI优雅处理变化的特性。
  从RESTfulWebAPIs一书的第4章开始,我的首要目标便是教会你超媒体的工作原理。如果你从未听到过这个词,我将会结合其他重要的REST概念向你讲授该词。如果你听到过超媒体,但是这个概念吓到了你,我将会尽我所能来为你建立勇气。如果你无法将超媒体装进你的大脑,我将会以各种我所能想到的方式来向你展示超媒体,直到你记住并理解它。
  RESTfulWebServices一书也涉及到了超媒体,但是这并不是该书的重心所在。就算跳过该书的超媒体部分也可以照样设计出一个功能性的API。相比之下,RESTfulWebAPIs则是一本真正有关超媒体的书。
  我之所以这样做是因为超媒体是REST最重要的一个方面,也是最不被理解的一个方面。在我们完全理解超媒体之前,REST将会被继续视为一个营销术语,而不是对处理分布式计算复杂性的一次认真的尝试。
  ……

前言/序言


《深入解析现代Web服务构建:从原理到实战》 内容简介 在信息爆炸的时代,高效、灵活、可扩展的Web服务是支撑现代数字世界的基石。本书将带领读者深入探索构建和优化现代Web服务的核心理念与实践方法,重点聚焦于如何设计和实现健壮、易于维护且高性能的网络应用程序接口(APIs)。我们不局限于任何特定的技术栈或框架,而是致力于传达一种通用的、面向未来的设计哲学,帮助开发者构建真正具有生命力的Web服务。 本书分为四个主要部分: 第一部分:Web服务的设计哲学与基础 在这一部分,我们将从宏观角度审视Web服务的本质,探讨其在分布式系统中的关键作用,以及不同设计范式的演进。我们将深入剖析“服务”的概念,理解其封装的业务逻辑、数据管理以及对外暴露的接口。 Web服务的演进与趋势: 回顾从早期的RPC(远程过程调用)到SOAP(简单对象访问协议),再到REST(Representational State Transfer)等重要里程碑,理解不同设计模式的优劣以及它们如何适应不断变化的技术需求。我们将重点讨论RESTful架构风格的出现及其对现代Web服务设计的深远影响,解释其背后的核心原则,如客户端-服务器(Client-Server)、无状态(Stateless)、可缓存(Cacheable)、统一接口(Uniform Interface)、分层系统(Layered System)和按需代码(Code-On-Demand)。 理解HTTP协议的精髓: HTTP(超文本传输协议)是现代Web服务通信的基石。我们将详细解读HTTP协议的各个组成部分,包括请求方法(GET, POST, PUT, DELETE, PATCH等)的语义和适用场景,状态码(2xx, 3xx, 4xx, 5xx)的含义及其在错误处理和资源状态反馈中的作用,请求头(Headers)和响应头(Headers)中关键信息的解析,以及HTTP消息体的结构。理解HTTP协议的精髓是设计和实现高效Web服务的前提。 资源导向的设计思维: 资源(Resource)是RESTful架构的核心概念。我们将详细阐述如何识别和定义Web服务中的资源,理解资源与URI(统一资源标识符)之间的关系,以及如何通过URI来准确地定位和操作这些资源。我们将讨论命名资源的最佳实践,避免使用动词,并强调URI的清晰性和可读性。 统一接口的设计原则: 统一接口是RESTful架构风格的关键约束之一,它简化了客户端与服务器之间的交互,并提高了系统的可扩展性和可维护性。我们将深入探讨统一接口的四个子约束: 资源标识: 通过URI唯一标识资源。 通过表示操作资源: 客户端通过资源表示(如JSON, XML)来描述资源的状态,并使用HTTP方法来执行操作。 自描述消息: 消息应包含足够的信息,以便接收者理解如何处理。 超媒体驱动的状态转换(HATEOAS): 资源响应中包含指向相关操作或资源的链接,使客户端能够动态地发现API。我们将重点讲解HATEOAS的实际应用和其带来的好处,尽管在实践中可能存在一些挑战。 第二部分:Web服务的设计模式与最佳实践 在掌握了基础理论之后,本部分将转向更具体的Web服务设计模式和工程实践,帮助开发者构建高质量、可维护的API。 数据格式的选择与应用: 深入分析JSON(JavaScript Object Notation)和XML(Extensible Markup Language)这两种最常用的数据交换格式。我们将比较它们的优劣,讨论各自的适用场景,并提供在API设计中如何选择和使用它们的最佳实践,包括数据结构的组织、命名约定、数据类型的使用等。 请求与响应的设计: 精细化地设计API的请求和响应结构,确保其清晰、一致且易于理解。我们将讨论如何有效地使用HTTP方法来表达操作意图,如何组织请求参数(路径参数、查询参数、请求体),以及如何设计结构清晰、信息丰富的响应体,包括成功响应、错误响应的格式以及如何利用HTTP状态码进行精确反馈。 版本控制策略: 随着服务的迭代和演进,版本控制变得至关重要。我们将探讨不同的API版本控制策略,如URI版本控制、请求头版本控制、Accept头版本控制等,分析它们的优缺点,并提供选择和实施版本控制的最佳实践,以确保向后兼容性和平滑迁移。 安全性考量: Web服务的安全性不容忽视。我们将深入探讨API的常见安全威胁,如SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)、不安全的直接对象引用(IDOR)等。我们将介绍各种安全防护机制,包括身份验证(Authentication)和授权(Authorization)策略(如OAuth 2.0, JWT),HTTPS的使用,以及输入验证的重要性。 错误处理与日志记录: 构建健壮的Web服务需要完善的错误处理机制。我们将学习如何设计统一、有用的错误响应格式,如何在API层面捕获和处理异常,并强调详细、有意义的日志记录对于调试和监控服务的重要性。 分页、过滤与排序: 对于包含大量数据的资源,分页、过滤和排序是必不可少的API设计特性。我们将介绍实现这些功能的常用模式和技巧,如何通过查询参数有效地控制数据的检索范围,以及如何优化这些操作以提高性能。 第三部分:Web服务实现与性能优化 本部分将聚焦于实际的Web服务实现,以及如何通过各种手段提升服务的性能和可靠性。 框架与工具的介绍: 尽管本书不局限于特定技术,但我们会介绍一些流行的Web框架(如Java的Spring Boot, Python的Flask/Django, Node.js的Express, Go的Gin等)如何支持RESTful API的设计和实现。我们将讨论选择合适的框架时需要考虑的因素,以及它们提供的常用功能和开发模式。 异步处理与并发: 在高并发场景下,如何高效处理请求是Web服务性能的关键。我们将探讨异步编程模型,如回调、Promise、async/await,以及多线程、多进程等并发处理技术,并分析它们在Web服务中的应用和权衡。 缓存策略详解: 缓存是提升Web服务性能最有效的方法之一。我们将深入探讨HTTP缓存机制(如ETag, Last-Modified, Cache-Control),以及如何在服务器端实现数据缓存,如内存缓存、分布式缓存(Redis, Memcached)等。我们将分析不同缓存策略的适用场景和注意事项。 消息队列的应用: 在需要解耦服务、处理异步任务或应对突发流量时,消息队列(如RabbitMQ, Kafka)发挥着重要作用。我们将介绍消息队列的基本概念、工作原理,以及它们如何被集成到Web服务架构中,以提高系统的可靠性和响应速度。 性能监控与调优: 如何有效地监控Web服务的性能,识别瓶颈,并进行优化是持续改进的关键。我们将介绍常用的性能指标(如响应时间、吞吐量、错误率),以及一些性能分析工具和方法。 第四部分:Web服务测试、部署与未来展望 本部分将涵盖Web服务的生命周期中的最后几个重要环节,并对未来的发展趋势进行展望。 API测试策略: 确保API的质量和稳定性需要全面的测试。我们将讨论单元测试、集成测试、端到端测试等不同层级的测试方法,以及自动化测试工具在API测试中的应用。 持续集成与持续部署(CI/CD): CI/CD流程是现代软件开发不可或缺的一部分。我们将探讨如何构建高效的CI/CD流水线,自动化构建、测试和部署Web服务,以提高开发效率和部署频率。 容器化与微服务架构: 容器化技术(如Docker)和微服务架构是构建可扩展、易于管理的大型Web服务的关键。我们将简要介绍这些概念,并讨论它们如何与RESTful Web服务设计相结合。 API网关的作用: 在微服务架构中,API网关承担着重要的角色,如请求路由、身份验证、负载均衡、限流等。我们将探讨API网关的设计和功能。 未来Web服务的发展方向: 展望Web服务未来的发展趋势,如GraphQL、gRPC等新兴技术,以及Serverless架构对Web服务设计的影响,帮助读者保持对技术前沿的敏锐度。 本书的目标是为开发者提供一个全面、深入的指导,帮助他们理解和掌握现代Web服务的构建方法,无论您是初学者还是有经验的开发者,都能从中获得宝贵的知识和实用的技巧。通过本书的学习,您将能够设计、开发、部署和维护出色的Web服务,为您的应用程序和业务提供坚实的技术支撑。

用户评价

评分

随着微服务架构的兴起,API的重要性不言而喻。我手上的这本《RESTful Web APIs中文版》,据说在理解微服务通信方面有独到的见解。我之前接触过一些微服务相关的项目,在服务之间的接口设计上,确实遇到了不少挑战。RESTful API作为一种广泛应用的通信方式,如何在其基础上实现微服务之间的解耦、高效通信,是我非常关心的问题。我希望这本书能够深入讲解如何利用RESTful原则来设计和构建微服务之间的API,例如如何处理服务间的依赖、如何进行API的发现和路由,以及如何在保持服务独立性的同时,实现信息的有效传递。我尤其关注书中对于API网关、服务注册与发现等与微服务架构紧密相关的概念的阐述,希望能从中获得指导,设计出更具伸缩性和弹性的微服务系统。

评分

说实话,我当初选择这本书,很大程度上是因为它在社区中的口碑。不少开发者朋友都在推荐,都说这本书是理解RESTful Web APIs的“圣经”。我本人是做后端开发的,日常工作中和API打交道非常频繁,但总感觉在API设计上还不够“地道”,有时候会走一些弯路。我希望能在这本书里找到一些“武林秘籍”,学习如何设计出真正符合RESTful理念的API,而不是仅仅停留在CRUD的层面。我希望它能深入讲解如何利用HTTP协议的特性,比如幂等性、无状态性等,来构建健壮的服务。另外,对于API文档的编写,我也非常看重,因为一个好的API不仅要功能强大,还要易于使用者理解和调用。书中对API文档生成工具的介绍,或者是有关于如何编写清晰、完整的API文档的指导,对我来说都非常有价值。我希望通过阅读这本书,能够让我对API设计的理解从“知其然”提升到“知其所以然”,能够独立思考并设计出更具鲁棒性和可维护性的API。

评分

我对Web开发一直是充满热情,并且乐于学习新的技术和理念。RESTful Web APIs这个概念,我之前接触过一些,但总感觉碎片化,不够系统。我希望通过阅读这本书,能够真正建立起对RESTful API的全面认知。我特别期待书中能够详细介绍RESTful架构的约束条件,例如客户端-服务器、无状态、可缓存、分层系统、统一接口等,并且能够结合实际案例,讲解这些约束条件是如何在API设计中体现出来的。此外,对于API的版本控制、安全性(如OAuth 2.0等)以及如何利用HAL、JSON:API等超媒体驱动的API风格,我也希望能有深入的了解。我希望这本书能够为我打开一扇新的大门,让我能够独立地设计和实现具有高可用性、可扩展性和良好用户体验的Web API。

评分

我是一名前端开发者,虽然不直接编写后端API,但对API的设计和理解程度直接影响着我的开发效率和体验。过去,我经常遇到一些API设计不够合理的情况,导致前端需要编写大量的适配代码,或者在集成第三方服务时遇到很多不必要的麻烦。我希望这本书能够从更宏观的角度,让我理解RESTful API的设计哲学,明白为什么会有这样的设计模式,以及它带来的好处。我特别希望书中能有关于如何正确使用HTTP方法(GET, POST, PUT, DELETE等)的案例,以及如何利用HTTP状态码清晰地表达API的执行结果。此外,对于API的错误处理机制,我也希望能有更深入的探讨,如何在API层面就提供足够的信息,帮助前端快速定位和解决问题。我期待这本书能够帮助我站在更高的维度去审视API,从而更好地与后端团队协作,共同构建出更高效、更愉悦的开发流程。

评分

这本书的封面设计就吸引了我,那种简洁而又充满力量的设计感,让我对它所要传达的内容充满了好奇。拿到手里,沉甸甸的,厚实的感觉预示着里面内容的丰富和扎实。我一直对构建高效、可扩展的Web服务抱有浓厚的兴趣,而RESTful Web APIs这个概念,在我看来,是现代Web开发不可或缺的一环。我曾经尝试过阅读一些零散的文章和教程,但总觉得缺乏系统性,像是零散的拼图,无法构成完整的画面。我希望这本书能够提供一个清晰的框架,从根本上理清RESTful架构的精髓,无论是它的设计原则、核心概念,还是在实际开发中的应用。我特别关注如何设计出优雅、易于理解和维护的API,以及如何处理好HTTP的各种方法、状态码和头部信息。此外,对于API的版本管理、安全性以及性能优化等方面,我也希望能在这本书中找到深入的解答和实用的建议。我非常期待能够通过这本书,将我对RESTful API的理解提升到一个新的高度,并将其应用到我未来的项目中,构建出更出色的Web应用。

评分

朋友介绍的,还不错,物有所值,希望能做得更好

评分

非常不错的专业书籍与参考资料!

评分

还没看,应该讲的不错,这是潮流

评分

发货速度很快,质量也很好!!努力学习!!

评分

还没看,纸质还行,内容对我来说偏难点。

评分

给公司买的 买了很多次了 不错

评分

书的包装和质量都很好,是正品。

评分

没看完,好像没那么好

评分

针对性购买,非常实用,公司员工很受益

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.teaonline.club All Rights Reserved. 图书大百科 版权所有