# API 驱动开发
# API First 原则
API First 原则即优先设计和完成 API,随后再安排其他事项,其主要优势如下:
# 优先业务逻辑
进行 API 设计前必须清楚梳理业务逻辑,并明确功能边界和数据交互格式。
微服务架构要求服务单元功能内聚、职责单一,此类要求均可在 API 设计阶段作出清晰界定。高度抽象的 API 有利于刻画功能框架,从而避免过早陷入繁复的设计之中。
相比功能设计文档,规范的 API 文档显得更为清晰、更便于维护。API 定义的结构化数据格式可直接用于后续的功能实现及场景测试。
# 提升敏捷协同
参与项目研发的前后端工程师、测试工程师均可基于 API 开展各自的工作。
- 前端工程师:使用 API 完成界面呈现和交互。
- 后端工程师:实现 API 功能并完成自测。
- 测试工程师:基于 API 完成接口测试场景设计。
一致的 API 可解偶依赖,有效协同各方工作,从而实现并行开发。
微服务开发同样提倡 API First 原则,优先完成不同模块的 API 设计,确定功能边界并避免循环依赖,随后开发工程师再完成各自负责模块的功能逻辑实现。
# API 开发测试
# API 提供者
API 提供者的工作流程主要包括:设计 > 发布 > 自测 > 缺陷修复。
# API 设计
平台基于 OpenAPI 3.0 标准协议,并通过可视化界面支持 API 编辑,同时实践 RESTful 规范,从而轻松完成 API 设计。
平台遵循配置即代码的 GitOps 理念,在可视化编辑的同时,API 文档将自动保存至 Git 仓库,便于后续跟踪修改,并支持快速回滚。
# API 发布并自测
完成 API 开发后,您可将 API 直接 发布至集市,随后创建 访问管理 并进行 API 测试。
# API 调用方
API 调用方的工作流程主要包括:查阅 > 调用 > 联调 > 缺陷修复。
调用方可进入 DevOps 平台 > API 管理 > API 集市 查看已发布的 API 文档,点击 申请调用 获取客户端的 ClientID 和 ClientSecret,随后完成调用端编码。
若联调测试过程中 API 调用报错,需注意 API 定义是否发生变化,可通过 Git History 进行排查 。
# API 自动化测试
测试工程师通过 API 完成接口测试的流程主要包括:查阅 > 设计接口测试场景 > 执行测试 > 提交缺陷。
设计测试用例场景时可直接搜索 API 市场,获取接口定义。
# 运行期管理
完成开发测试进入生产运行后,建议重新发布一份 API 文档并绑定生产环境的应用实例,随后授权客户端进行访问。
提示
后续迭代将持续优化 API 文档与多个运行环境的关联关系。
# API 版本演进
# 语义化版本
平台采用 语义化版本 (opens new window) 机制以实现 API 文档的版本管理。版本号格式形如 major.minor.patch。
- major 为主版本号,其变化通常表示发生了重大或不向下兼容的变更。
- minor 为次版本号,其变化通常表示增加了新特性,仍向下兼容。
- patch 为修订号,其变化通常表示对现有版本作较小的、局部的修正。
版本化管理的优势在于将 API 文档的增长与应用程序的增长一视同仁,可从 API 角度审视应用程序的功能。版本号用于解释服务更迭间的兼容性和依赖关系,无论提供者抑或调用方,均可根据版本号语义清晰了解服务的变更情况。
# 代码兼容性
major.minor.patch 版本中 minor 和 patch 版本提升时,所有的 API 必须保持向下兼容。
若 major 版本提升,需确保不兼容的 API 调用方已完成适配。建议通过新增 API 实现新功能,保留旧 API 并通知调用方切换至新接口,直至所有调用方均已完成切换后再行下线。
# API 安全
Open API
通过 API 网关对公网开放,并在网关上对调用者设置 认证通过+授权许可 进行管控。
推荐使用 ClientID 和 ClientSecret 签名方式,并配置每秒请求次数的调用量限制,以保证安全稳定。
提示
您也可以进入DevOps 平台 > API 管理 > 访问管理 完成调用方管理。
域名管控
后端服务需避免配置域名直接对公网开放。测试 API 可使用内部地址而非公网域名。