ioxx
一个可以让你更加简单的进行AJAX请求的工具, 基于axios
项目地址:https://github.com/ccwq/ioxx
-
特点
-
语义化的请求方式
//伪代码
ioxx.请求的路径.请求方式(发送数据).then(结果=>{
//处理结果
})
使用async/await,代码更加简洁
let 请求结果 = await ioxx.请求路径.请求方式(发送数据)
-
拥有功能强大的拦截器特性,按照请求的地址进行拦截
ioxx.addInterceptors("user/info", resp=>{
store.commit("setUser", resp.data);
})
ioxx.addInterceptors("user/info", {
before(config){
return new Promise(resolve=>{
setTimeout(10000, resolve, config);
})
},
after(response){
return new Promise(resolve=>{
setTimeout(10000, _=>{
resolve(response);
});
})
}
})
ioxx.addInterceptors(/^user/, {...others});
-
请求代码数量缩减
axios({
url,
method,
data:{
id
}
})
ioxx.url.method({id})
两者比较之下,ioxx可以做到更加简洁
由于基于axios,ioxx也可以直接使用axios的方式进行请求
ioxx.$(axiosOptions)
-
开箱即可请求 application/x-www-form-urlencoded 形式的数据,不知道最新版的这样,以前使用axios必须得加一堆配置,才可以是使用
-
安装
npm install --save ioxx
或者
yarn add ioxx
-
配置示例/可以0配置
import Ioxx from "src/libs/ioxx";
export default Ioxx.create({
baseURL: config.baseURL,
afterResponse(response){
if(response.data.status){
return Promise.reject(response);
}
},
beforeRequest(config){
config.headers.token = token;
return config;
},
}, axiosOptions)
-
使用
import ioxx from "path/to/request.js"
ioxx.userInfo({
headers:{
token
},
params: {
id
}
});
ioxx.userInfo.get({id})
ioxx.userInfo("get", {id})
ioxx.$user_info(config)
ioxx.$user_info.get({id}, config)
ioxx.get("path/foo/bar", {id}, {headers});
ioxx.get("path/foo/bar", {params:{id}, headers}, true);
ioxx.post("path/foo/bar", {id}, {headers})
ioxx.post("path/foo/bar", {data:{id}, headers}, true);
ioxx.userAuthLogin.post({userName, password})
ioxx.userAuthLogin("post", {userName, password})
ioxx.$user_auth_login.post({userName, passwd})
ioxx.userAuthLogin({
method: "post",
data: {userName, password},
})
ioxx.userAuthLoginPost({
data: {userName, password},
})
ioxx.$user_auth_login({
data: {userName, password},
})
拦截器功能请查看特点介绍部分
-
特殊情况
-
请求的地址有大写如 "superUser/login"
通用解决方式
ioxx.$({
url:"sperUser/login"
})
ioxx["$superUser/login"](axiosConfig);
也可以使用转义方式避免User的U被识别为路径分割
ioxx.superUUserLogin()
文档
-
$转义的使用
1.以$开头的方法会遵循另外一套简单的规则,如下
ioxx.$user_delete.post();
ioxx.$super$_user_Post()
总结,所有_会转换为路径切割(除了$_)
ioxx.superUserDelete()
此时如果想要请求的地址是 "super/userDelete",可以使用 $ 转义
ioxx.superUser$Delete();
- 强制切割路径,放在非大写字母前面(包括小写字母,数字,下连字符),会转换为一个连字符
ioxx.superUser$delete.post()
历史
1.8.0 拦截器增加正则模式
ioxx.addInterceptors(/^user/, config=>{
})