Web API的设计与开发

Web API的设计与开发 pdf epub mobi txt 电子书 下载 2025

水野贵明 著,盛荣 译
图书标签:
  • Web API
  • RESTful
  • API设计
  • API开发
  • 微服务
  • HTTP
  • JSON
  • 前后端分离
  • 软件架构
  • Web开发
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 人民邮电出版社
ISBN:9787115455338
版次:01
商品编码:12097361
包装:平装
丛书名: 图灵程序设计丛书
开本:16开
出版时间:2017-05-01
页数:212
正文语种:中文

具体描述

编辑推荐

1.Web API设计、开发与运维zui佳实践!
2.实例丰富,分析了美国各大知名网站的API设计细节。
3.内容详实,易于理解,Web API新手bi备!

API如果设计得不好,不仅会很难用,而且公开之后的运维也很困难,因此设计优美的API非常重要。本书认为“设计优美的API易于使用、便于更改、健壮性好、不怕公之于众”,并基于这一观点详细阐述了如何有效地设计、开发和运维API、如何避免容易掉入的陷阱等。目标是设计出访问URI后返回XML或JSON等数据的简洁的API,即XML over HTTP方式或JSON over HTTP方式的API。

内容简介

本书结合丰富的实例,详细讲解了Web API的设计、开发与运维相关的知识。第1章介绍Web API的概要;第2章详述端点的设计与请求的形式;第3章介绍响应数据的设计;第4章介绍如何充分利用HTTP协议规范;第5章介绍如何开发方便更改设计的Web API;第6章介绍如何开发牢固的Web API。

作者简介

水野贵明(作者)
1973年出生于东京。自由软件开发者兼技术书作译者。是JavaScript:The Good Parts、Third-Party JavaScript、 High Performance JavaScript、The Principles of Object-Oriented JavaScript等图书的日文版译者,著有《Web应用程序测试方法》(合著)。

盛荣(译者)
曾就职于爱立信、Autodesk等公司,长期从事软件、互联网技术相关领域的研发、测试等工作。热爱技术,对IT相关的新闻、历史等有浓厚兴趣。

目录

目 录

译者序 xi

前言 xv

第1章 什么是Web API 1
1.1 Web API的重要性 3
1.1.1 通过API才能使用的在线服务出现 5
1.1.2 移动应用与API 7
1.1.3 API的经济学 7
1.2 各种各样的API模式 8
1.2.1 将已发布的Web在线服务的数据或功能通过API公开 8
1.2.2 将附加在其他网页上的微件公开 9
1.2.3 构建现代Web应用 10
1.2.4 开发智能手机应用 11
1.2.5 开发社交游戏 11
1.2.6 公司内部多个系统的集成 12
1.3 应该通过API公开什么 12
1.3.1 公开API是否会带来风险 13
1.3.2 公开API能得到什么 14
1.4 设计优美的Web API的重要性 15
1.4.1 设计优美的Web API易于使用 15
1.4.2 设计优美的Web API便于更改 16
1.4.3 设计优美的Web API健壮性好 16
1.4.4 设计优美的Web API不怕公之于众 16
1.5 如何美化Web API 17
1.6 REST与Web API 18
1.7 作为目标对象的开发人员数量与API的设计思想 19
1.8 小结 20

第2章 端点的设计与请求的形式 21
2.1 设计通过API公开的功能 21
2.2 API端点的设计思想 24
2.3 HTTP方法和端点 31
2.3.1 GET方法 32
2.3.2 POST方法 33
2.3.3 PUT方法 33
2.3.4 DELETE方法 34
2.3.5 PATCH方法 35
2.4 API端点的设计 37
2.4.1 访问资源的端点设计的注意事项 41
2.4.2 注意所用的单词 43
2.4.3 不使用空格及需要编码的字符 43
2.4.4 使用连接符来连接多个单词 44
2.5 搜索与查询参数的设计 45
2.5.1 获取数据量和获取位置的查询参数 46
2.5.2 使用相对位置存在的问题 47
2.5.3 使用绝对位置来获取数据 48
2.5.4 用于过滤的参数 49
2.5.5 查询参数和路径的使用区别 52
2.6 登录与OAuth 2.0 53
2.6.1 access token的有效期和更新 58
2.6.2 其他Grant Type 59
2.7 主机名和端点的共有部分 61
2.8 SSKDs与API的设计 63
2.9 HATEOAS和REST LEVEL3 API 64
2.9.1 REST LEVEL3 API的优点 67
2.9.2 REST LEVEL3 API 67
2.10 小结 68

