vue axios的封装和调用

最近需要用到关于axios的封装和使用,下面就简单记录一下我的操作。如果有更简单的可以评论区告诉的。直接上代码!!!认真花三分钟看看,对于不会怎么封装axios的伙伴有一定的帮助,可以直接掌握封装思想和方法!!认真看认真看!!!!
该篇文章是在vue的情景下使用的
1.在某个目录下创建一个文件夹。建议在src下面新创建。同时创建一个api.js文件和httpHelper.js文件。
在这里插入图片描述

其中api.js是用来进行拦截的。因为每次往后端发送请求什么的,都需要拦截一下,看看能不能成功拦截或者是返回是否符合要求。
2.api.js文件

import axios from 'axios';//这个需要你自己去npm install axios进行安装
const axiosInit = axios.create({//创建一个axios实例
    baseURL:"http://localhost:8090",//基准URL,就是相同的那一部分
    time: 3000,//响应时间
})
//下面的是请求拦截
axiosInit.interceptors.request.use((config) => {
    // 请求成功,一般都需要在这里做一些配置,下面的是我自己加上token到请求头
    //如果本地缓存中存在后端发过来的token,就在请求头中添加token上去
    if (localStorage.getItem('token')) {//括号里面的token是你自己定义的,因为我在我的登录界面的时候,就把后端返回的token存在localStroage,同时命名为token,所以这里你们可以自己根据自己的项目进行修改。如果
        config.headers['token'] = localStorage.getItem('token');//添加上去请求头
    }
    return config;//通过,返回响应的拦截
}, (error) => {//出现错误
    return Promise.reject(error);//返回错误信息
}
)

//下面的是响应拦截
axiosInit.interceptors.response.use(
    (response) => {//如果后端返回成功,就执行{}里面的内容
        console.log(response);//打印一下后端返回的数据
        if(response.status == 200){//判断一下后端返回的数据中的状态码是不是200,如果是200,就执行下面的return
            return Promise.resolve(response);
        }else{//如果返回的状态码不是200,就返回错误的信息,同时也可以在这里定义其他的状态码,然后加上去
            return Promise.reject(response);
        }
    },
    (error) =>{//后端没有成功返回数据,就执行下面的return
        return Promise.reject(error);
    }
)

export default axiosInit;//把上面创建的实例暴露出去,方便等等我们在httpHelper.js文件进行引入

3.httpHelper.js文件

import axiosInit from '@/api/api'; //把上面的暴露出来的axionInit进行引入,这样就可以使用我们上面定义的拦截器

//封装get函数
export const get = (url,data) => {
    return axiosInit({
        url:url,
        method:'GET',
        params:data,
    })
}

//封装put函数
export const put = (url,data) => {
    return axiosInit({
        url:url,
        method:'PUT',
        data:data,
    })
}

//封装post函数
export const post = (url,data) => {
    return axiosInit({
        url:url,
        method:'post',
        data:data,
    })
}

//括号里面的url和data都是调用的时候传进来的参数
//我上面只是封装了常用的get、post、put请求方法,其他你们也可以自行封装。我这里不是采用默认导出的,因为需要什么就进行按需导入。如果默认导出的话,还得导出名字.post,个人不是很喜欢这种使用方法。

4.vue文件(就是需要用到方法的vue文件中)
这里就用一个登录的例子来说明

<template>
	//具体样式自行定义,这里就只是显示一个button,就是登录按钮
	//我采用的是element框架,要是不知道是啥的话,你们就把自行百度 button触发事件 
 	<el-button @click="confirm">登录</el-button>
</template>
<script>
//导入httpHelper文件
import {post,get,put} from '@/api/httpHelper.js';//from后面跟的是httpHelper.js文件的路径,你们自行修改
//下面的name,data什么的自行定义
methods:{
	confirm() {
      this.$refs.loginForm.validate((valid) => {
        if (valid) {
          //valid成功为true,失败为false
          //去后台验证用户名密码
          post("/user/login", this.loginForm)//调用按需导入的post方法,"/user/login"这个就是传到httpHelper.js中的url,this,loginForm就是把输入的账号密码作为参数同样传到httpHelper.js,httpHelper.js里面再进行发送到后端
            .then((res) => res.data)//数据过滤,只要后端返回的data数据
            .then((res) => {
              if (res.code == 200) {//其实这里可以不用判断状态码了。因为我们拦截器那里进行验证了,我只是贪好玩规范写一下
                // 把后端返回的数据存储在浏览器本地的缓存中
                // token是存储token的
                localStorage.setItem("token", res.data.token);//这里就是我前面说的把后端返回的token值存储在本地,同时命名为toke
                this.$router.replace("/Index");//满足条件就路由跳转
              } else {
                return false;
              }
            })
            .catch((err) => {
              ElMessage.error(err);//这里只是打印出来错误信息,你们也可以删掉
            });
        } else {
          return false;
        }
      });
    },
},
</script>

