/ Axios wrapper

Axios wrapper

Axios 包装器,提供并发请求的自动取消功能。

Axios Wrapper

该库提供了一个方便的 Axios 包装器,增加了自动取消并发请求的功能。

安装

npm install --save-dev @gravity-ui/axios-wrapper

HTTP API

构造函数参数

config [可选]

axios 实例的配置。

collector [可选]

请求收集器的配置是一个对象:

{
    "collectErrors": 10,
    "collectRequests": 10
}

基本方法

包装器提供了 get, head, put, post, delete 这几种 http 方法。

gethead 方法的签名是 (url, params, options)put, postdelete 方法的签名是 (url, data, params, options)

params 参数代表查询字符串参数,而 options 是请求设置。

目前支持 4 种请求设置:

  • concurrentId (string): 可选的请求 ID
  • collectRequest (bool): 可选的标志,指示是否记录请求(默认为 true
  • requestConfig (object): 可选的自定义请求参数配置
  • headers (object): 可选的自定义请求头对象。
  • timeout (number): 可选的请求超时时间
  • onDownloadProgress (function): 可选的用于处理文件下载进度的回调函数

请求头

setDefaultHeader({name (string), value (string), methods (array)}) 方法允许添加一个默认的请求头。

namevalue 参数是必需的,可选参数 methods 指定了所有将接收这些默认请求头的请求方法(默认情况下所有方法都将接收这些请求头)。

CSRF

setCSRFToken 方法允许指定 CSRF-token,该 token 将被添加到所有 put, postdelete 请求中。

并发请求

有时最好在请求进行中取消它,如果其结果不再需要的话。要实现这一点,应该在请求的 options 中传递 concurrentId。当具有相同 concurrentId 的下一个请求发生时,具有该 ID 的前一个请求将被取消。

也可以通过调用 cancelRequest(concurrentId) 方法手动取消请求。

收集请求

可以使用 collector 选项将请求收集到本地存储中。它会分别存储所有请求和错误。以下 apiInstance 将保留最后 10 个请求(包括成功和失败的)以及最后 10 个错误请求。

const apiInstance = new API({
    collector: {
        collectErrors: 10,
        collectRequests: 10
    }
});

要获取已保存的请求,需要调用 getCollectedRequests 方法,该方法返回一个对象 {errors: [...], requests: [...]}

用法

建议的用法是继承基础的 AxiosWrapper 类:

export class API extends AxiosWrapper {
    getProjects() {
        return this.get('/projects');
    }
    getSensors({project, selectors}) {
        return this.get(`/projects/${project}/sensors`, {selectors, pageSize: 200});
    }
    getNames({project, selectors}) {
        return this.get(`/projects/${project}/sensors/names`, {selectors});
    }
    getLabels({project, names, selectors}) {
        return this.get(`/projects/${project}/sensors/labels`, {names, selectors});
    }
}

baseURL 参数被传递到 axios 配置中时,所有请求的路径名都将附加到它后面。

const apiInstance = new API({
    config: {
        baseURL: '/api/v2'
    }
});
关于库
星标
13
版本
1.5.1
最后更新
18.09.2024
代码仓库
github.com/gravity-ui/axios-wrapper
许可证
MIT License
贡献者