第3章 响应数据的设计 69
3.1 数据格式 69
3.2 使用JSONP 74
3.2.1 支持JSONP的操作方法 75
3.2.2 JSONP与错误处理 77
3.3 数据内部结构的思考方法 79
3.3.1 让用户来选择响应的内容 81
3.3.2 封装是否必要 82
3.3.3 数据是否应该扁平化 83
3.3.4 序列与格式 85
3.3.5 该如何返回序列的个数以及是否还有后续数据 88
3.4 各个数据的格式 90
3.4.1 各个数据的名称 90
3.4.2 如何描述性别数据 92
3.4.3 日期的格式 95
3.4.4 大整数与JSON 96
3.5 响应数据的设计 97
3.6 出错信息的表示 98
3.6.1 通过状态码来表示出错信息 98
3.6.2 向客户端返回详细的出错信息 99
3.6.3 如何填写详细的出错信息 101
3.6.4 发生错误时防止返回HTML 102
3.6.5 维护与状态码 102
3.6.6 需要返回意义不明确的信息时 103
3.7 小结 104

第4章 最大程度地利用HTTP协议规范 105
4.1 使用HTTP协议规范的意义 105
4.2 正确使用状态码 107
4.2.1 2字头状态码:成功 109
4.2.2 3字头状态码:添加必要的处理 111
4.2.3 当客户端请求发生问题时 113
4.2.4 5字头状态码:当服务器端发生问题时 115
4.3 缓存与HTTP协议规范 116
4.3.1 过期模型 117
4.3.2 验证模型 120
4.3.3 启发式过期 122
4.3.4 不希望实施缓存的情况 123
4.3.5 使用Vary来指定缓存单位 123
4.3.6 Cache-Control首部 125
4.4 媒体类型的指定 127
4.4.1 使用Content-Type指定媒体类型的必要性 129
4.4.2 以x-开头的媒体类型 130
4.4.3 自己定义媒体类型的情况 131
4.4.4 使用JSON或XML来定义新的数据格式的情况 132
4.4.5 媒体类型与安全性 133
4.4.6 请求数据与媒体类型 134
4.5 同源策略和跨域资源共享 136
4.5.1 CORS基本的交互 137
4.5.2 事先请求 138
4.5.3 CORS与用户认证信息 139
4.6 定义私有的HTTP首部 139
4.7 小结 141


第5章 开发方便更改设计的Web API 143
5.1 方便更改设计的重要性 143
5.1.1 公开发布的API 144
5.1.2 面向移动应用的API 145
5.1.3 Web服务中使用的API 145
5.2 通过版本信息来管理API 146
5.2.1 在URI中嵌入版本编号 147
5.2.2 如何添加版本编号 149
5.2.3 在查询字符串里加入版本信息 151
5.2.4 通过媒体类型来指定版本信息 152
5.2.5 应该采用什么方法 153
5.3 版本变更的方针 153
5.4 终止提供API 155
5.4.1 案例学习:Twitter废除旧版本的API 156
5.4.2 预先准备好停止服务时的规范 156
5.4.3 在使用条款中写明支持期限 159
5.5 编排层 160
5.6 小结 162

第6章 开发牢固的Web API 163
6.1 让Web API变得安全 163
6.2 非法获取服务器端和客户端之间的信息 165
6.2.1 用HTTPS对HTTP通信实施加密 165
6.2.2 使用HTTPS是否意味着100%安全 167
6.3 使用浏览器访问API时的问题 169
6.3.1 XSS 169
6.3.2 XSRF 174
6.3.3 JSON劫持 176
6.4 思考防范恶意访问的对策 180
6.4.1 篡改参数 181
6.4.2 请求再次发送 183
6.5 同安全相关的HTTP首部 185
6.5.1 X-Content-Type-Options 185
6.5.2 X-XSS-Protection 186
6.5.3 X-Frame-Options 186
6.5.4 Content-Security-Policy 187
6.5.5 Strict-Transport-Security 187
6.5.6 Public-Key-Pins 188
6.5.7 Set-Cookie首部和安全性 189
6.6 应对大规模访问的对策 191
6.6.1 限制每个用户的访问 192
6.6.2 限速的单位 194
6.6.3 应对超出上限值的情况 195
6.6.4 向用户告知访问限速的信息 198
6.7 小结 204

附录A 公开Web API的准备工作 205
A.1 提供API文档 205
A.2 提供沙盒API 206
A.3 API Console 207
A.4 提供SDK 209

附录B Web API确认清单 211

