Axios 封装

请注意以下文件夹:

utils下的setToken.js 是token封装(封装 Token-CSDN博客),service.js 是axios封装。

Axios封装:

1.安装axios

在项目终端下 输入:

javascript 复制代码
npm install axios --save

2.在main.js全局引入axios

javascript 复制代码
import axios from 'axios'

Vue.prototype.$axios =axios   //挂载到原型,可以在全局使用

3.在service.js 写入以下内容:

javascript 复制代码
import axios from "axios";
import {getToken} from '@/utils/setToken.js'
import {Message} from 'element-ui'

const service = axios.create({
     baseURL:'/api' , // baseURL 会自动加在请求地址上
     timeout: 300
})

export async function request(method,url,headers, params,data){
    headers=headers||{};
    headers["token"] = getToken('token')
    return await new Promise((resolve, reject) => {
        service({url,method,params,data,headers})
        .then(res => {
            const resData=res.data
            resData.message=resData.message||'响应成功'; 
            // log('request',method,url,headers, params,data,resData);
            if(resData.code === 200) {
                resolve(resData);
                //  表格数据转换 
            }else{
                Message({message:resData.message, type:'warning'})
                reject(new Error(resData.message))
            }
        })
        .catch(err => {
            log('request',method,url,headers, params,data,err);
            Message({message: '响应失败' , type:'warning'})
            reject(err)
        })
    } )
}


/**
 * 发送GET请求
 * @param {String} url  请求地址
 * @param {Object} params 请求参数
 * @returns 
 */
export function  get(url, params){ 
    return request('get',url,{},params);
}
/**
 * 发送POST请求,没有报文体
 * @param {*} url 请求地址
 * @param {*} params 请求URL参数
 * @returns 
 */
export function post(url, params){ 
    return request('post',url,{},params);
}
/**
 * 发送POST请求,发送JSON报文体
 * @param {*} url 请求地址
 * @param {*} params 请求URL参数
 * @param {*} data 请求body参数
 * @returns 
 */
export function postJSON(url, params,data){ 
    return request('post',url,{'Content-Type': 'application/json;charset=UTF-8'},params,data);
}
/**
 * 送POST请求,发送From表单报文体
 * @param {*} url 请求地址
 * @param {*} params 请求URL参数
 * @param {*} data 请求body参数
 * @returns 
 */
export function postFrom(url, params,data){ 
    return request('post',url,{'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'},params,data);
}
/**
 * 发送POST请求,发送FromData报文体,上传文件可用
 * @param {*} url 请求地址
 * @param {*} params 请求URL参数
 * @param {*} data 请求body参数
 * @returns 
 */
export function postFromData(url, params,data){ 
    var fromDate=new FormData();
    for(var key in data){
        fromDate.append(key,data[key]);
    }
    return request('post',url,{'Content-Type': 'multipart/form-data'},params,fromDate);
}
/**
 * 发送delete请求
 * @param {*} url 请求地址
 * @param {*} params 请求URL参数
 * @returns 
 */
export async function del(url, params){ 
    return request('delete',url,{},params);
}
/**
 * 发送PUT请求,没有报文体
 * @param {*} url 请求地址
 * @param {*} params 请求URL参数
 * @returns 
 */
export function put(url, params){ 
    return request('put',url,{},params);
}

/**
 * 发送PUT请求,发送JSON报文体
 * @param {*} url 请求地址
 * @param {*} params 请求URL参数
 * @param {*} data 请求body参数
 * @returns 
 */
export function putJSON(url, params,data){ 
    return request('put',url,{'Content-Type': 'application/json;charset=UTF-8'},params,data);
}

/**
 * 送PUT请求,发送From表单报文体
 * @param {*} url 请求地址
 * @param {*} params 请求URL参数
 * @param {*} data 请求body参数
 * @returns 
 */
export function putFrom(url, params,data){ 
    return request('put',url,{'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'},params,data);
}

/**
 * 发送PUT请求,发送FromData报文体,上传文件可用
 * @param {*} url 请求地址
 * @param {*} params 请求URL参数
 * @param {*} data 请求body参数
 * @returns 
 */
export function putFromData(url, params,data){ 
    var fromDate=new FormData();
    for(var key in data){
        fromDate.append(key,data[key]);
    }
    return request('put',url,{'Content-Type': 'multipart/form-data'},params,fromDate);
}
  

例子:

相关推荐
鹏程十八少2 分钟前
破解Android悬浮窗遮挡无障碍服务难题:我在可见即可说上踩过的坑
android·前端·面试
Kapaseker5 分钟前
前端已死...了吗
android·前端·javascript
shejizuopin8 分钟前
基于JavaSSM+MySQL的实验室考勤管理系统设计与实现
java·mysql·vue·毕业设计·论文·springboot·实验室考勤管理系统设计与实现
m0_471199639 分钟前
【自动化】前端开发,如何将 Jenkins 与 Gitee 结合实现自动化的持续集成(构建)和持续部署(发布)
前端·gitee·自动化·jenkins
w***954910 分钟前
spring-boot-starter和spring-boot-starter-web的关联
前端
Moment14 分钟前
富文本编辑器技术选型,到底是 Prosemirror 还是 Tiptap 好 ❓❓❓
前端·javascript·面试
xkxnq19 分钟前
第二阶段:Vue 组件化开发(第 18天)
前端·javascript·vue.js
晓得迷路了20 分钟前
栗子前端技术周刊第 112 期 - Rspack 1.7、2025 JS 新星榜单、HTML 状态调查...
前端·javascript·html
怕浪猫23 分钟前
React从入门到出门 第五章 React Router 配置与原理初探
前端·javascript·react.js
jinmo_C++23 分钟前
从零开始学前端 · HTML 基础篇(一):认识 HTML 与页面结构
前端·html·状态模式