外观
API 约定与规范
本页描述 Notanote API 的通用约定,包括接口基础信息、请求格式、响应格式和标识符(Identifier)命名规则。所有第三方接口均遵循本规范。
基础信息
| 项目 | 说明 |
|---|---|
| 接口域名 | https://api.notanote.cn |
| 协议 | HTTPS(不兼容 HTTP) |
| 请求方法 | POST |
| 数据格式 | JSON |
| 字符编码 | UTF-8 |
请求规范
Method
全部接口使用 POST 方法,我们拒绝使用 RESTful API 接口规范,即使是只读查询接口也统一走 POST,不接受 PUT、DELETE 等其他非常规方法。
Headers
Content-Type: application/json如果你的请求体中包含中文或特殊字符,请确保 Content-Type 同时声明字符编码:
Content-Type: application/json; charset=utf-8请求体
所有参数通过 URL query 或 form-data 请求,不使用 JSON Body。请求体必须是一个合法的 Form 对象。
请求示例:
http
POST /webauth/get-session HTTP/1.1
Host: api.notanote.cn
Content-Type: application/json
tid: 1001
secretkey: your-secret-key
scope: access_token响应规范
成功响应
json
{
"Status": true,
"Response": {
"Identifier": "nano.api.v2.模块.操作.succeed",
"Data": { }
}
}| 字段 | 类型 | 说明 |
|---|---|---|
Status | boolean | true 表示业务处理成功 |
Identifier | string | 字符串标识,描述「哪个模块的哪个操作成功了」 |
Data | object | 业务数据,结构因接口而异。无数据时可能为空对象 {} |
失败响应
json
{
"Status": false,
"Response": {
"Identifier": "nano.api.v2.模块.操作.failed.原因"
}
}失败时 Status 为 false,Identifier 末尾包含失败原因。不会附带 Data 字段。
示例:
json
{
"Status": false,
"Response": {
"Identifier": "nano.api.v2.webauth.get-session.failed.TIDVerifyFailed"
}
}Identifier 命名规则
nano.api.v2.{模块}.{操作}.{状态}.{原因}| 段位 | 说明 | 示例 |
|---|---|---|
v2 | API 版本号 | v2 |
模块 | 业务模块,如 webauth、third-party | webauth |
操作 | 具体接口操作,如 get-session、save.pull | get-session |
状态 | succeed 或 failed | failed |
原因 | 仅失败时出现,描述具体失败原因 | TIDVerifyFailed |
全局错误
跨模块的通用错误,所有接口均可能返回。
| Identifier | 说明 | 处理建议 |
|---|---|---|
nano.api.v2.global.nodeIsUnavailable | 功能模块未启用 | 联系 contact@notanote.cn 解决 |
错误处理建议
1. 以 Identifier 为准
不要依赖 HTTP 状态码做业务判断。Notanote 接口除网络异常外始终返回 HTTP 200,所有业务结果都通过 Status 字段和 Identifier 字段表达。
js
const data = await fetch(url, options).then(r => r.json());
if (data.Status === true) {
// 业务成功
} else {
// 业务失败,根据 Identifier 处理
const identifier = data.Response?.Identifier ?? 'unknown';
// ...
}2. serverError 类错误
serverError 通常为服务端临时故障:
- 可间隔 1-3 秒后重试
- 重试 3 次仍失败,应中断流程并向用户提示
3. 错误码查阅
各接口的具体错误码已随接口文档列出,请参阅对应的 API 参考页面: