Vue封装axios和api接口管理

1.安装axios

npm install axios --save  //安装axios

2.引入

在项目的src目录中,新建一个request文件夹,然后在里面新建一个http.js和一个api.js文件。http.js文件用来封装我们的axios,api.js用来统一管理我们的接口。

import axios from 'axios';//引入axios

//设置环境的切换 
if(process.env.NODE_ENV=='development'){
	axios.defaults.baseURL = 'http://120.53.31.103:84/'
}else if(process.env.NODE_ENV=='production'){
	axios.defaults.baseURL = 'https://wap.365msmk.com/'
}
//设置超时时间
axios.defaults.timeout = 10000;


// 请求拦截
axios.interceptors.request.use(
    config =>{
		config.headers={DeviceType:'H5'}
		return config
	}
)

//响应拦截
axios.interceptors.response.use(    
    response => {        
        if (response.status === 200) {            
            return Promise.resolve(response);        
        } else {            
            return Promise.reject(response);        
        }    
    },
    // 服务器状态码不是200的情况    
    error => {        
        if (error.response.status) {            
            switch (error.response.status) {                
                // 401: 未登录                         
                case 401:                    
                    router.replace({                        
                        path: '/login',                        
                    });
                    break;
                // 403 token过期                
                // 登录过期对用户进行提示                         
                // 跳转登录页面                
                case 403:                     
                    Toast({                        
                        message: '登录过期,请重新登录',                        
                        duration: 1000,                        
                        forbidClick: true                    
                    });                    
                    // 清除token                    
                    localStorage.removeItem('token');                    
                    // 跳转登录页面
                    setTimeout(() => {                        
                        router.replace({                            
                            path: '/login',                                                
                        });                    
                    }, 3000);                    
                    break; 
                // 404请求不存在                
                case 404:                    
                    Toast({                        
                        message: '网络请求不存在',                        
                        duration: 1000,                        
                        forbidClick: true                    
                    });                    
                break;                        
            }            
            return Promise.reject(error.response);        
        }       
    }
);

//封装get请求
export function get(url,params){
	return new Promise((resolve,reject)=>{
		axios.get(url,{
			params
		}).then(res=>{
			resolve(res)
		}).catch(err=>{
			reject(err)
		})
	})
}

//封装post请求
export function post(url,params){
	return new Promise((resolve,reject)=>{
		axios.post(url,params).then(res=>{
			resolve(res)
		}).catch(err=>{
			reject(err)
		})
	})
}

3.在api.js中管理接口

import {get,post} from './http.js';//引入get,post
//抛出
export function getList(){
	return get('api/app/recommend/appIndex') 
}

4.在组件中引入

import {getList} from '../request/api.js'
export default{
		data() {
			return {
				
			}
		},
		async mounted(){
			var res = await getList()
			console.log(res)
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值