封装axios

新建axios.js

const VueAxios={
	vm:{},
	install(Vue,router={},instance){
		if(this.installed){
			return;
		}
		this.installed=true
		if(!instance){
			console.error("you have to install axios")
			return;
		}

		Vue.axios=instance
		
		Object.defineProperties(Vue.propertype,{
			axios:{
				get:function get(){
					return instance;
				}
			},
			$http:{
				get:function get(){
				return instance;
				}
			}
		})
	}
}

export{VueAxios}

新建request.js

import Vue from 'vue'
import axios from 'axios'
import { VueAxios } from './axios'
import { Modal,notification } from 'ant-design-vue'

//创建axios实例
//每次打包时将baseURL设置为“”
const service = axios.create({
	baseURL:"",
	//请求超时
	timeout:10000,
})

const err=(error)=>{
	let e=error.toString()
	if(e.indexOf('timeout') != -1){
		notification.error({message:'系统提示',description:'请求超时'})
	}
	if(error.response){
		let data=error.reponse.data
		switch(error.response.status){
			case 403:
				notification.error({message:'系统提示',description:'拒绝访问',duration:3})
				break
			case 404:
				notification.error({message:'系统提示',description:'很抱歉,资源未找到',duration:3})
				break
			case 500:
				notification.error({message:'系统提示',description:'服务器错误'})
				break
			case 504:
				notification.error({message:'系统提示',description:'网络超时'})
				break
			default:
				notification.error({message:'系统提示',description:data.message,duration:3})
				break
			
		}
	}
	return Promise.reject(error)
}

service.interceptors.response.use((response)=>{
	return response.data
},err)

const installer = {
	vm:{},
	install(Vue.router={}){
		Vue.use(VueAxios,router,service)
	}
}

export{
	installer as VueAxios,
	service as axios
}

新建api文件
manage.js

import { axios } from 'request.js'

//post
export function postAction(url,timeout,parameter){
	return axios({
		url:url,
		methods:'post',
		data:parameter,
		timeout:timeout
	})
}

//get
export function getAction(url,timeout,parameter){
	return axios({
		url:url,
		methods:'get',
		data:parameter,
		timeout:timeout
	})
}

//post methods = post || put
export function httpActionJsonArr(url,parameter,method){
	return axios({
		url:url,
		methods:method,
		data:parameter,
		timeout:timeout,
		headers:{
			'Content-type':'application/json;charset=UTF-8',
			'dataType':'JSON'
		}
	})
}

api.js

import { postAction,getAction } from 'api/manage'

//例子
export getHost = (time,params)=>getAction('url',timeout,params)

使用:

import { getHost } from '/api/api'

gethost(){
	getHost(10000,{id:'11'}).then(res=>{
		
	})
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值