🔌 通用 - 标准接口
ThinkAdmin 提供完善的 API 接口开发标准,支持多种认证授权机制和数据类型。
🚀 主要功能
- 认证授权: 支持多种认证授权机制
- 多端支持: 支持微信小程序、服务号、WAP 网站等
- 安全机制: 提供安全的 token 验证机制
- 标准接口: 统一的接口数据格式和响应标准
- 文件上传: 支持文件上传和云存储对接
- 状态管理: 完善的接口状态码管理
📋 认证授权机制
授权方式
- 授权通道: 通过 API 授权通道进行身份验证
- 授权令牌: 使用 token 进行身份验证
- 多端支持: 支持多种终端类型的登录
支持的终端类型
- 微信小程序: 使用
wxapp
标识 - 微信服务号: 使用
wechat
标识 - WAP 网站: 使用
wap
标识 - 安卓 App: 使用
android
标识 - 苹果 App: 使用
iosapp
标识
Token 管理
- 唯一性: 每个 API 授权通道同时只能生成一个 token
- 绑定机制: token 与终端的 user-agent 信息绑定
- 安全验证: 支持 get、post、header 三种方式提交
- 推荐方式: 建议使用 header 方式提交 token
⚙️ 接口数据标准
数据提交
- 表单方式: 支持标准 form 表单方式提交
- 数据类型: 设置为
x-www-form-urlencoded
- 文件上传: 支持 base64 方式上传文件
- 云存储: 大文件建议直接对接云存储
- 参数验证: 支持参数验证和过滤
响应格式
- JSON 格式: 服务端接口响应 JSON 内容
- 固定字段: 包含 code、info、data 三个字段
- 状态码: code 为状态码
- 消息内容: info 为消息内容
- 数据内容: data 为返回数据内容
- 错误处理: 统一的错误处理机制
安全机制
- Token 验证: 基于 Token 的身份验证
- 请求签名: 支持请求签名验证
- 频率限制: 支持接口调用频率限制
- IP 白名单: 支持 IP 白名单验证
标准响应格式
{
"code": 0,
"info": "接口返回提示消息",
"data": {}
}
接口数据提交
目前平台只支持标准 form 表单方式提交数据,数据类型需要设置为:x-www-form-urlencoded。如果需要上传文件,可以使用 base64 方式上传,服务端再转存为文件,上传大文件建议直接对接云存储。
服务端接口响应 json 内容,内容固定三个字段 code、info、data,其中 code 为状态码,info 为消息内容,data 为返回数据内容。
{
"code": 0,
"info": "接口返回提示消息",
"data": {}
}
接口内置的返回状态码:
- 当接口状态码 code 返回 0 时,表示服务端业务执行失败,错误信息见 info 字段,数据见 data 字段。
- 当接口状态码 code 返回 1 时,表示服务端业务执行成功,提示信息见 info 字段,数据见 data 字段。
- 当接口状态码 code 返回 401 时,表示无效授权需要重新登录,错误信息见 info 字段,数据见 data 字段。
- 当接口状态码 code 返回 402 时,表示用户资料不全需要补录,错误信息见 info 字段,数据见 data 字段。
- 当接口状态码 code 返回 403 时,表示登录超时需要重新登录,错误信息见 info 字段,数据见 data 字段。
- 其他接口状态码 code 值可以根据实际情况定义,需要与接口客户端一起协商。
终端 javascript 请求示例
var xhr = new XMLHttpRequest();
xhr.setRequestHeader('Api-Name', 'wxapp');
xhr.setRequestHeader('Api-Token', '授权TOKEN');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.open('post', 'https://v6.thinkadmin.top/data/api.data/getSlider', true);
xhr.send("username=USER&password=12356");
xhr.onload = function () {
if (xhr.status === 200) {
var text = xhr.responseText;
var response = JSON.parse(text);
console.log(response)
} else {
console.log(xhr)
}
};