精彩书摘

  《Web API的设计与开发》:
  例如,假设有一个在线服务同时提供了面向智能手机客户端的API和面向PC的Web站点。用户通过注册、登录来使用该服务。该服务使用cookie来管理Web站点的会话信息。如果该服务在面向智能手机客户端的API里也同样使用cookie来进行会话信息的交互(在智能手机客户端程序里生成Cookie首部并发送),导致会话信息被浏览器共享的话,那结果会如何呢?
  在这种情况下,即使我们没有预设会通过浏览器来访问API,实际上仅仅通过浏览器发送cookie信息这一操作,也能完成API的认证。当攻击者在SCRIPT元素里附加URI时,就有可能通过恶意网站来窃取或篡改机密信息等。
  因此,当无需通过浏览器来访问API时,就要使用不同的会话管理方式,或者使用私有HTTP首部来识别客户端,或者使用下一节介绍的校验和的方式等,来防范使用SCRIPT元素从浏览器访问API导致的安全问题。
  ……
穿越数字海洋的指南:探索互联世界的奥秘 在这本穿越数字海洋的指南中,我们将踏上一段引人入胜的旅程,深入探索现代信息技术的核心——互联世界的运作机制。这本书并非仅仅关注某一项具体的技术或工具,而是旨在构建一个宏观的视角,帮助读者理解信息如何在不同设备、不同系统、不同地理位置之间高效、安全、可靠地流动,从而驱动着我们今天所生活的这个高度数字化的社会。 我们首先会从最基础的概念入手,解析“互联”一词的深层含义。它不仅仅是简单的设备连接,更是数据、服务、信息和思想的无缝交互。我们将探讨构成这个数字宇宙的基本元素:从微小的传感器到庞大的数据中心,从智能手机到云计算平台,每一个节点都在扮演着不可或缺的角色。通过深入浅出的讲解,读者将能清晰地描绘出这个复杂网络的全貌,理解不同组成部分是如何相互协作,共同构建起庞大而精密的数字生态系统。 接着,我们将聚焦于信息在网络中流动的“语言”。在这里,我们将潜入数据传输的底层,了解各种通信协议如何确保信息的准确无误地抵达目的地。我们将详细剖析TCP/IP协议族,这是互联网的基石,理解它如何将庞大的数据切分成小块(数据包),如何寻址、路由,以及如何在接收端重新组装。我们将探索TCP的可靠性机制,理解它如何通过确认和重传确保数据的完整性,以及UDP如何在速度和效率上做出权衡,适用于实时通信等场景。此外,我们还将触及更高级的网络协议,例如DNS(域名系统),它如何将我们熟悉的域名翻译成机器能够理解的IP地址,以及HTTP(超文本传输协议),它是万维网的基础,如何实现客户端与服务器之间的数据请求和响应。这本书将力求让读者在理解这些协议的同时,也能体会到设计这些协议的智慧和为了解决实际问题而付出的努力。 然后,我们将把目光投向信息流动的“高速公路”——网络基础设施。我们将深入了解不同类型的网络,从局域网(LAN)到广域网(WAN),再到蜂窝网络和无线局域网。读者将了解集线器、交换机、路由器等网络设备的原理,以及它们如何在不同网络层级上发挥作用,实现数据的转发和路由。我们将探讨光纤通信的革命性影响,理解它如何极大地提升了数据传输的速度和带宽,以及无线通信技术的演进,从2G到5G,每一次的飞跃都为互联世界的扩展提供了强大的动力。同时,我们也会讨论网络拓扑结构,例如星型、总线型、环型等,并分析它们各自的优缺点,以及在实际应用中的选择。 在信息高速流动的背后,安全始终是一个至关重要的问题。本书将投入大量篇幅来探讨互联世界的安全挑战与应对策略。我们将深入剖析常见的网络威胁,例如病毒、蠕虫、木马、拒绝服务攻击(DDoS)以及钓鱼攻击等,并分析它们的工作原理和潜在危害。随后,我们将详细介绍各种安全防护技术,包括防火墙、入侵检测/防御系统(IDS/IPS)、虚拟专用网络(VPN)以及加密技术。我们将讲解对称加密和非对称加密的原理,以及数字证书和SSL/TLS等安全协议如何确保数据在传输过程中的机密性、完整性和身份验证。此外,我们还将讨论身份认证和访问控制的重要性,以及如何通过强密码策略、多因素认证等手段来增强账户的安全性。对于数据隐私,我们将探讨其中的法律法规、伦理考量以及技术实现,帮助读者认识到在享受互联便利的同时,保护个人信息的重要性。 随着数据量的爆炸式增长,如何有效地存储、管理和利用这些数据成为了新的挑战。本书将带领读者进入数据管理的领域,了解数据库系统的演进和不同类型的数据库。我们将介绍关系型数据库(如MySQL、PostgreSQL)的结构和查询语言(SQL),以及它们在企业级应用中的广泛使用。同时,我们也将探讨NoSQL数据库(如MongoDB、Cassandra)的出现,以及它们在处理大数据、非结构化数据以及分布式系统中的优势。读者将了解数据仓库、数据湖等概念,以及它们在商业智能和数据分析中的作用。我们还会讨论数据的备份、恢复以及灾难恢复策略,确保数据的安全和可用性。 在现代互联世界中,“服务”的概念无处不在。本书将深入探讨服务的提供与消费模式。我们将从最基础的客户端-服务器模型开始,逐步过渡到更复杂的分布式服务架构。读者将了解什么是分布式系统,以及它如何通过将任务分解到多个计算节点上来提高系统的可用性和可伸缩性。我们将介绍微服务架构的理念,分析其如何通过将大型应用拆分成小型、独立的服务来提高开发效率和灵活性。同时,我们也将讨论SOA(面向服务的体系结构)等其他服务设计模式,并对比它们的异同。理解服务如何被发现、如何被调用、如何进行状态管理,是掌握互联世界运作的关键。 最后,我们将展望互联世界的未来发展趋势。我们将探讨物联网(IoT)的兴起,以及它如何将物理世界与数字世界深度融合,带来前所未有的便利和可能性。我们将讨论人工智能(AI)和机器学习(ML)在互联世界中的应用,例如智能推荐、自动化决策以及自然语言处理等。我们还将关注边缘计算的兴起,以及它如何将计算能力推向更靠近数据源的地方,从而降低延迟并提高效率。对于云计算,我们将探讨其最新的发展,例如Serverless计算、容器化技术(如Docker和Kubernetes)等,以及它们如何进一步简化和加速应用的开发与部署。这本书的结尾将鼓励读者持续学习和探索,因为互联世界的发展日新月异,保持开放的心态和不断进取的精神,才能在这场数字变革中保持领先。 总而言之,这本书旨在为读者提供一个全面、系统、深入的互联世界认知框架。它不是一本操作手册,也不是一本技术指南,而是一次思想的启迪,一次视野的拓展。通过阅读本书,您将不再仅仅是互联世界的使用者,更能成为一个理解者、一个洞察者,从而更自信、更有效地驾驭这个日新月异的数字时代,发掘其中蕴藏的无限可能。

