当前位置: 首页 > Web前端 > JavaScript

Vue3axios安装与使用

时间:2023-03-27 01:25:07 JavaScript

使用npm安装$npminstallaxiospackageaxios/**@Author:Axiospackage*@Date:2020-12-0810:39:03*@LastEditTime:2021-10-2211:34:08*@LastEditors:PleasesetLastEditors*@Description:在用户设置中编辑*@FilePath:\blogs-s\src\api\index.ts*/importaxiosfrom'axios';importqsfrom"qs";importstorefrom"@/store/index”;从'@/router/index'导入路由器;从'@/components/aspin/data'导入{dataList};从'ant-design-vue'导入{message};从'导入{存储}。./storage/storage';//数据请求字符axios.defaults.baseURL=process.env.VUE_APP_API_URL,//如果请求超过`timeout`,请求将被中断axios.defaults.timeout=5000;//表示跨域请求是否需要凭据axios.defaults.withCredentials=false;//axios.defaults.headers.common['token']=AUTH_TOKENaxios.defaults.headers.post['Content-Type']='application/json;charset=UTF-8';//允许跨域axios.defaults.headers.post["Access-Control-Allow-Origin-Type"]="*";//请求拦截器axios.interceptors.request.use(function(config){if(config.method===“发布”||配置方法===“放”||config.method==="delete"){//qs序列化config.data=qs.parse(config.data);}//如果有身份验证令牌,将令牌放在标头上);}returnconfig;},error=>{message.error(error.data.error.message);returnPromise.reject(error.data.error.message);})//响应拦截器axios.interceptors.response.use(function(config){dataList.show=trueif(config.status===200||config.status===204){setTimeout(()=>{dataList.show=false},400)returnPromise.resolve(config);}else{returnPromise.reject(config);}},function(error){if(error.response.status){switch(error.response.status){案例400:message.error("发送的请求有错误,服务器没有创建或修改数据==>"+error.response.status)break;//401:Notloggedin//如果没有登录,则跳转到登录页面,并携带当前页面的路径//登录成功后返回当前页面,这一步需要在登录页面进行操作。case401://redirectmessage.error("token:loginfailure==>"+error.response.status+":"+store.state.Roles)storage.remove(store.state.Roles)storage.get(store.state.Roles)router.replace({path:'/Login',});休息;//403tokenexpired//提示用户登录过期//清除本地token,清除vuex中的token对象//跳转到登录页面case403:message.error("用户已授权,但禁止访问==>"+error.response.status)break;case404:message.error("网络请求不存在==>"+error.response.status)break;case406:message.error("请求的格式不可用==>"+error.response.status)break;case410:message.error("请求的资源被永久删除,将不再获取==>"+error.response.status)break;case422:message.error("创建对象时,出现校验错误==>"+error.response.status)休息;case500:message.error("服务器错误,请检查服务器==>"+error.response.status)break;case502:message.error("网关错误==>"+error.response.status)break;case503:message.error("服务不可用,服务器暂时过载或维护中==>"+error.response.status)break;case504:message.error("网关超时==>"+error.response.status)break;默认值:message.error("其他错误==>"+error.response.status)}returnPromise.reject(error.response);}else{//处理断开连接//eg:当请求超时或者网络断开时,更新state的网络状态//网络状态控制app中一个全局断开连接提示组件的显示和隐藏。在断网组件中,store.commit('changeNetwork',false);}})exportdefaultaxiosmain.ts:globaluseimportaxiosfrom'./utils/http/axios'globaluse//globalctx(this)hangLoad$axiosapp.config.globalProperties.$api=axios####包使用/**@Author:你的名字*@Date:2021-05-0811:33:56*@LastEditTime:2021-10-2210:36:05*@LastEditors:请设置LastEditors*@Description:在用户设置中编辑*@FilePath:\blogs-s\src\api\article.js*/importrequestfrom'@/utils/http/axios'import{IntArticle}from"@/api/data/interData";exportclassarticle{/***@description:查询总条数*/staticasyncGetCountAsync(){returnawaitrequest({url:"/api/SnArticle/GetCountAsync",method:'get',})}/***@description:查询分类总数*@param{number}id*/staticasyncConutSort(id:number){returnawaitrequest({url:"/api/SnArticle/GetConutSortAsync?type="+id+"&cache=true",method:'get',})}/***@description:模糊查询*@param{string}name*/staticasyncGetContainsAsync(name:string){returnawaitrequest({url:"/api/SnArticle/GetContainsAsync?name="+name+"&cache=true",method:'get',})}/***@description:按标签模糊查询*@param{string}name*/staticasyncGetTypeContainsAsync(tag:string,name:string,chache:boolean){returnawaitrequest({url:"/api/SnArticle/GetTypeContainsAsync?type="+tag+"&name="+name+"&cache="+chache,method:'get',})}/***@description:主键查询*@param{number}id*@param{boolean}cache*@return{*}*/staticasyncGetByIdAsync(id:any,cache:boolean):Promise{returnawaitrequest({url:"/api/SnArticle/GetByIdAsync?id="+id+"&cache="+缓存,方法:'get',})}/***@description:选择标签条查询*@param{number}id*@param{boolean}cache*@return{*}*/staticasyncGetTagtextAsync(id:number,cache:boolean):Promise{returnawaitrequest({url:"/api/SnArticle/GetTagAsync?labelId="+id+"&isDesc=true&cache="+cache,method:'get',})}/***@description:标签页面查询*@param{number}页面*@param{number}页面大小*@return{*}*/staticasyncGetFyTitleAsync(page:number,pagesize:number,isDesc:boolean,cache:boolean):Promise{returnawaitrequest({url:"/api/SnArticle/GetFyTitleAsync?"+"&pageIndex="+页面+"&pageSize="+pagesize+"&isDesc="+isDesc+"&cache="+cache,method:'get',})}/***@description:分类页面查询*@param{number}page*@param{number}pagesize*/staticasyncGetFySortTitleAsync(page:number,pagesize:number,cache:boolean):Promise{returnawaitrequest({url:"/api/SnArticle/GetfySortTestAsync?type=7&pageIndex="+page+"&pageSize="+pagesize+"&isDesc=true&cache="+cache,method:'get',})}/***@description:更新*@param{any}resultData*@param{string}type*/staticasyncUpdatePortionAsync(resultData:any,type:string):Promise{返回等待请求({//更新url:"/api/SnArticle/UpdatePortionAsync?type="+type,method:"put",data:resultData,})}/***@description:新数据*@param{any}resultData*/staticasyncAddAsync(resultData:IntArticle){returnawaitrequest({url:"/api/SnArticle/AddAsync",method:"post",data:resultData,})}/***@description:更新数据*@param{IntArticle}resultData*/staticasyncUpdateAsync(resultData:IntArticle){returnawaitrequest({url:"/api/SnArticle/UpdateAsync",方法:"put",data:resultData,})}/***@description:delete*@param{number}id*@return{*}*/staticasyncDeleteAsync(id:number){returnawaitrequest({url:"/api/SnArticle/DeleteAsync?id="+id,方法:"delete",})}}axiosConcurrentRequestHelper函数,用于处理并发请求axios.all(iterable)axios.spread(callback)//示例:import{article}from'@/api/index';import{blogsList}from"./components/data";从'@/utils/http/axios'类方法导入axios{staticasyncGetFySortTitle(){awaitarticle.GetFySortTitleAsync(blogsList.page,blogsList.pagesize,true)。然后((res:any)=>{blogsList.dataResult=res.data;});}staticasyncConutSort(){awaitarticle.ConutSort(7).then((result:any)=>{blogsList.count=result.data;});}}asyncfunctionQueryAll(){//axios.all([awaitmethods.ConutSort(),awaitmethods.GetFySortTitle()]).then(axios.spread((Fy,co:any)=>{//blogsList.count=co.data;//blogsList.dataResult=Fy.data;//}))axios.all([awaitmethods.ConutSort(),awaitmethods.GetFySortTitle()])}export{methods,QueryAll}