88 lines
1.3 KiB
Markdown
88 lines
1.3 KiB
Markdown
# API 合约
|
|
|
|
> 本文定义后端 API 的目标形状。实现前可细化,但不要在代码里另起一套不兼容接口。
|
|
|
|
如果项目没有后端 API,可改成本地模块接口、CLI 参数或事件合约。
|
|
|
|
## 通用约定
|
|
|
|
- 传输:【JSON over HTTPS / GraphQL / gRPC / 本地函数调用】。
|
|
- 鉴权:【Session Cookie / Bearer Token / 无】。
|
|
- 请求体和响应体编码:【UTF-8 JSON】。
|
|
- 时间格式:【ISO 8601 / Unix timestamp】。
|
|
- 未登录访问需要权限的接口时返回:【401 / 403】。
|
|
|
|
通用错误响应:
|
|
|
|
```json
|
|
{
|
|
"error": {
|
|
"code": "bad_request",
|
|
"message": "请求参数不正确"
|
|
}
|
|
}
|
|
```
|
|
|
|
## 账号
|
|
|
|
### `POST /api/auth/login`
|
|
|
|
请求:
|
|
|
|
```json
|
|
{
|
|
"email": "user@example.com",
|
|
"password": "password"
|
|
}
|
|
```
|
|
|
|
成功响应:
|
|
|
|
```json
|
|
{
|
|
"user": {
|
|
"id": 1,
|
|
"email": "user@example.com"
|
|
}
|
|
}
|
|
```
|
|
|
|
## 核心资源
|
|
|
|
把项目的核心资源按 REST 或其他风格写清楚。
|
|
|
|
### `GET /api/items`
|
|
|
|
成功响应:
|
|
|
|
```json
|
|
{
|
|
"items": [
|
|
{
|
|
"id": 1,
|
|
"name": "示例"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### `POST /api/items`
|
|
|
|
请求:
|
|
|
|
```json
|
|
{
|
|
"name": "示例"
|
|
}
|
|
```
|
|
|
|
成功响应返回新增资源。
|
|
|
|
## 待实现时确认
|
|
|
|
- 参数校验规则。
|
|
- 分页、排序、筛选方式。
|
|
- 重复提交是否幂等。
|
|
- 错误码枚举。
|
|
- 鉴权过期时间和刷新策略。
|