欢迎光临澳大利亚新华书店网 [登录 | 免费注册]

    • Web API设计原则(通过API和微服务实现价值交付)
      • 作者:(美)詹姆斯·希金博特姆|责编:吴晋瑜|译者:闫晓迪
      • 出版社:人民邮电
      • ISBN:9787115605764
      • 出版日期:2023/11/01
      • 页数:280
    • 售价:39.92
  • 内容大纲

        本书从“由外而内”的角度引入API设计的概念,强调反映客户和产品团队的需求,将需求映射到特定的、架构组织良好的API,为编写这些API选择正确的样式,并从零开始实现了一个真实的例子。本书旨在为设计新API或欲扩展现有API的人提供指导,帮助他们了解如何通过正确的设计过程来交付优秀的API,如何与设计团队、客户和其他利益相关者就具体的结果对齐思路,如何定义候选API,以及如何使API程序实现设计和管理过程的可扩展性。
        本书适合所有参与规划或构建API的读者阅读,包括但不限于架构师、开发人员、团队领导者,以及相关技术人员或业务人员。
  • 作者介绍

        詹姆斯·希金博特姆(James Higginbotham)是一名软件开发者和架构师,在开发、部署应用程序和API设计方面拥有超过25年的经验。他擅长与银行、商业保险、酒店、旅游、航空等行业的团队和企业合作,能帮助团队将业务、产品和技术策略统一到更易组合和模块化的企业平台,指导企业完成数字化转型之旅。     詹姆斯曾多次举办研讨会,热衷向跨职能团队推荐他提出的ADDR流程——通过基于产品的思维来确保业务和技术之间的一致性,以提供出色的客户体验。
  • 目录

    第一部分  Web API设计简介
      第1章  API设计原则
        1.1  Web API设计要素
          1.1.1  业务功能
          1.1.2  产品思维
          1.1.3  开发者体验
        1.2  API设计即沟通
        1.3  审查软件设计的原则
          1.3.1  模块化
          1.3.2  封装
          1.3.3  高内聚和松耦合
        1.4  基于资源的API设计
        1.5  资源不是对象或领域模型
        1.6  基于资源的API交换消息
        1.7  Web API设计原则
        1.8  小结
      第2章  协作式API设计
        2.1  为什么需要API设计流程?
        2.2  API设计流程反模式
          2.2.1  泄露抽象反模式
          2.2.2  下一个版本设计修复反模式
          2.2.3  英雄设计工作反模式
          2.2.4  未使用的API反模式
        2.3  API设计优先的方法
        2.4  API设计优先并保持敏捷
          2.4.1  重新审视敏捷宣言
          2.4.2  API设计优先的敏捷性
        2.5  对齐-定义-设计-优化流程
        2.6  DDD在API设计中的作用
        2.7  API设计涉及每一个人
        2.8  有效应用ADDR流程
        2.9  小结
    第二部分  对齐API的结果
      第3章  明确数字功能
        3.1  确保利益相关者思路对齐
        3.2  什么是数字功能?
        3.3  专注于要完成的工作
        3.4  什么是任务用例?
        3.5  任务用例的组成部分
        3.6  为API编写任务用例
          3.6.1  方法1:当问题已知时
          3.6.2  方法2:当期望的结果已知时
          3.6.3  方法3:当数字功能已确定时
        3.7  克服任务用例的挑战
          3.7.1  挑战1:任务用例过于详细
          3.7.2  挑战2:任务用例以功能为中心
          3.7.3  挑战3:任务用例需要额外的用户上下文
        3.8  收集任务用例的技巧
        3.9  现实世界中的API设计项目
        3.10  任务用例示例

        3.11  小结
      第4章  收集操作和步骤
        4.1  将任务用例扩展为操作及其对应的步骤
          4.1.1  确定每个任务用例的操作
          4.1.2  将每个操作分解为若干步骤
          4.1.3  如果需求不明确,怎么办?
        4.2  通过事件风暴实现协作式理解
        4.3  事件风暴的工作方式
          4.3.1  步骤1:明确领域事件
          4.3.2  步骤2:创建事件描述
          4.3.3  步骤3:查看描述并确定差距
          4.3.4  步骤4:扩展领域理解力
          4.3.5  步骤5:查看最终描述
        4.4  事件风暴的好处
        4.5  主持事件风暴会议
          4.5.1  准备:收集必要的材料用品
          4.5.2  分享:沟通事件风暴会议
          4.5.3  主持:进行事件风暴会议
          4.5.4  总结:收集操作和步骤
          4.5.5  跟进:会后建议
          4.5.6  定制流程
        4.6  小结
    第三部分  定义候选API
      第5章  明确API边界
        5.1  避免API边界反模式
          5.1.1  大型一体化API反模式
          5.1.2  过载API反模式
          5.1.3  辅助API反模式
        5.2  有界上下文、子域和API
        5.3  使用事件风暴探索API边界
        5.4  通过操作找到API边界
        5.5  为API命名并确定其范围
        5.6  小结
      第6章  API建模
        6.1  什么是API建模?
        6.2  API建模流程
          6.2.1  步骤1:收集API配置文件摘要
          6.2.2  步骤2:确定资源
          6.2.3  步骤3:定义API分类法
          6.2.4  步骤4:添加操作事件
          6.2.5  步骤5:扩展操作的详细信息
        6.3  用序列图验证API模型
        6.4  评估API的优先级和重用性
        6.5  小结
    第四部分  设计API
      第7章  基于REST的API设计
        7.1  什么是基于REST的API?
          7.1.1  REST是客户-服务器体系结构
          7.1.2  REST是以资源为中心的
          7.1.3  REST是基于消息的

          7.1.4  REST支持分层架构
          7.1.5  REST支持按需编码
          7.1.6  超媒体控制
          7.1.7  什么时候选择REST
        7.2  REST API设计流程
          7.2.1  步骤1:设计资源URL路径
          7.2.2  步骤2:将API操作映射到HTTP方法上
          7.2.3  步骤3:分配响应代码
          7.2.4  步骤4:记录REST API设计
          7.2.5  步骤5:分享并收集反馈
        7.3  选择一种表征格式
          7.3.1  资源序列化
          7.3.2  超媒体序列化
          7.3.3  超媒体消息传递
          7.3.4  语义超媒体消息传递
        7.4  常见的REST设计模式
          7.4.1  创建-读取-更新-删除
          7.4.2  扩展资源生命周期支持
          7.4.3  单例资源
          7.4.4  后台(队列)作业
          7.4.5  REST中的长期运行事务支持
        7.5  小结
      第8章  RPC和基于查询的API设计
        8.1  什么是基于RPC的API?
          8.1.1  gRPC
          8.1.2  使用RPC时应该考虑的因素
        8.2  RPC API设计流程
          8.2.1  步骤1:确定RPC操作
          8.2.2  步骤2:细化RPC操作
          8.2.3  步骤3:记录API设计
        8.3  什么是基于查询的API?
          8.3.1  了解OData
          8.3.2  探索GraphQL
        8.4  基于查询的API设计流程
          8.4.1  步骤1:设计资源和图结构
          8.4.2  步骤2:设计查询和突变操作
          8.4.3  步骤3:记录API设计
        8.5  小结
      第9章  用于事件和流的异步API
        9.1  API轮询的问题
        9.2  异步API创造新的可能性
        9.3  回顾消息传递的基础知识
          9.3.1  消息传递的样式和位置
          9.3.2  消息的要素
          9.3.3  了解消息代理
          9.3.4  点对点消息分发(队列)
          9.3.5  扇出消息分发(主题)
          9.3.6  消息流基础知识
        9.4  异步API样式
          9.4.1  使用Webhooks的服务器通知

          9.4.2  使用服务器发送事件的服务器推送
          9.4.3  通过WebSocket的双向通知
          9.4.4  gRPC流
          9.4.5  选择异步API样式
        9.5  设计异步API
          9.5.1  命令消息
          9.5.2  事件通知
          9.5.3  事件承载的状态转移事件
          9.5.4  事件批处理
          9.5.5  事件排序
        9.6  记录异步API
        9.7  小结
    第五部分  优化API设计
      第10章  从API到微服务
        10.1  什么是微服务?
        10.2  微服务降低协调成本
        10.3  API产品和微服务之间的区别
        10.4  权衡微服务的复杂性
          10.4.1  自助服务基础设施
          10.4.2  独立的发布周期
          10.4.3  转向单一团队的所有权
          10.4.4  组织结构和文化影响
          10.4.5  数据所有权的转移
          10.4.6  分布式数据管理和治理
          10.4.7  分布式系统的挑战
          10.4.8  弹性、故障转移和分布式事务
          10.4.9  重构和共享代码带来的挑战
        10.5  同步和异步的微服务
        10.6  微服务架构的样式
          10.6.1  直接服务通信
          10.6.2  基于API的编排
          10.6.3  基于单元的架构
        10.7  合理调整微服务的规模
        10.8  API分解为微服务
          10.8.1  步骤1:明确候选微服务
          10.8.2  步骤2:将微服务添加到API序列图中
          10.8.3  步骤3:使用微服务设计画布,以收集设计细节
          10.8.4  其他微服务设计注意事项
        10.9  过渡到微服务时的注意事项
        10.10  小结
      第11章  改善开发者体验
        11.1  创建一个API模拟实现
          11.1.1  API静态模拟
          11.1.2  API原型模拟
          11.1.3  基于README的模拟
        11.2  提供辅助库和SDK
          11.2.1  提供辅助库的选项
          11.2.2  对辅助库版本化
          11.2.3  辅助库文档和测试
        11.3  为API提供CLI

        11.4  小结
      第12章  API测试策略
        12.1  验收测试
        12.2  自动化安全测试
        12.3  运维监控
        12.4  API契约测试
        12.5  选择工具,以加快测试速度
        12.6  API测试的挑战
        12.7  让API测试不可或缺
        12.8  小结
      第13章  为API设计制作文档
        13.1  API文档的重要性
        13.2  API描述格式
          13.2.1  OpenAPI规范
          13.2.2  API Blueprint
          13.2.3  RAML
          13.2.4  JSON Schema
          13.2.5  使用ALPS的API配置文件
          13.2.6  使用APIs.json改进API发现功能
        13.3  使用代码示例扩展文档
          13.3.1  先写好入门代码示例
          13.3.2  使用工作流示例扩展文档
          13.3.3  错误案例和生产就绪的示例
        13.4  从参考文档到开发者门户网站
          13.4.1  通过开发者门户网站提高API采用率
          13.4.2  优秀的开发者门户网站的要素
        13.5  有效的API文档
          13.5.1  问题1:你的API如何解决我的问题?
          13.5.2  问题2:每个API操作都支持什么功能?
          13.5.3  问题3:我如何开始使用API?
          13.5.4  技术文档撰写人在API文档中的角色
        13.6  最小可行的门户
          13.6.1  第1个阶段:最小可行的门户
          13.6.2  第2个阶段:改进
          13.6.3  第3个阶段:专注于增长
        13.7  用来制作开发者门户网站的工具和框架
        13.8  小结
      第14章  为变更而设计
        14.1  变更对现有API的影响
          14.1.1  进行API设计差距分析
          14.1.2  确定什么最适合API消费者
          14.1.3  变更策略
          14.1.4  变更管理是建立在信任之上的
        14.2  API版本控制策略
          14.2.1  常见的非破坏性变更
          14.2.2  不兼容的变更
          14.2.3  API版本和修订版本
          14.2.4  API版本控制方法
          14.2.5  API版本的商业考虑因素
        14.3  弃用API

          14.3.1  制订弃用策略
          14.3.2  宣布弃用
        14.4  创建一个API稳定性契约
        14.5  小结
      第15章  保护API
        15.1  危害API的潜在因素
        15.2  基本的API保护实践
        15.3  API保护的组件
          15.3.1  API网关
          15.3.2  APIM层
          15.3.3  服务网格
          15.3.4  WAF
          15.3.5  内容分发网络
          15.3.6  智能API保护
        15.4  API网关拓扑结构
          15.4.1  APIM托管选项
          15.4.2  API网络流量注意事项
          15.4.3  拓扑结构1:API网关直连到API服务器
          15.4.4  拓扑结构2:API网关路由到服务
          15.4.5  拓扑结构3:多个API网关实例
        15.5  身份和访问管理
          15.5.1  密码和API密钥
          15.5.2  API令牌
          15.5.3  引用传递与值传递的API令牌
          15.5.4  OAuth 2.0和OpenID Connect
        15.6  构建内部API网关之前的注意事项
          15.6.1  原因1:API安全性是一个不断变化的目标
          15.6.2  原因2:需要的时间比预期的更长
          15.6.3  原因3:预期的表现需要时间
          15.6.4  辅助库怎么样?
        15.7  小结
      第16章  继续API设计旅程
        16.1  建立API样式指南
          16.1.1  鼓励遵守样式指南的方法
          16.1.2  选择样式指南的“基调”
          16.1.3  启动API样式指南的入门技巧
          16.1.4  支持多种API样式
        16.2  进行API设计审查
          16.2.1  从文档审查开始
          16.2.2  检查标准和设计是否对齐
          16.2.3  审查测试覆盖率
          16.2.4  添加试用支持
        16.3  鼓励重用文化
        16.4  旅程才刚刚开始
    附录A  HTTP入门知识
        A.1  HTTP概述
        A.2  统一资源定位符
        A.3  HTTP请求
        A.4  HTTP响应
        A.5  常见HTTP方法

        A.6  HTTP响应代码
        A.7  内容协商
        A.8  缓存控制
        A.9  条件性请求
        A.10  HTTP中的并发控制
        A.11  小结