通用请求工具
支持
- 请求地址统一包装
- 统一处理响应
- 统一处理错误
- 定制不同平台配置项
- 挂载至指定对象
语法
以包装 uni-app 请求api 为例;
方式1:作为对象导出,自行决定存放位置。
import initializer from 'spider_req';
const options = {
host: 'https://my-server-host.com',
layout: '/api/v1/',
extraData: {token: 'ASDFGHJKL'},
beforeSuccess: (res)=>{
console.log('成功拦截器,成功之前统一调用')
}
};
const myRequest = initializer(uni.request,options);
myRequest({
url:'/products',
method: 'GET',
data: {
someData:'someData'
},
success: (res)=>{
console.log('响应成功了')
}
});
方式2:挂在至指定对象。
import initializer from 'spider_req';
initializer(uni.request,options,uni);
uni.req({
url:'/products',
method: 'GET',
data: {
someData:'someData'
},
success: (res)=>{
console.log('响应成功了')
}
});
初始化器中可选的options
extraData : 要追加到请求参数中的固定参数。
beforeSuccess : 成功前钩子函数。
beforeFail : 失败前钩子函数。
beforeSend : 发送前钩子函数。
sendPreHandler : 发送前预处理。将会发送该函数 return 出来的值。
receivePreHandler : 接受时预处理。工作原理同上。
appendDataFrom : 所有请求追加参数的函数,每次发送都会调用该函数,该函数返回值将会被携带在请求中。适用于动态固定参数。
resetSchema : 重置语法。
handlerDelay : 所有处理函数延迟执行。单位毫秒。
indices : 默认false。即get请求参数被序列化时是否带数组索引。
可选的重置语法以及默认值
{
"url": "url",
"data": "data",
"header": "header",
"method": "method",
"dataType": "dataType",
"responseType": "responseType",
"sslVerify": "sslVerify",
"success": "success",
"fail": "fail",
"complete": "complete"
}
每次请求可以接受的额外参数
skipBeforeFail : 该请求跳过全局的beforeFail。
skipBeforeSend : 原理同上。
realSuccess : 逻辑上的请求成功函数。即相应status < 400 时调用。常规的success是网络通了就视为成功。
statusFail : 逻辑上的请求失败函数。即相应的status >= 400 时调用。
重新初始化
重新初始化会自动销毁原对象(仅适用于以挂载点的方式初始化),然后用新的配置进行初始化。