Vue Axios 请求方法的二次方装

news/2024/7/10 0:54:22 标签: ajax, restful, 接口, vue, javascript

简介

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

javascript">// 对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调用。

javascript">// 获取请求方式的二次封装
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

使用

javascript"> this.getRequest("url", '参数')
        .then((res) => {
          console.log(res);
        })
        .catch((err) => {});
    },

http://www.niftyadmin.cn/n/1318956.html

相关文章

企业发放的奖金根据利润提成。

#include <stdio.h>int main(){ /*企业发放的奖金根据利润提成。 利润(I)低于或等于10万元时&#xff0c; 奖金可提10%&#xff1b;利润高于10万元 &#xff0c;低于20万元时&#xff0c;低于10万元的 部分按10%提…

underscore.js 学习(二)

Array Functions 所有数组函数对参数对象一样适用。1.first _.first(array, [n]) 别名: head, take 返回array的第一个元素&#xff0c;设置了参数n&#xff0c;就返回前n个元素。 //_.first var r _.first([5, 4, 3, 2, 1]); console.log(r); //5 var r _.first([…

underscore.js 学习(三)

underscore.js 学习&#xff08;三&#xff09;

探秘Vue单文件组件中style中的scoped作用原理

简介 作为一名前端开发工程师&#xff0c;特别是用Vue进行开发的工程师而言相信对scoped都特别的熟悉&#xff0c;但是大家有没有想过、或者思考过scoped的原理到底是什么&#xff0c;我们为什么要给单文件组件的style标签加上scoped&#xff0c;这篇文章就和大家一起来探讨一下…

underscore.js 学习(四)

underscore.js 学习&#xff08;四&#xff09;

全站静态化技术

1、新闻单页静态化 设置tpl模板页&#xff0c;模板页里面有占位符&#xff0c;通过后台添加新闻&#xff0c;同时通过替换模板页生成一个新的新闻静态html页面&#xff0c;以供访问修改页面信息时&#xff0c;操作数据更新至数据库&#xff0c;同时更新html文件页面&#xff0c…

如何使用Vite构建前端项目以及Vite与webpack构建的区别(建议收藏~面试的时候可以装13)

文章目录解惑前言一、Vite是什么&#xff1f;简介特点二、如何使用Vite搭建前端项目1.使用2.解读总结解惑 相信点击进来的朋友都很好奇&#xff0c;这篇博客里面究竟分享&#xff08;吹嘘&#xff09;的什么技术&#xff0c;还一定要收藏&#xff0c;废话不多说&#xff0c;下…

underscore.js 学习(五)

underscore.js 学习&#xff08;五&#xff09;