Fribase使用文档
安装说明
官方支持两种安装方式,一种是npm,另一种则可以直接通过标签引用。
NPM
npm install --save frisbee
Browser
<html>
<head>
<script crossorigin="anonymous" src="https://polyfill.io/v3/polyfill.min.js?features=es6,Array.from,Object.getOwnPropertyDescriptors,Object.getOwnPropertySymbols,Promise,Promise.race,Promise.reject,Promise.resolve,Reflect,Symbol.for,Symbol.iterator,Symbol.prototype,Symbol.species,Symbol.toPrimitive,Symbol.toStringTag,Uint8Array"></script>
<script src="https://unpkg.com/frisbee"></script>
</head>
</html>
简单用例
CommonJS
const Firsbee = require('firsbee');
const api = new Firsbee({
baseURI: '', // 基础的api地址
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
});
// 回调形式
api.get('/hello-world').then(console.log).catch(console.log);
// asyncio形式
(
async () => {
try {
let res = await api.post('/v1/login');
if(res.err) throw res.err;
// 设置请求头部的认证信息结构
api.auth(res.body.token);
res = await api.get('/v1/messages', {body: {
limit: 10,
page: 2
}});
if(res.err) throw res.err;
let res = await api.post('/v1/logout');
if(res.err) throw res.err;
api.auth():
} catch(err) {
console.log(err);
}
})();
接口说明
let api = new Frisbee({
baseURI: 'http://xxx.api.com/<version>/<entry>', // (string) 所有请求地址的默认前缀
headers: {}, // (object) 顾名思义,就是请求头的头部信息
body: {}, // (object) 要随每个请求发出的请求体的有效内容
params: {}, // (object) 每个请求都要携带的querystring信息
logRequest: (path, opt) => {}, // 每个请求之前进行调用
logResponse: (path, opt) => {}, // 每个响应来时第一个调用对象
auth: {}, // 调用鉴权函数 ?
preventBodyOnMethods: ['GET', 'DELETE', 'HEAD', 'CONNECT'], // 指定不携带body信息的请求方法
interceptableMethods: ['GET', 'HEAD', 'PUT', 'POST', 'OPTIONS', 'DELETE', 'PATCH'], // 指定可以拦截的请求方法
raw: false, // 指定是否返回原始的响应体信息
abortToken: new Object(), // (Symbol) 指定一个可以终止一个或者多个请求体的信号
signal: {}, // (Object) 用于控制取消信号的对象,
mode: 'same-origin', // (string) 请求策略信息,默认采用同源策略,选项同fetch
cache: '', // (string) 同fetch - cache选项
credentials: 'same-origin', // (string) 同fetch - credentials
redirect: 'follow', // (string) 同fetch - redirect选项
referrer: 'client' // (string) 同fetch - referrer选项
});
/**
* api.auth(creds);
* creads: 认证信息
* 支持类型: array, arguments, string
* 描述: 验证过程
* */
api.auth([user, pass]);
api.auth(user, pass);
/**
* api.setOptions(opt)
* opt: 应用配置选项
* 支持类型: object
* 描述: 更新api实例对象
* */
api.setOptions({});
/**
* api.jwt(token)
* token: 获取的jwttoken
* 支持类型: string
* 描述: 设置客户端的jwtToken信息
* */
api.jwt('');
/**
* api.abort(token)
* token: 终止信号
* 支持类型: string
* 描述: 终止当前队列中或者运行中的队列请求
* */
api.abort('');
/**
* api.abortAll()
* 描述: 终止当前运行,队列中及awaiting中的所有请求
* */
api.abortAll();
/**
* 支持的方法列表
* */
api.get(path, options);
api.head(path, options);
api.post(path, options);
api.put(path, options);
api.del(path, options);
api.delete(path, options);
api.options(path, options);
api.patch(path, options);
// 支持请求拦截器的使用
api.interceptor.register(interceptor);
/**
* 拦截器结构
* {
* request: function (path, options) {
* // Read/Modify the path or options
* // ...
* return [path, options];
* },
* requestError: function (err) {
* // Handle an error occured in the request method
* // ...
* return Promise.reject(err);
* },
* response: function (response) {
* // Read/Modify the response
* // ...
* return response;
* },
* responseError: function (err) {
* // Handle error occured in api/response methods
* return Promise.reject(err);
* }
* */
api.interceptor.unregister(interceptor); // 取消注册拦截器
api.interceptor.clear(); // 清除所有拦截器