ioxx
v3.2.1
Published
一个基于axios,目标为简化请求创建过程的的库。
Downloads
23
Readme
ioxx
一个可以让你更加简单的进行AJAX请求的工具, 基于axios
项目地址:https://github.com/ccwq/ioxx
特点
语义化的请求方式
//伪代码
ioxx.请求的路径.请求方式(发送数据).then(结果=>{ //处理结果 })
使用async/await,代码更加简洁
let 请求结果 = await ioxx.请求路径.请求方式(发送数据)
拥有功能强大的拦截器特性,按照请求的地址进行拦截
//响应之后对axios的响应数据进行读取/修改/延迟 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, _=>{ //对response进行一些耗时的操作 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配置
//request.js import Ioxx from "src/libs/ioxx"; export default Ioxx.create({ //不解释 baseURL: config.baseURL, //相应之后的配置 afterResponse(response){ //如果相应的status不为空,就认为相应出错,抛出错误 if(response.data.status){ return Promise.reject(response); } }, //请求之前的配置 beforeRequest(config){ //请求发送之前,为每个请求加上token config.headers.token = token; return config; }, }, axiosOptions)
使用
import ioxx from "path/to/request.js" /** * 使用get方式请求 "user/info" 接口 */ ioxx.userInfo({ headers:{ token }, params: { id } }); //或者 ioxx.userInfo.get({id}) //或者 ioxx.userInfo("get", {id}) //新增的 ioxx.$user_info(config) // ioxx.$user_info.get({id}, config) //2019年08月22日 新增 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); /** * 使用post请求登录到 user/auth/login */ 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(); //{url:"user/delete", method:"post"} ioxx.$super$_user_Post() //{url:"super_user/Post"}
总结,所有
_
会转换为路径切割(除了$_
)- 放在大写字母前面会阻止大写字母被转义为路径分割
ioxx.superUserDelete() //{url:"super/user", method:"delete"}
此时如果想要请求的地址是 "super/userDelete",可以使用
$
转义ioxx.superUser$Delete(); //也可以使用ioxx.superUserDDelete()//重复出现两次的大写字母会被缩减为1个
- 强制切割路径,放在非大写字母前面(包括小写字母,数字,下连字符),会转换为一个连字符
ioxx.superUser$delete.post() // {url:"super/user/delete", method:"post"}
历史
1.8.0 拦截器增加正则模式
ioxx.addInterceptors(/^user/, config=>{
//所有以user开头的请求会进入到这里//
})