好,大功告成!如果你们看到这里的话,你们就已经会了axios的封装了!有不会的评论区说一下,我看到会及时回复!
代码就像是粥一样,需要用时间去熬出来的!!

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 我可以提供一些有关Vue Axios封装的建议。最重要的一点是,尽可能多地使用面向资源的API,这样可以最大程度地减少重复的代码。另外,您可以使用Vuex来管理您的状态,以便跨组件共享数据。此外,您还可以利用Vue Axios拦截器来处理全局性错误和请求。 ### 回答2: Vue Axios 封装可以提高代码复用性和可维护性,简化代码编写和维护过程。下面我来详细介绍一下: 1. 创建一个 axios 封装文件,比如 `http.js`,用于创建 axios 实例和封装请求方法。 ``` import axios from 'axios' // 创建 axios 实例 const instance = axios.create({ baseURL: 'http://api.example.com', // 设置基础URL timeout: 5000 // 设置请求超时时间 }) // 封装请求方法 export function get(url, params) { return instance.get(url, { params }) } export function post(url, data) { return instance.post(url, data) } export function put(url, data) { return instance.put(url, data) } export function del(url) { return instance.delete(url) } ``` 2. 在 Vue 项目中使用封装axios 请求方法。 ``` import { get, post, put, del } from '@/http' // 发送 GET 请求 get('/users', { page: 1, limit: 10 }).then(response => { console.log(response.data) }).catch(error => { console.log(error) }) // 发送 POST 请求 post('/login', { username: 'admin', password: '123456' }).then(response => { console.log(response.data) }).catch(error => { console.log(error) }) // 发送 PUT 请求 put('/users/1', { name: 'John' }).then(response => { console.log(response.data) }).catch(error => { console.log(error) }) // 发送 DELETE 请求 del('/users/1').then(response => { console.log(response.data) }).catch(error => { console.log(error) }) ``` 通过将请求方法封装成模块化的函数,可以在不同的页面和组件中重复使用,提高了代码复用性。同时,对于不同的请求方式(GET、POST、PUT、DELETE),只需要引入对应的函数即可,简化了代码编写过程。 此外,通过将 axios 实例创建和请求方法封装在一起,方便统一处理 baseURL、请求头、超时时间等设置。可以在 `http.js` 中对请求进行拦截、添加请求头、统一处理错误等。这样可以提高代码的可维护性,并且在请求出错时可以统一处理错误信息。 总之,Vue Axios 封装可以提高代码的可维护性和复用性,简化了代码编写过程,并且方便统一处理请求设置和错误处理。 ### 回答3: Vue axios封装是指将axios库用于发送HTTP请求的代码进行封装和抽象,以便在Vue项目中更方便地使用。这样可以减少重复的代码,提高开发效率,并且使代码结构更加清晰和易于维护。 封装的过程可以包括以下几个步骤: 1. 在Vue项目中创建一个单独的文件,例如`api.js`,用于封装axios请求的函数。 2. 在`api.js`中引入axios库,并初始化一个axios实例。 3. 在实例上设置一些默认配置,例如请求超时时间、请求拦截器和响应拦截器等。 4. 创建一个函数,例如`get`,`post`等,用于发送GET或POST请求。 5. 在这些请求函数中,可以根据需要设置请求的URL、参数、请求头等选项。 6. 可以通过axios的`interceptors`来拦截请求和响应,例如在发送请求前添加认证信息,或者在收到响应后进行统一的处理。 7. 在Vue项目的组件中,可以直接引入`api.js`并调用相关的函数来发送请求。 通过封装和抽象,可以使发送HTTP请求的代码变得更简洁和可复用。开发者可以直接调用封装好的函数来发送请求,而无需关注底层的细节。此外,当需要修改请求的一些配置或者添加统一的处理逻辑时,只需要在`api.js`中进行修改即可,而无需在整个项目中逐个修改。 总之,Vue axios封装可以提高代码的可维护性和可读性,减少重复代码的编写,并且使发送HTTP请求的代码更加简洁和易于使用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值