Skip to content

zdhxiong/mdclub-sdk-js

Repository files navigation

MDClub 的 Javascript 版 SDK

通过 CDN 引入 JS 文件

注意:这种方式只适用于浏览器环境。

在 HTML 中通过 <script> 标签引入 JS 文件:

<script
  src="mdclub-sdk.min.js"
  integrity="sha256-lMwIYBCuWSCv75NytImCOK8Qm4dHGMa9P3ege0Pd7gU="
  crossorigin="anonymous"
></script>

然后就可以通过全局变量 mdclubSDK 访问 SDK 了。

你可以先通过 mdclubSDK.defaults 对 SDK 进行一些设置:

// 设置 api 地址(可选,默认为 {当前域名}/api)
mdclubSDK.defaults.apiPath = 'https://example.com/api';

// 若浏览器不支持 patch, put, delete 请求,则需要将该选项设为 true(可选)
mdclubSDK.defaults.methodOverride = true;

// 设置全局回调函数(可选)
mdclubSDK.defaults.beforeSend = function () {};
mdclubSDK.defaults.success = function (response) {};
mdclubSDK.defaults.error = function (errMsg) {};
mdclubSDK.defaults.complete = function () {};

然后可以如下调用 SDK 中的方法:

mdclubSDK.QuestionApi.getList({ question_id: 11 })
  .then((questions) => {
    console.log(questions);
  })
  .catch((errMsg) => {
    console.log(errMsg);
  });

在 ES6 模块化环境或小程序中使用

使用 npm 安装 SDK:

npm install mdclub-sdk-js --save

SDK 同时支持浏览器环境和小程序环境,你需要先根据使用环境设置适配器。

若在小程序中使用,需要设置成小程序适配器。支持微信小程序、支付宝小程序、钉钉小程序、百度小程序(注意:当前代码还未在小程序中进行过测试):

import defaults from 'mdclub-sdk-js/es/defaults';
import MiniProgramAdapter from 'mdclub-sdk-js/es/adapter/MiniProgramAdapter';

defaults.adapter = new MiniProgramAdapter();

若在浏览器中使用,设置成浏览器适配器:

import defaults from 'mdclub-sdk-js/es/defaults';
import BrowserAdapter from 'mdclub-sdk-js/es/adapter/BrowserAdapter';

defaults.adapter = new BrowserAdapter();

若你的项目中已经通过 npm 安装了 jQuery、axios 之类的库,则可以设置对应的适配器,SDK 将直接使用对应的库提供的 ajax 方法。下面是所有支持的适配器:

适配器 使用方法 说明
AxiosAdapter import defaults from 'mdclub-sdk-js/es/defaults';
import AxiosAdapter from 'mdclub-sdk-js/es/adapter/AxiosAdapter';
defaults.adapter = new AxiosAdapter();
使用 axios 发送请求
BrowserAdapter import defaults from 'mdclub-sdk-js/es/defaults';
import BrowserAdapter from 'mdclub-sdk-js/es/adapter/BrowserAdapter';
defaults.adapter = new BrowserAdapter();
使用 mdui.jq 发送请求
FetchAdapter import defaults from 'mdclub-sdk-js/es/defaults';
import FetchAdapter from 'mdclub-sdk-js/es/adapter/FetchAdapter';
defaults.adapter = new FetchAdapter();
使用浏览器内置的 fetch 方法发送请求
JQueryAdapter import defaults from 'mdclub-sdk-js/es/defaults';
import JQueryAdapter from 'mdclub-sdk-js/es/adapter/JQueryAdapter';
defaults.adapter = new JQueryAdapter();
使用 jQuery 发送请求
MiniProgramAdapter import defaults from 'mdclub-sdk-js/es/defaults';
import MiniProgramAdapter from 'mdclub-sdk-js/es/adapter/MiniProgramAdapter';
defaults.adapter = new MiniProgramAdapter();
在小程序内使用

还可以选择对 SDK 进行一些全局设置,这些设置都是可选的。

import defaults from 'mdclub-sdk-js/es/defaults';

// 设置 api 地址,默认为 {当前域名}/api
defaults.apiPath = 'https://example.com/api';

// 若浏览器不支持 patch, put, delete 方法,则需要将该选项设为 true(可选)
defaults.methodOverride = true;

// 设置全局回调函数
defaults.beforeSend = () => {};
defaults.success = () => {};
defaults.error = () => {};
defaults.complete = () => {};

然后就可以调用 SDK 方法了

import QuestionApi from 'mdclub-sdk-js/es/QuestionApi';

QuestionApi.getList({ question_id: 11 })
  .then((questions) => {
    console.log(questions);
  })
  .catch((errMsg) => {
    console.log(errMsg);
  });

API 分类

SDK 中的方法按 API 的功能分类到了不同模块中,具体如下表所列:

API 模块 说明
AnswerApi 回答相关 API
ArticleApi 文章相关 API
CaptchaApi 验证码相关 API
CommentApi 评论相关 API
EmailApi 邮件相关 API
ImageApi 图片相关 API
NotificationApi 通知相关 API
OptionApi 配置相关 API
QuestionApi 提问相关 API
ReportApi 举报相关 API
StatsApi 数据统计相关 API
TokenApi 身份验证相关 API
TopicApi 话题相关 API
UserApi 用户相关 API

各个模块中所有的方法详细说明,请参见 SDK 文档

若通过 CDN 引入 SDK,可以这样访问指定模块的方法:

mdclubSDK.QuestionApi.getList().then((response) => {});

若在 ES6 模块化环境中使用 SDK,可以这样访问指定模块的方法:

import QuestionApi from 'mdclub-sdk-js/es/QuestionApi';

QuestionApi.getList().then((response) => {});

错误代码

在 SDK 中,每一个错误代码都赋值给了一个常量。在开发中,你可以使用常量来代替错误代码,以便使你的代码拥有更好的可读性。

若通过 CDN 引入 SDK,可以这样访问错误代码常量:

// 以下对应错误代码 201001
mdclubSDK.errors.USER_NEED_LOGIN;

若在 ES6 模块化环境中使用 SDK,可以这样访问错误代码常量:

import errors from 'mdclub-sdk-js/es/errors';

// 以下对应错误代码 201001
errors.USER_NEED_LOGIN;

具体的常量和错误代码对应关系请 参见文档