Axios wrapper
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 方法。
get
和 head
方法的签名是 (url, params, options)
;put
, post
和 delete
方法的签名是 (url, data, params, options)
。
params
参数代表查询字符串参数,而 options
是请求设置。
目前支持 4 种请求设置:
concurrentId (string)
: 可选的请求 IDcollectRequest (bool)
: 可选的标志,指示是否记录请求(默认为true
)requestConfig (object)
: 可选的自定义请求参数配置headers (object)
: 可选的自定义请求头对象。timeout (number)
: 可选的请求超时时间onDownloadProgress (function)
: 可选的用于处理文件下载进度的回调函数
请求头
setDefaultHeader({name (string), value (string), methods (array)})
方法允许添加一个默认的请求头。
name
和 value
参数是必需的,可选参数 methods
指定了所有将接收这些默认请求头的请求方法(默认情况下所有方法都将接收这些请求头)。
CSRF
setCSRFToken
方法允许指定 CSRF-token,该 token 将被添加到所有 put
, post
和 delete
请求中。
并发请求
有时最好在请求进行中取消它,如果其结果不再需要的话。要实现这一点,应该在请求的 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'
}
});