契约生成技能
功能描述
提供 API 契约文档的生成和管理能力,帮助团队定义和维护服务间的接口契约,确保前后端协作的一致性。
何时使用
在以下情况调用此技能:
- 需要设计新的 API 接口时
- 需要生成 OpenAPI/Swagger 文档时
- 需要验证契约一致性时
- 需要生成客户端 SDK 时
核心功能
- 契约设计:设计 RESTful API 接口契约
- 文档生成:生成 OpenAPI/Swagger 文档
- 契约验证:验证接口实现与契约的一致性
- SDK生成:生成客户端 SDK 和类型定义
- Mock生成:生成 Mock 数据和服务器
输入参数
| 参数 |
类型 |
必填 |
说明 |
| apiName |
String |
是 |
API 名称 |
| endpoints |
List<Endpoint> |
是 |
接口端点列表 |
| format |
String |
否 |
输出格式(openapi3/swagger2) |
| version |
String |
否 |
API 版本 |
输出格式
{
"status": "SUCCESS",
"apiName": "用户服务 API",
"version": "1.0.0",
"openapiSpec": "OpenAPI YAML/JSON 规范",
"endpoints": [
{
"path": "/api/users",
"method": "GET",
"summary": "获取用户列表",
"request": {},
"response": {}
}
],
"validationResult": {
"valid": true,
"errors": []
},
"generatedFiles": ["openapi.yaml", "client-sdk.ts"]
}
契约设计流程
需求分析 → 接口设计 → 契约编写 → 契约验证 → 文档生成 → SDK生成 → Mock生成
详细步骤
- 需求分析:理解业务需求,确定接口功能
- 接口设计:设计 API 端点、参数和响应结构
- 契约编写:编写 OpenAPI 规范文档
- 契约验证:验证契约的语法和语义正确性
- 文档生成:生成可视化的 API 文档
- SDK生成:生成客户端 SDK 和类型定义
- Mock生成:生成 Mock 数据和服务器
契约质量检查清单
| 检查项 |
说明 |
状态 |
| 路径规范 |
API 路径是否符合 REST 规范 |
✅/❌ |
| HTTP方法 |
是否使用正确的 HTTP 方法 |
✅/❌ |
| 参数完整 |
请求参数是否完整定义 |
✅/❌ |
| 响应定义 |
响应结构是否完整定义 |
✅/❌ |
| 错误处理 |
是否定义错误响应 |
✅/❌ |
| 状态码 |
HTTP 状态码是否正确使用 |
✅/❌ |
| 版本管理 |
是否有版本控制策略 |
✅/❌ |
| 文档完整 |
是否有必要的描述和示例 |
✅/❌ |
最佳实践指南
OpenAPI 规范示例
openapi: 3.0.3
info:
title: 用户服务 API
description: 用户管理相关接口
version: 1.0.0
servers:
- url: https://api.example.com/v1
paths:
/users:
get:
summary: 获取用户列表
description: 获取所有用户的列表
parameters:
- name: page
in: query
description: 页码
required: false
schema:
type: integer
default: 1
responses:
'200':
description: 成功获取用户列表
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/User'
pagination:
$ref: '#/components/schemas/Pagination'
components:
schemas:
User:
type: object
properties:
id:
type: string
format: uuid
email:
type: string
format: email
name:
type: string
required:
- id
- email
REST API 设计规范
- 路径命名:使用小写字母和连字符,如
/api/user-profiles
- HTTP 方法:
- GET:获取资源
- POST:创建资源
- PUT:更新完整资源
- PATCH:更新部分资源
- DELETE:删除资源
- 状态码:
- 200:成功获取/更新
- 201:成功创建
- 204:成功删除(无内容)
- 400:请求参数错误
- 401:未认证
- 403:无权限
- 404:资源不存在
- 500:服务器错误
错误响应格式
components:
schemas:
ErrorResponse:
type: object
properties:
code:
type: string
description: 错误代码
message:
type: string
description: 错误消息
details:
type: array
items:
type: string
description: 详细错误信息
required:
- code
- message
契约管理策略
版本控制
| 策略 |
说明 |
适用场景 |
| URL 版本 |
/v1/users |
简单直接,便于调试 |
| Header 版本 |
Accept-Version: 1.0 |
保持 URL 简洁 |
| Media Type 版本 |
Accept: application/vnd.example.v1+json |
符合 REST 最佳实践 |
契约演进
- 向后兼容变更:添加新字段、新端点
- 非向后兼容变更:修改现有字段、删除字段、删除端点
- 版本升级策略:使用新版本号,保持旧版本可用
核心组件
| 组件 |
职责 |
描述 |
| ContractDesigner |
契约设计器 |
设计 API 接口契约 |
| SpecGenerator |
规范生成器 |
生成 OpenAPI 规范 |
| ContractValidator |
契约验证器 |
验证契约一致性 |
| SdkGenerator |
SDK 生成器 |
生成客户端 SDK |
| MockGenerator |
Mock 生成器 |
生成 Mock 数据 |
配置要求
环境变量
| 变量名 |
说明 |
默认值 |
| CONTRACT_FORMAT |
默认输出格式 |
openapi3 |
| API_VERSION |
默认 API 版本 |
1.0.0 |
配置文件
contract:
format: openapi3
version: 1.0.0
output:
spec: openapi.yaml
docs: docs/api
sdk:
- language: typescript
output: src/client
- language: java
output: client/java
扩展指南
添加新语言 SDK 支持
- 创建对应语言的 SDK 生成器
- 定义代码模板和映射规则
- 添加 SDK 生成配置
添加自定义验证规则
- 在验证器中添加新规则
- 定义规则的检查逻辑和错误消息
- 更新契约质量检查清单
触发条件