用户评价

评分

我是一名对软件架构充满热情的研究者,因此《Web API 的设计与开发》这个标题立刻吸引了我的目光。我猜想这本书不仅仅是关于代码实现,更会深入探讨 API 在整个软件系统中的架构地位和演进。我希望书中能详细分析不同 API 风格的优劣势,例如 REST、gRPC、SOAP 等,以及它们各自适用的场景。我期待看到关于如何根据业务需求和技术约束来选择最合适的 API 架构模式的指导。书中可能还会探讨 API 生命周期管理,包括 API 的设计、开发、部署、监控、版本控制和最终的退役。我希望能看到关于如何构建一个可持续演进的 API 生态系统的策略。另外,我对于“API 经济学”或者“API 产品化”的概念也非常感兴趣。一个成功的 API 不仅是技术组件,更可以成为一种产品,为企业带来新的商业价值。我希望书中能分享如何将 API 作为产品来思考,如何进行用户研究、价值定位、以及如何制定 API 的商业模式。这本书如果能提供一个宏观的视角,帮助读者理解 API 在现代软件工程中的战略意义,那么它将超越一本技术手册,成为一本能够启发思考的著作。

评分

在阅读这本书的标题时,我首先联想到的是 API 的“可测试性”和“可观察性”。一个设计良好的 API,不仅要满足功能需求,更要易于测试,并且在运行时能够被清晰地监控。我希望这本书能详细阐述如何编写可维护的 API 测试用例,包括单元测试、集成测试,甚至端到端的 API 测试。书中可能还会介绍一些常用的测试框架和工具,以及如何构建一个健壮的自动化测试流水线。同时,关于“可观察性”,我期待书中能讲解如何集成日志记录、指标收集和分布式追踪系统。比如,如何记录详细的 API 请求和响应日志,如何收集关键性能指标(如响应时间、错误率),以及如何使用 OpenTracing 或 Prometheus 等工具来监控 API 的健康状况。这对于故障排查和性能优化至关重要。此外,我还在思考这本书是否会涉及“API 契约测试”的概念。API 契约测试确保了服务提供者和消费者之间的通信符合预期的规范,可以有效地防止由于接口不匹配而导致的集成问题。如果书中能深入讲解契约测试的实现方法和最佳实践,那么它将极大地提升我团队在微服务环境下的开发效率和稳定性。

