axios封装处理接口

简介: axios封装处理接口

介绍


最近搭建了一个前后端分离的项目,后端基于SSM框架,前端基于vue全家桶,数据库使用的MySQL。前后端分离的项目交互时,最重要的就是接口(API),而axios正好可以对接口进行封装,从而使前端调用后端接口时非常方便。


开始


安装

npm install axios

封装接口时我们需要用到qs插件,qs是一个流行的查询参数序列化和解析库。可以将一个普通的object序列化成一个查询字符串,或者反过来将一个查询字符串解析成一个object,帮助我们查询字符串解析和序列化字符串。

npm install qs

接下来在src目录下新建utils文件,并在此目录下新建base.js以及api.js。


image.png


base.js


import axios from 'axios'
import qs from 'qs'
axios.interceptors.request.use(
    config => {
        config.method === 'post' ?
            config.data = qs.stringify({...config.data }) :
            config.params = {...config.params };
        config.headers['Content-Type'] = 'application/x-www-form-urlencoded';
        return config
    },
    err => {
        console.error('axios request 请求出错:', err)
        return Promise.reject(err)
    }
)
axios.interceptors.response.use(
    response => {
        if (response && response.data) {
            let data = response.data || {}
            if (data && (data['code'] === "201")) {
                //登录失效
            }
        }
        return response
    },
    err => {
        console.error('axios response 请求出错:', err)
        let res = {
            success: false,
            message: '系统错误,请重试!'
        }
        return Promise.resolve(res)
    }
)
export default axios


api.js


这里分别是get请求和post请求(带参),这里的api是在index.js中已经配置好的后端地址。


image.png


assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: {
      '/api': {
        target: 'ip地址/',  // 后台api
        changeOrigin: true,  //是否跨域
        https: true,
        pathRewrite: {
          '^/api': ''   //需要rewrite的,
        }
      }
    }
import axios from '../utils/base'
import QS from 'qs'
export const getData = data => {
    return axios({
        url: '/api/findAllRoomVue',
        method: 'get',
    })
};
export function Login(data) {
    return axios({
        url: '/api/loginClient',
        method: 'post',
        data: QS.stringify(data)
    })
}


前端界面


import { getData } from "../utils/api.js";
methods: {
    async getList() {
      let res = await getData();
      console.log(res)
      this.listGood=res.data
    }
}


相关文章
|
18天前
|
资源调度 JavaScript 前端开发
vue-element-admin 综合开发四:axios安装和封装、mock安装/学习/使用
这篇文章是关于如何在Vue项目中使用axios进行网络请求、二次封装axios以及使用mockjs模拟响应数据的教程。
55 1
vue-element-admin 综合开发四:axios安装和封装、mock安装/学习/使用
|
2月前
封装axios的get、post方法
本文介绍了如何封装axios的get和post方法,并展示了具体的代码实现,包括使用axios创建实例、设置请求拦截器以及定义get和post函数。
79 2
|
2月前
|
JavaScript 前端开发 开发者
vue中使用axios请求post接口,请求会发送两次
vue中使用axios请求post接口,请求会发送两次
|
18天前
vue3 + Ts 中 使用 class 封装 axios
【10月更文挑战第8天】
76 1
|
21天前
vue3 + Ts 中 使用 class 封装 axios
【10月更文挑战第5天】
109 1
|
13天前
|
前端开发 JavaScript API
自己动手封装axios通用方法并上传至私有npm仓库:详细步骤与实现指南
自己动手封装axios通用方法并上传至私有npm仓库:详细步骤与实现指南
51 0
|
2月前
axios全局做节流,解决多次点击导致多次请求接口
本文介绍了如何在Axios请求中实现全局节流,以防止用户快速多次点击导致重复发送相同请求的问题。
60 2
|
2月前
|
JavaScript 前端开发
vue配合axios连接express搭建的node服务器接口_简单案例
文章介绍了如何使用Express框架搭建一个简单的Node服务器,并使用Vue结合Axios进行前端开发和接口调用,同时讨论了开发过程中遇到的跨域问题及其解决方案。
43 0
vue配合axios连接express搭建的node服务器接口_简单案例
|
27天前
|
JavaScript API 开发工具
vue尚品汇商城项目-day02【11.对axios二次封装+12.接口统一管理】
vue尚品汇商城项目-day02【11.对axios二次封装+12.接口统一管理】
28 0
|
3月前
|
JSON JavaScript 前端开发
【Vue面试题二十四】、Vue项目中有封装过axios吗?主要是封装哪方面的?
这篇文章讨论了在Vue项目中封装axios的最佳实践,包括设置接口请求前缀、请求头、状态码、请求方法的封装,以及如何使用请求和响应拦截器来处理token和响应状态,从而简化HTTP请求的配置和错误处理,提高代码的可维护性。
【Vue面试题二十四】、Vue项目中有封装过axios吗?主要是封装哪方面的?