vue axios封装以及API统一管理

本文涉及的产品
.cn 域名,1个 12个月
简介: vue axios封装以及API统一管理


在vue项目中,每次和后台交互的时候,经常用到的就是axios请求数据,它是基于promise的http库,可运行在浏览器端和node.js中。当项目越来越大的时候,接口的请求也会越来越多,怎么去管理这些接口?多人合作怎么处理?只有合理的规划,才能方便往后的维护以及修改,

 

安装

安装axios依赖包

cnpm install axios --save
引入

一般会我会在项目src中新建一个untils目录,其中base用于管理接口域名,http处理请求拦截和响应拦截,user.js负责接口文件(接口文件可以自己新建一个文件夹,然后放对应的接口文件)

1.在http.js文件中,用于处理axios中对请求拦截和响应拦截做处理,token处理,并引入element-ui加载动画。

import axios from 'axios'
import { Loading, Message } from 'element-ui'
import router from '../router/index.js'

let loading

function startLoading() {

loading = Loading.service({
    lock: true,
    text: '加载中....',
    background: 'rgba(0, 0, 0, 0.7)'
})

}

function endLoading() {

loading.close()

}

// 请求拦截
axios.interceptors.request.use(

(confing) => {
    startLoading()

    //设置请求头
    if (localStorage.eToken) {
        confing.headers.Authorization = localStorage.eToken
    }

    return confing
},
(error) => {
    return Promise.reject(error)
}

)

//响应拦截

axios.interceptors.response.use(

(response) => {
    endLoading()
    return response
},
(error) => {
    Message.error(error.response.data)
    endLoading()

    // 获取状态码
    const { status } = error.response

    if (status === 401) {
        Message.error('请重新登录')
            //清楚token
        localStorage.removeItem('eToken')
            //跳转到登录页面
        router.push('/login')
    }
    return Promise.reject(error)
}

)
export default axios
通过创建一个axios实例然后export default方法导出,这样使用起来更灵活一些。

2.在base.js文件中,用于管理我们请求接口的域名,极大的方便后期的维护和开发,如果以后更改域名地址或者增加域名,只需要修改这样就可以了、

//域名统一管理

const base = {

url: 'http://localhost:5001/api'

}
export default base
3.接口统一管理,每一个js文件都对应一个功能请求接口管理,在下面实现get,post的实例请求,并且引入qs序列化的处理,使用之前先安装qs

安装qs
cnpm install qs --save
  3.1:更加模块化管理

  3.2:更方便多人开发,有效减少解决命名冲突

  3.3:处理接口域名有多个情况

import axios from '../untils/http'
import QS from 'qs'
import base from './base'

/**

  • post方法,对应post请求
  • @desc注册请求
  • @param {String} url [请求的url地址]
  • @param {Object} params [请求时携带的参数]

*/
export function userRejister(data) {

return axios({
    url: `${base.url}/users/register`,
    method: 'post',
    data: QS.stringify(data)
})

}
/**

  • get方法,对应get请求
  • @desc登录请求
  • @param {String} url [请求的url地址]
  • @param {Object} params [请求时携带的参数]

*/
export function userInfo() {

return axios({
    url: `${base.url}/profile/all`,
    method: 'get'
})

}
4.使用。以上工作做完之后,只需要在我们需要发送请求接口的文件,引入

本实例中引入案例
import { userRejister} from "../../untils/user.js";
发送请求axios请求

async submitForm(formName) {

  this.$refs[formName].validate(valid => {
    if (valid) {
      //发送请求return new Promise((resolve, reject) => {
        userRejister(this.registerUser)
          .then(response => {
            console.log(response);
            resolve();
          })
          .catch(error => {
            reject(error);
          });
      });
    } else {
      console.log("error submit!!");
      return false;
    }
  });
},

以上都是这篇文章所有的说明,如果喜欢,可以多多关注一下

