🔌 通用 - 标准接口

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 内容,内容固定三个字段 codeinfodata,其中 code 为状态码,info 为消息内容,data 为返回数据内容。

{
  "code": 0,
  "info": "接口返回提示消息",
  "data": {}
}

接口内置的返回状态码:

  1. 当接口状态码 code 返回 0 时,表示服务端业务执行失败,错误信息见 info 字段,数据见 data 字段。
  2. 当接口状态码 code 返回 1 时,表示服务端业务执行成功,提示信息见 info 字段,数据见 data 字段。
  3. 当接口状态码 code 返回 401 时,表示无效授权需要重新登录,错误信息见 info 字段,数据见 data 字段。
  4. 当接口状态码 code 返回 402 时,表示用户资料不全需要补录,错误信息见 info 字段,数据见 data 字段。
  5. 当接口状态码 code 返回 403 时,表示登录超时需要重新登录,错误信息见 info 字段,数据见 data 字段。
  6. 其他接口状态码 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)
    }
};

更多案例文档

ThinkAdmin 案例文档

最近更新:
Contributors: 邹景立