ONIX Query API v1

ONIX 接口文档

所有数据接口需携带 Cookie 中的 access_token 鉴权。

1. 认证登录

使用账号密码登录,登录成功返回 access_token(24h 有效)。

POST/api/v1/login
字段类型必填说明
usernamestring用户名
passwordstring密码
POST /api/v1/login Content-Type: application/json { "username": "username", "password": "password" }
// 响应 200 { "msg": "登录成功", "access_token": "eyJhbGciOiJIUzI1NiIs..." } // 响应 401 — 账号不存在或密码错误 { "detail": "用户名或密码错误" } // 响应 429 — 超出频率限制 { "detail": "请求过于频繁,每分钟最多 5 次" }

2. 查询已解析数据

根据字段批量查询 ONIX 解析结果。

POST/api/v1/findOnixList
字段类型必填说明
fieldstring查询字段,支持: isbn
valueslist[string]查询值列表,每批最多 100 条,单项最长 200 字符
POST /api/v1/findOnixList Cookie: access_token=eyJ... Content-Type: application/json { "field": "isbn", "values": ["9780231171878"] }
// 响应 200 { "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
字段类型必填说明
fieldstring查询字段,支持: isbn
valueslist[string]查询值列表,每批最多 100 条,单项最长 200 字符
POST /api/v1/findOnixRawList Cookie: access_token=eyJ... Content-Type: application/json { "field": "isbn", "values": ["9780231171878"] }
// 响应 200 — 返回原始图书的全部字段 { "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... // 响应 200 { "msg": "logout success" }

5. 健康检查

GET/api/v1/health
GET /api/v1/health // 响应 200 { "status": "ok" }

6. 错误码说明

状态码detail说明
401未登录请求未携带 access_token Cookie
401Token 非法签名校验失败或被篡改
401登录已过期Token 已过期或被清除
401用户名或密码错误登录凭据与数据库不匹配
422field 只支持: {"isbn"}传入的查询字段不在允许范围内
422values 不能为空查询值列表为空
422values 每批最多 200 条超出单次批量查询上限
422values 包含非法值值类型非字符串或长度超过 200 字符
429请求过于频繁,每分钟最多 5 次登录接口限流触发
429请求过于频繁,每小时最多 10 次数据查询接口限流触发
500数据库连接失败Mongo 重试后仍失败