Vue Axios 请求方法的二次方装

简介

因为项目后端整体采用Restful api 进行设计,所以我们前端需要对axios的所有请求进行二次独立的封装,来满足后端接口的要求,所以,便对axios的get、post、put、delete等请求方式进行二次封装

// 对axios各种请求的二次封装
import $api from './apiConfig' //接口
import axios from './index' //请求
import qs from 'qs'

/**
 * 封装get方法
 * @param url
 * @param data
 * @returns {Promise}
 */
export function getRequest(url, params = {}) {
    return new Promise((resolve, reject) => {
        axios.get($api.api + url, {
                params: params
            })
            .then(response => {
                resolve(response.data);
            })
            .catch(err => {
                reject(err)
            })
    })
}

/**
 * 封装post formData 格式请求
 * @param url
 * @param data
 * @param isFromData
 * @returns {Promise}
 */
export function postRequest(url, data = {}, isFromData) {
    return new Promise((resolve, reject) => {
        if (isFromData) {
            axios.post($api.api + url, qs.stringify(data), {
                    headers: { "Content-Type": 'application/x-www-form-urlencoded; charset=UTF-8' }
                })
                .then(response => {
                    resolve(response.data);
                }, err => {
                    reject(err)
                })
        } else {
            axios.post($api.api + url, data, {
                headers: { "Content-Type": 'application/json' }
            }).then(response => {
                resolve(response.data)
            }), err => {
                reject(err)
            }
        }

    })
}


/**
 * 封装put 请求
 * @param url
 * @param data
 * @returns {Promise}
 */
export function putRequest(url, data = {}, isFromData) {
    return new Promise((resolve, reject) => {
        if (isFromData) {
            axios.put($api.api + url, qs.stringify(data), {
                    headers: { "Content-Type": 'application/x-www-form-urlencoded; charset=UTF-8' }
                }).then(response => {
                    resolve(response.data);
                }),
                err => {
                    reject(err)
                }
        } else {
            axios.put($api.api + url, data, {
                    headers: { "Content-Type": 'application/json' }
                }).then(response => {
                    resolve(response.data);
                }),
                err => {
                    reject(err)
                }
        }


    })

}
/**
 * 封装delete 请求
 * @param url
 * @param data
 * @returns {Promise}
 */
export function deleteRequest(url, params = {}) {
    return new Promise((resolve, reject) => {
        axios.delete($api.api + url, { params: params }).then(response => {
                resolve(response.data);
            }),
            err => {
                reject(err)
            }

    })

}

在main.js上引入,并将其挂载到Vue的prototype上,后面直接通过this调用。

// 获取请求方式的二次封装
import { getRequest, postRequest, putRequest, deleteRequest } from "./axios/request";
// 请求方式全局挂载--直接通过this调用
Vue.prototype.qs = Qs
Vue.prototype.getRequest = getRequest
Vue.prototype.postRequest = postRequest
Vue.prototype.putRequest = putRequest
Vue.prototype.deleteRequest = deleteRequest

使用

 this.getRequest("url", '参数')
        .then((res) => {
          console.log(res);
        })
        .catch((err) => {});
    },
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值