用途
phase-4-api 是 bkit-claude-code 流水线中的第四阶段,目标是实现能够存储和检索数据的后端 API,并通过结构化日志而非测试脚本来验证其行为。触发场景包括 API 设计、REST API、后端、端点(endpoint)等。
主要能力
本阶段包含三项核心工作:
- API 设计:定义端点、请求与响应。
- API 实现:编写实际的后端代码。
- Zero Script QA:基于日志的验证方式。
交付物
docs/02-design/
└── api-spec.md # API specification
src/api/ # API implementation
├── routes/
├── controllers/
└── services/
docs/03-analysis/
└── api-qa.md # QA results
使用方式
PDCA 应用
- Plan:定义所需 API 列表
- Design:设计端点、请求与响应
- Do:实现 API
- Check:用 Zero Script QA 验证
- Act:修复缺陷并进入第五阶段
按级别应用
| 级别 | 应用方式 |
|---|---|
| Starter | 跳过此阶段(无 API) |
| Dynamic | 使用 bkend.ai BaaS(见下文) |
| Enterprise | 直接实现 API |
Dynamic 级别:bkend.ai BaaS API 实现
步骤 1:MCP 设置
claude mcp add bkend --transport http https://api.bkend.ai/mcp
步骤 2:表设计(通过 MCP 工具)
自然语言请求:“Create a users table with name(required), email(required, unique), age fields” -> 自动调用 MCP backend_table_create
步骤 3:服务 API 集成
| 方法 | 端点 | 说明 |
|---|---|---|
| GET | /v1/data/{table} | 列表(过滤、排序、分页) |
| POST | /v1/data/{table} | 创建数据 |
| GET | /v1/data/{table}/{id} | 获取单条 |
| PATCH | /v1/data/{table}/{id} | 部分更新 |
| DELETE | /v1/data/{table}/{id} | 删除 |
必需请求头:x-project-id、x-environment、Authorization
步骤 4:认证实现
参考 MCP 工具 3_howto_implement_auth 与 6_code_examples_auth
步骤 5:Zero Script QA
- 在浏览器 DevTools 的 Network 标签中检查 bkend REST API 调用日志
- 通过响应码/响应体验证 API 行为
什么是 Zero Script QA?
不编写测试脚本,而是用结构化调试日志进行验证:
[API] POST /api/users
[INPUT] { "email": "test@test.com", "name": "Test" }
[PROCESS] Email duplicate check → Passed
[PROCESS] Password hash → Complete
[PROCESS] DB save → Success
[OUTPUT] { "id": 1, "email": "test@test.com" }
[RESULT] ✅ Success
优势:
- 节省编写测试代码的时间
- 用肉眼观察实际行为
- 便于调试
RESTful API 原则
什么是 REST?
REpresentational State Transfer——一种用于设计 Web 服务的架构风格。
六项核心原则
| 原则 | 说明 | 示例 |
|---|---|---|
| 1. 客户端-服务器 | 客户端与服务器关注点分离 | UI ↔ 数据存储分离 |
| 2. 无状态 | 每个请求独立,服务器不保存客户端状态 | 每个请求都携带认证令牌 |
| 3. 可缓存 | 响应必须标明是否可缓存 | Cache-Control 头 |
| 4. 统一接口 | 通过一致的接口交互 | 详见下文 |
| 5. 分层系统 | 允许分层系统架构 | 负载均衡器、代理 |
| 6. 按需代码 | (可选)服务器可向客户端发送代码 | JavaScript 下发 |
统一接口细节
RESTful API 的核心是统一接口。
1. 基于资源的 URL
✅ Good (nouns, plural)
GET /users # User list
GET /users/123 # Specific user
POST /users # Create user
PUT /users/123 # Update user
DELETE /users/123 # Delete user
❌ Bad (using verbs)
GET /getUsers
POST /createUser
POST /deleteUser/123
2. HTTP 方法含义
| 方法 | 用途 | 幂等 | 安全 |
|---|---|---|---|
| GET | 读取 | ✅ | ✅ |
| POST | 创建 | ❌ | ❌ |
| PUT | 全量更新 | ✅ | ❌ |
| PATCH | 部分更新 | ❌ | ❌ |
| DELETE | 删除 | ✅ | ❌ |
幂等:多次请求结果相同;安全:不改变服务器状态。
3. HTTP 状态码
2xx Success
├── 200 OK # Success (read, update)
├── 201 Created # Creation success
└── 204 No Content # Success but no response body (delete)
4xx Client Error
├── 400 Bad Request # Invalid request (validation failure)
├── 401 Unauthorized # Authentication required
├── 403 Forbidden # No permission
├── 404 Not Found # Resource not found
└── 409 Conflict # Conflict (duplicate, etc.)
5xx Server Error
├── 500 Internal Error # Internal server error
└── 503 Service Unavailable # Service unavailable
4. 一致的响应格式
// Success response
{
"data": {
"id": 123,
"email": "user@example.com",
"name": "John Doe"
},
"meta": {
"timestamp": "2026-01-08T10:00:00Z"
}
}
// Error response
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Email format is invalid.",
"details": [
{ "field": "email", "message": "Please enter a valid email" }
]
}
}
// List response (pagination)
{
"data": [...],
"pagination": {
"page": 1,
"limit": 20,
"total": 100,
"totalPages": 5
}
}
URL 设计规则
-
使用小写 ✅ /users/123/orders ❌ /Users/123/Orders
-
使用连字符(-),避免下划线(_) ✅ /user-profiles ❌ /user_profiles
-
表达层级关系 ✅ /users/123/orders/456
-
通过查询参数过滤 ✅ /users?status=active&sort=created_at ❌ /users/active/sort/created_at
-
版本管理 ✅ /api/v1/users ✅ Header: Accept: application/vnd.api+json;version=1
API 文档工具
| 工具 | 特性 |
|---|---|
| OpenAPI (Swagger) | 行业标准,自动生成文档 |
| Postman | 测试 + 文档 |
| Insomnia | 轻量级 API 客户端 |
API 设计检查清单
- RESTful 原则符合性
- 基于资源的 URL(名词、复数)
- 恰当的 HTTP 方法
- 正确的状态码
- 统一的错误响应格式
- 已定义认证/授权方式
- 已定义分页方式
- 版本管理方式(可选)
模板
- templates/pipeline/phase-4-api.template.md
- templates/pipeline/zero-script-qa.template.md
下一阶段
Phase 5:设计系统 → API 已就绪,接下来构建 UI 组件。
限制
资料未提供该技能的具体收费、价格、平台支持范围或实际效果数据。