
开放接口设计与管理规范
1. 目的
本规范旨在为公司所有对外开放的 API 提供一套统一的设计、开发、管理和维护标准。通过遵循本规范,我们致力于构建清晰、一致、安全、易用且具备良好开发者体验的 API 系统。
2. 适用范围
适用于所有对外提供服务的 HTTP(S) API,包括但不限于提供给外部合作伙伴、第三方开发者或客户端(Web/Mobile)的接口。所有相关开发、测试及运维人员均应遵守本规范。
3. 核心设计原则
- 用户友好: 接口的设计应首先考虑开发者的使用体验。命名清晰、结构一致、文档完善。
- 安全可靠: 所有接口必须经过严格的安全设计,防止数据泄露和恶意攻击。
- 稳定可扩展: 接口应保持向后兼容,并能应对未来的业务增长和变化。
- 无状态: 服务端不应保存客户端的会话状态。每一次请求都应包含所有必要的信息。
4. 请求路径设计规范
域名规范
- 建议使用独立域名,避免因服务器更换造成接口不可用。
- 首选:
https://api.xxx.com - 备选:
https://xxx.com/api
协议
- 必须使用 HTTPS 协议传输,以保证数据在传输过程中的安全。
版本控制
- 将 API 版本号放入 URL 中,这是最清晰直观的方式。
- 示例:
https://api.xxx.com/fy/v1
路径命名
- 统一使用 小写字母。
- 如果需要分隔单词,使用 连字符
-,避免使用下划线_。
5. 请求规范
请求头 (Headers)
Content-Type:application/jsontimestamp: 时间戳(防止重放攻击)nonce: 随机数(防止重放攻击)sign: 签名(身份验证与防篡改)
请求体 (Body)
- 请求的数据必须以 JSON 格式在请求体中传递。
- JSON 字段命名统一使用 小驼峰命名法 (camelCase)。
请求体示例:
1 | { |
6. 响应规范
状态码
使用标准的 HTTP 状态码来反映请求结果。
200: 成功4xx: 客户端错误 (400 参数错误, 401 未认证, 403 无权限, 404 未找到, 429 请求过多等)5xx: 服务器内部错误 (500 系统错误, 503 服务不可用等)
响应体
- 统一返回 JSON 格式。
- 统一响应结构,方便调用方统一处理。
成功响应示例:
1 | { |
错误响应示例:
1 | { |
7. 文档和错误码
文档
- 所有 API 必须提供实时、准确的文档。
- 文档必须包含:接口描述、请求路径、方法、所有参数(路径、查询、请求头、请求体)的详细说明、所有可能的响应(包括成功和失败)示例。
错误码
- 制定统一的业务错误码体系,方便客户端根据错误码进行相应的逻辑处理。
- 错误码应具备一定可读性。
8. 安全规范
认证
- 接口需要经过认证,认证信息通过请求头或者请求体传递。
授权
- 服务端必须在认证通过后,进一步校验当前用户是否有权操作目标资源。
- 无权访问时,必须返回非法请求状态码。
签名机制
为防止中间人攻击和参数篡改,接口必须引入请求签名机制。(按照双方约定进行签名,以下是目前信息处理平台的实现方式)
- 获取凭证: 获得
AppKey和pid,由服务端提供。 - 拼接字符串: 将所有必填参数(包括
timestamp,nonce)按 key 字母排序,拼接成key=value&key=value...格式的字符串。 - 生成签名: 使用 MD5 算法,对拼接后的字符串进行加密,生成签名
sign。 - 发送请求: 请求时需要带
timestamp、nonce、sign及其他必填参数一同发送到服务端。(AppKey不参与传输,仅用于后端校验或作为盐值,具体视约定而定)。 - 服务端校验: 服务端以完全相同的方式生成签名,进行校验。
9. 接口变更与版本升级规范
变更基本原则
向后兼容性是接口变更的最高原则。任何变更都不能导致现有调用方在未修改代码的情况下调用失败。
非破坏性变更
以下变更是允许在当前版本中进行的,因为它们保持了向后兼容:
- 新增 API 接口。
- 在请求体中新增可选参数。
- 在响应体中新增字段。(不能改变原有结构)
- 修改文档、注释或错误消息文本。
破坏性变更
严禁在现有版本中直接进行任何破坏性变更。以下行为被定义为破坏性变更:
- 更改或删除现有的接口地址 (URI)。
- 删除请求参数或响应字段。
- 重命名请求参数或响应字段。
- 将现有可选参数变为必选。
- 更改现有参数或响应字段的数据类型。
- 更改现有参数的枚举值。
- 更改认证或授权机制。
版本升级策略
当业务发展必须进行破坏性变更时,必须通过发布新版本 API 的方式进行。
- 提升版本号: 在 URI 中增加主版本号,例如从
/fy/v1升级到/fy/v2。 - 并行运行: 新旧两个版本的 API 必须在一段时间内并行运行,为调用方提供充足的迁移时间。
- 提供迁移文档: 必须提供清晰的迁移指南,详细说明新旧版本的差异以及如何从旧版本升级到新版本。
接口弃用策略
当新版本发布后,旧版本应进入弃用流程。
- 标记弃用: 在 API 文档中明确标记旧版本为“已弃用”。
- 设定废止日期: 设定并公布一个明确的“废止日期”,在此日期之后,旧版本接口将停止服务。
- 过渡期: 从“标记弃用”到“废止日期”之间应至少保留 3个月 的过渡期,对于核心重要接口,应适当延长。
10. 沟通与通知
所有接口的变更、版本升级或弃用计划,都必须提前通知所有已知的调用方。
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自码海拾贝






