ONIX Query API v1
ONIX 接口文档
所有数据接口需携带 Cookie 中的 access_token 鉴权。
1. 认证登录
使用账号密码登录,登录成功返回 access_token(24h 有效)。
POST/api/v1/login
| 字段 | 类型 | 必填 | 说明 |
| username | string | 是 | 用户名 |
| password | string | 是 | 密码 |
POST /api/v1/login
Content-Type: application/json
{
"username": "username",
"password": "password"
}
{
"msg": "登录成功",
"access_token": "eyJhbGciOiJIUzI1NiIs..."
}
{ "detail": "用户名或密码错误" }
{ "detail": "请求过于频繁,每分钟最多 5 次" }
2. 查询已解析数据
根据字段批量查询 ONIX 解析结果。
POST/api/v1/findOnixList
| 字段 | 类型 | 必填 | 说明 |
| field | string | 是 | 查询字段,支持: isbn |
| values | list[string] | 是 | 查询值列表,每批最多 100 条,单项最长 200 字符 |
POST /api/v1/findOnixList
Cookie: access_token=eyJ...
Content-Type: application/json
{
"field": "isbn",
"values": ["9780231171878"]
}
{
"user": "username",
"field": "isbn",
"count": 1,
"data": [
{
"isbn": "9780231171878",
"book_name": "Journal of Applied Physics",
"release": "2.1",
"exported": {},
"updated_at": "2025-12-01T10:30:00"
}
]
}
3. 查询未解析原文
直接返回图书中的原始文档,不做解析。
POST/api/v1/findOnixRawList
| 字段 | 类型 | 必填 | 说明 |
| field | string | 是 | 查询字段,支持: isbn |
| values | list[string] | 是 | 查询值列表,每批最多 100 条,单项最长 200 字符 |
POST /api/v1/findOnixRawList
Cookie: access_token=eyJ...
Content-Type: application/json
{
"field": "isbn",
"values": ["9780231171878"]
}
{
"user": "username",
"field": "isbn",
"count": 1,
"data": [
{
"isbn": "9780231171878",
"book_name": "Journal of Applied Physics",
"release": "2.1",
"product": "",
...
}
]
}
4. 登出
清除Token,Cookie 自动失效。
POST/api/v1/logout
POST /api/v1/logout
Cookie: access_token=eyJ...
{ "msg": "logout success" }
5. 健康检查
GET/api/v1/health
GET /api/v1/health
{ "status": "ok" }
6. 错误码说明
| 状态码 | detail | 说明 |
| 401 | 未登录 | 请求未携带 access_token Cookie |
| 401 | Token 非法 | 签名校验失败或被篡改 |
| 401 | 登录已过期 | Token 已过期或被清除 |
| 401 | 用户名或密码错误 | 登录凭据与数据库不匹配 |
| 422 | field 只支持: {"isbn"} | 传入的查询字段不在允许范围内 |
| 422 | values 不能为空 | 查询值列表为空 |
| 422 | values 每批最多 200 条 | 超出单次批量查询上限 |
| 422 | values 包含非法值 | 值类型非字符串或长度超过 200 字符 |
| 429 | 请求过于频繁,每分钟最多 5 次 | 登录接口限流触发 |
| 429 | 请求过于频繁,每小时最多 10 次 | 数据查询接口限流触发 |
| 500 | 数据库连接失败 | Mongo 重试后仍失败 |