概述
【框架】axios封装(接口)
封装作用:接口的封装和实际项目开发流程和开发过程相关
1.统一请求方式,方便接口的取用和阅读
2.简化请求的代码量,减少重复代码冗余
3.接口代理
4.方便修改
开发流程(前端)
1.设计图和项目功能->2.后端写接口 ->3.提供前端接口 - ↓
->2.前端写页面->3.写功能->4.虚拟接口数据测试功能->5根据真实接口调整前端接口数据
import axios from 'axios'
import store from '@/core/store'
let API = (options, filter) => {
//返回数据处理
function Response(res) {
if (res.code === 0) {
return Promise.resolve(filter ? filter(res.data) : res.data);
}
else {
return Promise.reject(res);
}
}
//请求拦截,返回虚拟数据
if (options.vres) {
return Response(options.vres)
}
//创建自定义请求实例
const instance = axios.create();
//请求拦截器
instance.interceptors.request.use((config) => {
Object.assign(config.headers, { Authorization: 'Bearer ' + store.state.user.token })
config.baseURL = process.env.NODE_ENV === 'production' ? "/quiz" : "/"
return config;
});
// 响应拦截器
instance.interceptors.response.use((response) => {
return Response(response.data)
}, (error) => {
return Promise.reject(error);
});
return instance(options);
}
export default API
封装结构
1.请求拦截
用于请求发送之前,处理请求的参数,多用于请求权限如token,cookie等的设置,请求地址的设置等
2.响应拦截
用于返回数据的处理
3.返回数据处理
原本返回数据处理理应放到第二项的【响应拦截】,但是实际开发中,前后端是并行开发,所以为了方便调试接口和功能,前端自行设置设置虚拟数据,但是响应拦截是接口实际请求后返回才触发,因此在使用虚拟数据的时候就失去了作用,因此单独封装,保证虚拟数据和真实数据有一样的处理流程
AXIOS中文官方文档:http://www.axios-js.com/zh-cn/docs/
接口列表示例
import API from 'request'//引用封装的接口
export const TextApi= ({name}) => { //接口示例
if(name==''){//验证,并返回提示的数据
return Promise.reject({message:'请填写名称'})
}
/*
这里可以在参数上传前进行处理或验证
*/
return API.request({
url: 'getcode',
method: 'post',
data:{name},
vres:{//返回的虚拟数据
code:0,
data:{a:1}
}
},data=>{//这里将接口获取的数据进行处理
return data.map(e=>{
id:e.user_id,
name:e.user_name
})
})
}
接口使用示例
import {TextApi} from '@/config/data.js'
export default {
...
methods:{
GetData(){
let p = {name:123}
TextApi(p).then(data=>{
//使用返回的接口数据data
}).catch(error=>{
//报错处理
this.$Info.alert({icon:'error',message:error.message})
})
}
}
}
有待处理问题
大部分接口报错有返回处理提醒,那么是不是在接口封装的时候就可以将报错的代码封装进去,以减少页面代码
根据错误类型有1.前端逻辑报错 2.前端流程报错 3.后端服务器报错
1类和3类属于开发bug报错,一般正式项目中不予考虑
2类为数据验证不通过的主动报错处理,需要考虑不同接口的调用,需要有开关
最后
以上就是谨慎煎蛋为你收集整理的【框架】axios封装(接口)【框架】axios封装(接口)的全部内容,希望文章能够帮你解决【框架】axios封装(接口)【框架】axios封装(接口)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复