封装 axios+promise通用请求函数操作

yizhihongxing

封装 axios+promise 通用请求函数可以提高代码的复用性和可维护性,下面详细讲解一个完整的攻略。

1. 安装 axios

使用 npm 安装 axios:

npm i axios

2. 创建请求函数

import axios from 'axios'

/**
 * 封装 axios+promise 通用请求函数
 * @param {string} url - 请求地址
 * @param {object} [params] - 请求参数
 * @param {string} [method='get'] - 请求方法
 * @returns {Promise} - 返回一个 Promise 对象
 */
export function request(url, params = {}, method = 'get') {
  return new Promise((resolve, reject) => {
    axios({
      url,
      method,
      params,
    })
      .then((response) => {
        resolve(response.data)
      })
      .catch((error) => {
        reject(error)
      })
  })
}

该函数接受三个参数,分别是请求地址、请求参数和请求方法。返回一个 Promise 对象,成功时返回数据,失败时返回一个错误对象。

3. 使用请求函数

使用封装好的请求函数,发送请求,例如:

// 发送 get 请求
request('/api/list', { page: 1 }).then((data) => {
  console.log(data)
})

// 发送 post 请求
request('/api/add', { name: '张三', age: 22 }, 'post').then((data) => {
  console.log(data)
})

4. 封装请求拦截器和响应拦截器

import axios from 'axios'

const instance = axios.create({
  baseURL: '/api',
  timeout: 5000,
})

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

/**
 * 响应拦截器
 */
instance.interceptors.response.use(
  (response) => {
    // 对响应数据做点什么
    return response.data
  },
  (error) => {
    // 对响应错误做点什么
    console.log(error)
    return Promise.reject(error)
  }
)

/**
 * 封装 axios+promise 通用请求函数
 * @param {string} url - 请求地址
 * @param {object} [params] - 请求参数
 * @param {string} [method='get'] - 请求方法
 * @returns {Promise} - 返回一个 Promise 对象
 */
export function request(url, params = {}, method = 'get') {
  return new Promise((resolve, reject) => {
    instance({
      url,
      method,
      params,
    })
      .then((response) => {
        resolve(response)
      })
      .catch((error) => {
        reject(error)
      })
  })
}

这段代码中,我们创建了一个 axios 实例,并设置了一些默认选项(baseURLtimeout),然后通过拦截器来处理请求和响应,最后使用封装好的请求函数发送请求。

5. 示例说明

示例一:获取用户列表

// 发送 get 请求
request('/api/user/list', { page: 1 }).then((data) => {
  console.log(data)
})

假设我们的后端 API 接口提供了一个获取用户列表的接口 /api/user/list,需求是从第一页开始获取用户列表,每页显示 10 条。我们可以使用如上代码来发送一个 GET 请求。

示例二:用户注册

// 发送 post 请求
request('/api/user/register', { username: '张三', password: '123456' }, 'post').then((data) => {
  console.log(data)
})

假设我们的后端 API 接口提供了一个用户注册的接口 /api/user/register,需求是给我们提供一个用户名和密码,然后注册账号。我们可以使用如上代码来发送一个 POST 请求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:封装 axios+promise通用请求函数操作 - Python技术站

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

相关文章

  • Springboot+Netty+Websocket实现消息推送实例

    这里是“Springboot+Netty+Websocket实现消息推送实例”的详细攻略,主要步骤包括搭建项目、实现Netty的WebSocket服务、前端页面的制作和测试。 一、搭建项目 创建一个SpringBoot项目 在pom.xml文件中添加Netty和WebSocket的依赖(示例见下) xml <dependency> <gro…

    Vue 2023年5月28日
    00
  • vue项目中请求数据特别多导致页面卡死的解决

    针对“vue项目中请求数据特别多导致页面卡死的解决”的问题,我们可以采用以下的解决方案: 1. 分页查询 在使用vue进行数据交互过程中,我们可以采用分页查询的方式,将数据进行分段展示,以避免一次性请求数据过多导致页面卡死。在实际开发中,我们可以将数据进行分页处理,控制每次请求的数据量,最终将数据分批渲染到页面上。下面是一个示例的代码: // 数据分页处理 …

    Vue 2023年5月28日
    00
  • 利用webstrom调试Vue.js单页面程序的方法教程

    下面我将为你讲解“利用WebStorm调试Vue.js单页面程序的方法教程”。 环境准备 首先,需要你已经安装了WebStorm,以及Node.js和Vue CLI。 创建Vue.js单页面应用程序 打开WebStorm并创建一个新项目; 在终端中输入以下命令,使用Vue CLI创建一个Vue.js单页面应用程序: vue create myapp 在创建过…

    Vue 2023年5月27日
    00
  • 详解Vue中watch的详细用法

    下面我就详细讲解一下“详解Vue中watch的详细用法”。 什么是watch 在Vue.js中,watch是一个非常有用的特性。他允许你在监测到数据的变化时做出相应的响应。watch可以监测一个特定的属性,如果这个属性的值发生变化,就会调用一段特定的函数。 watch的基本用法 下面,我们先来看一下watch的基本用法。在Vue实例中可以通过$watch方法…

    Vue 2023年5月28日
    00
  • Vue批量图片显示时遇到的路径被解析问题

    在Vue中批量显示图片时,由于图片路径的解析会存在一些问题。在这里,我会为大家讲解一些常见的解决方法和技巧。我的攻略包括以下内容: 使用require来加载图片 使用public文件夹存放图片 1. 使用require来加载图片 对于小型项目来说,我们可以使用require来加载图片。这种方法非常简单,只需要在组件文件中使用require即可,如下所示: &…

    Vue 2023年5月27日
    00
  • vant4 封装日期段选择器的实现

    下面是“vant4 封装日期段选择器的实现”的完整攻略: 1. 前置知识 在开始讲解如何封装日期段选择器前,需要先了解两个重要的概念:组件和插槽。 组件 组件是 Vue 中最为核心的概念之一,它们可以扩展 HTML 的能力,使得我们可以封装可复用的代码,并提高代码的可维护性。 在 Vue 中,我们可以使用 Vue.component() 方法来注册一个全局组…

    Vue 2023年5月29日
    00
  • 前端面试之vue2和vue3的区别有哪些

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

    Vue 2023年5月29日
    00
  • vue项目环境搭建 启动 移植操作示例及目录结构分析

    下面就来详细讲解一下“vue项目环境搭建 启动 移植操作示例及目录结构分析”的攻略。 1. 环境搭建 在开始开发 Vue 项目之前,需要先搭建好相应的环境,具体步骤如下: 1.1 安装 Node.js 在 Node.js 官网下载最新版的 Node.js 后进行安装,这里不做过多介绍。 1.2 安装 Vue CLI Vue CLI 是 Vue 的脚手架工具,…

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