评分

作为一名长期从事后端开发的工程师,我深知一个优秀的 API 是系统稳定运行的基石。看到《Web API 的设计与开发》这本书,我立刻被其“设计”和“开发”并重的理念所吸引。我猜想书中在“设计”层面,会着重强调“领域驱动设计”(DDD)在 API 建模中的应用。这不仅仅是简单地将数据库表映射为 API 资源,而是从业务领域出发,构建出能够准确反映业务逻辑和核心概念的 API。我期望书中能解释如何识别限界上下文,如何定义领域事件和聚合根,以及如何将这些概念转化为清晰、一致的 API 接口。在“开发”层面,我希望看到关于不同技术栈下 API 开发的最佳实践,比如使用 Spring Boot、ASPring MVC、Node.js with Express、或者 Python with Django/Flask 等框架时,如何高效地实现 API 的增删改查,如何处理数据校验和序列化,以及如何进行单元测试和集成测试。我特别关注书中是否会涉及“无服务器”(Serverless)架构下的 API 开发,例如 AWS Lambda 或 Azure Functions,以及如何在 Serverless 环境下构建可扩展、高可用的 API。如果这本书能够将理论设计与实践开发紧密结合,并提供不同技术栈的对比和选型建议,那么它对于我这样的经验开发者来说,无疑是一份宝贵的财富。

评分

这本书的封面设计简洁而专业,给人一种扎实可靠的感觉。我翻开目录,发现其中涵盖了从基础理论到实际应用的广泛内容。我对其中关于“API 网关”的部分尤其好奇。我理解 API 网关是微服务架构中的一个重要组件,它充当了所有客户端请求的入口点,负责请求路由、认证、限流、监控等多种功能。我希望书中能深入探讨如何选择和部署合适的 API 网关解决方案,比如 Kong、Apigee 或者自己搭建一个。我期待看到关于如何配置和管理 API 网关的实际案例,以及如何利用它来简化后端服务的复杂性,提高整体系统的可维护性和安全性。此外,书中关于“GraphQL”的介绍也引起了我的注意。虽然 RESTful API 已经非常普及,但 GraphQL 以其“请求什么,就获得什么”的特性,在某些场景下展现出了独特的优势。我希望书中能详细介绍 GraphQL 的核心概念,包括 Schema 定义、查询语言、Resolver 的实现,以及如何将其与现有的 RESTful API 进行集成。这本书如果能在这两个前沿领域提供深入的见解和实践指导,那么它将极大地拓宽我的技术视野,帮助我应对日益复杂的分布式系统开发挑战。

评分

这本书的标题着实吸引人——《Web API 的设计与开发》。作为一名渴望深入理解现代软件开发核心的开发者,我一直对如何构建高效、可扩展且易于维护的 API 抱有浓厚兴趣。这本书承诺提供这样的知识,这让我充满了期待。我设想它会详细阐述 RESTful 原则的精髓,不仅仅是表面的 GET、POST、PUT、DELETE,而是对其背后更深层次的哲学和最佳实践进行剖析,例如如何有效地利用 HTTP 状态码来传达信息,如何设计资源 URI 以保持清晰和可读性,以及如何进行版本控制以应对未来的变更。我希望能看到关于 API 安全性的详尽讨论,包括 OAuth 2.0、JWT 等认证和授权机制的应用,以及如何抵御常见的安全威胁。同时,我也期待书中能深入讲解 API 性能优化策略,比如缓存机制、分页处理、异步操作等,这些都是构建高性能 Web 应用的关键。此外,一个好的 API 设计不仅仅关乎技术实现,更需要考虑开发者体验,我希望书中能分享如何编写清晰的文档,如何设计易于理解的数据格式(如 JSON),以及如何提供有用的错误信息。这本书如果能涵盖这些方面,那么它绝对会成为我案头必备的参考书,帮助我从初学者蜕变为 API 设计与开发的熟练工。

评分

还没来得及看,应该还不错

评分

书没用上 大多数是概念解释

评分

对API的设计进行了详细的介绍,并提供了一些建议,挺不错的一本书

评分

部门公用书籍,总体而言包装没有损坏。

评分

很好的书,适合拿来学习基础的一些的东西,理解思想

评分

还可以,值得参考下

评分

京东快递就是快,今天就到了,一直相信京东

评分

送货很快,产品不错,性价比很高

评分

双十一前一天买的,这么快收到了。实在是赞!

相关图书

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

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有