目录
相关文章
|
1月前
|
资源调度 JavaScript API
vue3封装城市联动组件
vue3封装城市联动组件
200 63
|
18天前
封装axios的get、post方法
本文介绍了如何封装axios的get和post方法,并展示了具体的代码实现,包括使用axios创建实例、设置请求拦截器以及定义get和post函数。
43 2
|
25天前
|
缓存 测试技术 API
API的封装步骤流程
API封装流程是一个系统化的过程,旨在将内部功能转化为可复用的接口供外部调用。流程包括明确需求、设计接口、选择技术和工具、编写代码、测试、文档编写及部署维护。具体步骤为确定业务功能、数据来源;设计URL、请求方式、参数及响应格式;选择开发语言、框架和数据库技术;实现数据连接、业务逻辑、错误处理;进行功能、性能测试;编写详细文档;部署并持续维护。通过这些步骤,确保API稳定可靠,提高性能。
|
2月前
Vue3——基于tdesign封装一个通用的查询组件
Vue3——基于tdesign封装一个通用的查询组件
97 3
|
2月前
|
前端开发 JavaScript 安全
入门Vue+.NET 8 Web Api记录(一)
入门Vue+.NET 8 Web Api记录(一)
93 4
|
2月前
|
JavaScript API 开发者
vue自定义Hooks函数使用和封装思想
【8月更文挑战第8天】vue自定义Hooks函数使用和封装思想
113 1
|
16天前
|
API PHP
ThinkPHP 通用的API格式封装
本文介绍了在ThinkPHP框架中如何统一封装API返回格式的方法,包括创建状态码枚举类、编写统一格式化函数以及在BaseController和Error控制器中重写`__call`方法来处理不存在的方法或控制器调用,以实现统一的错误处理和返回格式。
ThinkPHP 通用的API格式封装
|
19天前
|
JavaScript
Vue2.0、Vue3.0分别使用v-model封装组件[Vue必会]
本文介绍了在Vue 2和Vue 3中如何使用`v-model`来实现组件间的双向数据绑定,包括在Vue 2中使用`value`和`input`事件,以及在Vue 3中使用`modelValue`和`update:modelValue`事件的方法。
72 22
|
2月前
|
JavaScript 测试技术 持续交付
在vue中封装第三方组件的标准
在Vue.js项目中,第三方组件库虽能提升开发效率与用户体验,但直接使用可能导致代码结构混乱和样式冲突。为此,本文介绍如何优雅封装第三方组件,包括封装的目的、准备步骤、具体实现方法及处理样式冲突的策略。通过创建专门的封装组件、设计简洁的接口以及有效地管理样式,不仅能统一应用风格,还能显著提高代码的可维护性和可复用性。此外,还提供了封装Element UI Button组件的具体示例,帮助开发者更好地理解封装流程。
|
21天前
|
JSON 资源调度 JavaScript
Vue框架中Ajax请求的实现方式:使用axios库或fetch API
选择 `axios`还是 `fetch`取决于项目需求和个人偏好。`axios`提供了更丰富的API和更灵活的错误处理方式,适用于需要复杂请求配置的场景。而 `fetch`作为现代浏览器的原生API,使用起来更为简洁,但在旧浏览器兼容性和某些高级特性上可能略显不足。无论选择哪种方式,它们都能有效地在Vue应用中实现Ajax请求的功能。
18 4

热门文章

最新文章

  • 1
    若依修改,若依如何发送请求---王清江07,axios的请求在request.js文件中,若依发送GET请求,必须用param
    81
  • 2
    axios发送post请求,如何接受和返回一个axios的字段,解决bug的方法,困难的事情先从简单做起,先从发送一个axios的post请求做起,解决方法查别人的资料,查看F12看network就行
    34
  • 3
    文本,前后端数据交互,简单请求,如何去给data数据赋值,在mounted()里赋值,利用axios发送的请求,res就是数据集,就是后端的数据,this.users = res.data.data
    40
  • 4
    Request failed with status code 400,使用axios.post要发送参数,认真比对原项目,看看有没有忘记什么?
    69
  • 5
    vue3 在 watchEffect 里中断未完成的 axios 请求(只保留最后一次请求的方法---连续点击查询按钮的优化)
    75
  • 6
    前后端数据交互.js文件的axios的写法,想要往后端发送数据,页面注入API,await的意思是同步等待服务器数据,并返回,axios注入在其他页面,其他页面调用的时候,同步作用
    37
  • 7
    前后端数据交互,API风格组合式API和选项式API,setup是一个标识,组合式编写的意思,使定义count.value的值自增的写法,组合式API使用axios的写法,ref定义响应数据写法
    21
  • 8
    网页设计,若依项目修改(It must be done)02------axios封装后发get请求,axios请求的位置在呢?
    37
  • 9
    前后端数据交互之axios的路径怎样找?axios的路径是那个,是你打开Tomcat之后,出现的路径+你项目写的接口路径
    27
  • 10
    数据交互,前后端数据请求,axios请求,对象结构的使用,E6的使用,结构赋值是什么?函数形参的obj如何,函数形参的obj就改成对象结构接收传入的数据对象
    19