vue中 axios封装(后期发现有一些问题,能正确执行,但是问题还没修复,请参考慎用)

javascript环境下:

import axios from 'axios'

/**
 * 2019/05/15 06:25 pm
 * by zjzuo
 * axios
 */

axios.defaults.timeout = 6000;

/**
 * @function fetch()  axios的get请求
 * @arguments { url, params} 
 * @param {String} url 请求地址 baseURL+url, example: '/login'
 * @param {JSON} params  请求附加数据{ xx : '' }
 * @returns {Promise} Promise对象,success: res.data;fail:err
 */

export function fetch(url,params={}){
    return new Promise(( resolve,reject ) => {
        axios.get( url, {params:params}).then(res => {
            resolve(res.data);
        }).catch(err =>{
            reject(err);
        })
    })
}

/**
 * @function post axios封装post请求
 * @param {string} url 请求地址
 * @param {JSON} params 传递参数
 * @returns {Promise} promise对象
 */

export function post(url,params={}){
    return new Promise((resolve,reject)=>{
        axios.post(url,params).then((res)=>{
            resolve(res.data);
        }).catch(err =>{
            reject(err);
        })
    })
}

typescript 环境下

import axios from 'axios'

/**
 * 2019/05/15 06:25 pm
 * by zjzuo
 * axios
 */

axios.defaults.timeout = 6000;
//baseurl 未设置,可以设置成你自己的



/**
 * @function fetch()  axios的get请求
 * @arguments { url, params} 
 * @param {String} url 请求地址 baseURL+url, example: '/login'
 * @param {JSON} params  请求附加数据{ xx : '' }
 * @returns {Promise} Promise对象,success: res.data;fail:err
 */

export function fetch(url:string,params={}){
    return new Promise(( resolve,reject ) => {
        axios.get( url, {params:params}).then(res => {
            resolve(res.data);
        }).catch(err =>{
            reject(err);
        })
    })
}

/**
 * @function post axios封装post请求
 * @param {string} url 请求地址
 * @param {JSON} params 传递参数
 * @returns {Promise} promise对象
 */

export function post(url:string,params={}){
    return new Promise((resolve,reject)=>{
        axios.post(url,params).then((res)=>{
            resolve(res.data);
        }).catch(err =>{
            reject(err);
        })
    })
}

然后在main.js/main.ts中配置全局引用

//main.js or main.ts都可以使用下面的代码

import {fetch,post} from '@utils/axios';  //@utils: src/utils/ 具体请看我写的别名设置博客里面提到过

Vue.prototype.$get = fetch;
Vue.prototype.$post = post;

//这样过后,在别的vue组件中要使用post和get请求就可以使用 

this.$get('url',data).then(res=>{
	//success TO DO
	
}).catch(_=>{
	//fail TO DO
	
})

 和

this.$post(‘url’,data)...和get一样的调用方式

可以看到js和ts代码差不多,唯一区别就是ts我的参数带了类型,不然会报错。

有一些promise的遗留问题,请求可以

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值