详解vue中axios请求的封装

yizhihongxing

下面我会详细讲解vue中axios请求的封装。

前言

在vue项目开发中,我们经常需要使用到axios进行数据请求。但是,每次使用axios都需要重复的书写请求代码,一方面增加了代码量,另一方面也容易造成代码的维护成本变高。

所以,我们需要将axios请求进行封装,以便于复用和维护代码。

封装步骤

1. 安装axios

在vue项目中,使用axios请求前,需要先安装axios。

使用npm安装:

npm install axios --save

使用yarn安装:

yarn add axios

2. 创建api.js文件

在src目录中创建一个api.js文件,这个文件将用于存放axios请求的封装。

3. 导入axios和Vue

在api.js文件中,需要导入axios和Vue:

import axios from 'axios'
import Vue from 'vue'

4. 创建axios实例

在api.js文件中,创建axios实例,并设置一些默认配置:

// 创建axios实例
const http = axios.create({
  baseURL: 'http://localhost:3000', // 接口的基础地址
  timeout: 10000 // 请求超时时间
})

// 添加请求拦截器
http.interceptors.request.use(config => {
  // 在发送请求之前做些什么
  return config
}, error => {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 添加响应拦截器
http.interceptors.response.use(response => {
  // 对响应数据做点什么
  return response
}, error => {
  // 对响应错误做点什么
  return Promise.reject(error)
})

export default http

上面的代码中,我们创建了一个axios实例,并设置了接口的基础地址为http://localhost:3000,超时时间为10秒。同时,我们为这个实例添加了请求拦截器和响应拦截器,这样我们就可以在请求和响应中进行一些公共的操作,比如添加token。

5. 封装get请求

在api.js文件中,我们封装一个get请求的方法:

export function get(url, params) {
  return new Promise((resolve, reject) => {
    http.get(url, { params })
      .then(response => {
        // 成功返回
        resolve(response.data)
      })
      .catch(error => {
        // 失败返回
        reject(error)
      })
  })
}

上面的代码中,我们封装了一个get请求的方法,它接受两个参数:请求的地址和请求的参数。在方法内部,我们使用axios实例的get方法发送请求,并通过Promise的resolve和reject方法处理请求的结果。

6. 封装post请求

在api.js文件中,我们封装一个post请求的方法:

export function post(url, data) {
  return new Promise((resolve, reject) => {
    http.post(url, data)
      .then(response => {
        // 成功返回
        resolve(response.data)
      })
      .catch(error => {
        // 失败返回
        reject(error)
      })
  })
}

上面的代码中,我们封装了一个post请求的方法,它接受两个参数:请求的地址和请求的参数。在方法内部,我们使用axios实例的post方法发送请求,并通过Promise的resolve和reject方法处理请求的结果。

7. 在组件中使用封装的请求

在vue组件中,我们可以直接使用上面封装的get和post方法来发送请求。下面是一个实例:

<template>
  <div>
    <ul>
      <li v-for="(item, index) in list" :key="index">{{ item }}</li>
    </ul>
  </div>
</template>

<script>
  import { get } from '@/api'

  export default {
    name: 'App',

    data: () => ({
      list: []
    }),

    created () {
      this.getList() // 页面刚刚加载时就调用列表数据
    },

    methods: {
      getList () {
        get('/list')
          .then(res => {
            this.list = res.list // 将请求到的数据赋值给组件的list属性
          })
          .catch(err => {
            console.log(err)
          })
      }
    }
  }
</script>

在上面的实例中,我们在组件的methods中定义了一个getList方法,用来请求接口中的list数据。通过调用封装的get方法获取到数据,然后将数据赋值给组件的list属性,最后渲染到页面上。

总结

到这里,我们就完成了vue中axios请求的封装。通过这样的封装,我们可以减少代码的重复书写,提高开发效率,并且这样的封装也更加利于代码的维护。在实际项目中,我们可以按照这样的思路继续进行更深入的封装,以适应不同的需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解vue中axios请求的封装 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 前端面试之vue2和vue3的区别有哪些

    下面是“前端面试之vue2和vue3的区别有哪些”的完整攻略。 1. Vue2与Vue3的区别 Vue3相比于Vue2在性能、API以及组合式API等方面做了很多的优化和改进。 1.1 性能 Vue3在渲染性能方面做出了很多的调整,如通过编译器对hr函数进行内联处理、优化模板中的静态内容、通过Fragments(片段)降低内存使用等。同时,Vue3还引入了响…

    Vue 2023年5月29日
    00
  • Vue中如何使用Map键值对传参详析

    首先,Vue中可以使用Map来实现键值对传参。在组件中使用Map可以让我们更灵活的掌控组件之间的传参。下面,我们就一起来详细讲解Vue中如何使用Map键值对传参。 Map的基本概念 Map是ES6中提供的一种新的数据类型,它是一组键值对的集合,其中每个键都是唯一的。Map对象是可以迭代的,它的迭代顺序就是插入的顺序。这意味着,当我们迭代时,Map对象能够按照…

    Vue 2023年5月28日
    00
  • Vue 2源码解析Parse函数定义

    那么让我们开始讲解“Vue 2源码解析Parse函数定义”的完整攻略。 标题1:Vue 2源码解析Parse函数定义 标题2:什么是Parse函数 在Vue 2的源代码中,Parse函数是用于将字符串模板转换为AST的一个函数。 当我们在Vue应用程序中编写模板时,这些模板都会被转换为VNode,而VNode本质上是一个JavaScript对象,它们构成了V…

    Vue 2023年5月27日
    00
  • Vuex拿到state中数据的3种方式与实例剖析

    来详细讲解“Vuex拿到state中数据的3种方式与实例剖析”。 1. 3种获取state数据的方式 Vuex中,我们可以通过以下3种方式来获取state中的数据: 1.1 在组件中通过$store.state.xxx获取 通过在组件中访问$store.state.xxx,可以获取到store中某个模块的state数据,举个例子:如果我们想拿到store中名…

    Vue 2023年5月28日
    00
  • vscode vue 文件模板的配置方法

    下面我将对“vscode vue 文件模板的配置方法”进行完整的讲解,包括配置步骤、示例说明等内容。 配置方法 打开 VS Code,点击左侧最后一个 扩展 图标,搜索并安装拓展 Vue VSCode Snippets 在 VS Code 中新建一个 .vue 文件 使用快捷键 Ctrl+Shift+P 或者 Cmd+Shift+P 打开命令面板,输入 Pr…

    Vue 2023年5月28日
    00
  • vue.js入门教程之计算属性

    下面是关于“vue.js入门教程之计算属性”的完整攻略: 什么是计算属性 计算属性是Vue.js的一个重要特性,它能够对绑定的数据进行计算,然后返回一个新的值。 Vue.js官网对计算属性的介绍: 计算属性是基于它们的响应式依赖进行缓存的。只在相关响应式依赖发生改变时它们才会重新求值。这就意味着只要message没有发生改变,多次访问计算属性vm.rever…

    Vue 2023年5月27日
    00
  • vue-cli项目使用mock数据的方法(借助express)

    以下是详细讲解“vue-cli项目使用mock数据的方法(借助express)”的完整攻略。 前置知识 在讲解具体的实现方法之前,需要先了解一些前置知识: vue-cli:Vue.js 的官方脚手架,可用于快速搭建 Vue.js 项目 mock.js:一个用于生成随机数据的库,可生成各种类型的数据 express.js:一个用于搭建 web 服务器的库,可用…

    Vue 2023年5月28日
    00
  • Vue实现自定义字段导出EXCEL的示例代码

    下面我将详细讲解“Vue实现自定义字段导出EXCEL的示例代码”的完整攻略。 1. 使用第三方库 实现Vue自定义字段导出Excel的方式,可以使用一些第三方库,例如FileSaver.js,xlsx等。通过使用这些库,我们可以将Vue实例中的表格数据导出为Excel表格。 2. 导出Excel代码 以下是一个简单的Vue组件,它展示了如何使用xlsx和Fi…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部