Firsbee Chinese Document

Fribase usage documentation

Installation Notes

Two installation methods are officially supported, one is npm, and the other can be directly referenced by tags.

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>

Simple use case

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);
    }
})();

Interface Description

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(); // 清除所有拦截器

Guess you like

Origin blog.csdn.net/m0_37964621/article/details/107046742