如何封装axios form-data针对统一的formData入参方式

封装axios请求可以方便复用,降低代码耦合度,提高代码可维护性。在处理表单数据时,我们常常需要将数据以form-data的格式发送给后端处理。以下是封装axiosform-data请求的攻略:

步骤

第一步:引入相关依赖

需要安装两个依赖:qsform-data

npm install qs form-data --save

第二步:创建axios实例

在封装请求之前,我们需要先创建axios实例。

import axios from 'axios'

const baseURL = process.env.NODE_ENV === 'production' ? 'https://example.com' : 'http://localhost:3000'

const axiosInstance = axios.create({
  baseURL,
  timeout: 10000, // 超时时间
  withCredentials: true, // 跨域携带cookie
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
  }
})

export default axiosInstance

第三步:封装请求方法

下面是封装postForm方法的完整代码。

import axiosInstance from './axios'
import qs from 'qs'
import FormData from 'form-data'

export function postForm(url, data) {
  const form = new FormData()
  for (const key in data) {
    form.append(key, data[key])
  }

  return axiosInstance({
    method: 'POST',
    url,
    data: form,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

第四步:调用请求方法

可以像以下这样调用封装好的postForm方法。

import { postForm } from './api'

const data = {
  name: '张三',
  age: 18
}

postForm('/user/create', data)
  .then(response => {
    console.log(response.data)
  })
  .catch(error => {
    console.log(error)
  })

示例

下面是两个示例,以更加具体地说明如何使用form-data格式发送表单数据。

示例一:上传文件

上传文件时,我们通常需要使用form-data格式发送数据。以下是一个简单的示例,上传一个文件并返回文件的URL。

export function uploadFile(file) {
  const data = new FormData()
  data.append('file', file)

  return axiosInstance.post('/file/upload', data, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

示例二:提交表单数据

以下是一个简单的示例,演示如何以form-data格式提交表单数据,包括普通数据和文件。

import { postForm } from './api'

const data = {
  name: 'John',
  age: 28,
  photo: file // 文件对象
}

postForm('/user/create', data)
  .then(response => {
    console.log(response.data)
  })
  .catch(error => {
    console.log(error)
  })

postForm方法中,会将data转换为form-data格式,并发送给后端。注意,文件对象需要以文件表单项的方式添加到FormData中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何封装axios form-data针对统一的formData入参方式 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • react 实现图片正在加载中 加载完成 加载失败三个阶段的原理解析

    React 可以通过图片的三个状态(正在加载中、加载完成、加载失败)来通知用户图片是否正在加载中或加载是否失败等信息。在 React 中,实现图片加载的方法通常是使用 img 元素,我们可以给 img 元素绑定 load 和 error 事件。下面是完整攻略的示例说明。 实现图片正在加载中 当图片正在加载中时,可以展示一张占位图或者 loading 动画。使…

    other 2023年6月25日
    00
  • WinXP、Win7、Win8系统的电脑动态IP地址设置方法图文教程

    WinXP、Win7、Win8系统的电脑动态IP地址设置方法图文教程 1. 打开网络连接设置 首先,我们需要打开网络连接设置界面。在WinXP系统中,可以通过以下步骤打开: 单击\”开始\”按钮,选择\”控制面板\”。 在控制面板中,双击\”网络连接\”图标。 在Win7和Win8系统中,可以通过以下步骤打开: 单击\”开始\”按钮,选择\”控制面板\”。 …

    other 2023年7月30日
    00
  • pytorch实现mnist数据集的图像可视化及保存

    以下是关于PyTorch实现MNIST数据集的图像可视化及保存的完整攻略,包含两个示例说明: 1. 加载MNIST数据集 首先,我们需要使用PyTorch的torchvision模块加载MNIST数据集。示例代码如下: import torch from torchvision import datasets, transforms # 定义数据预处理 tr…

    other 2023年10月19日
    00
  • javascript中数组方法汇总

    Javascript中数组方法汇总 在Javascript中,数组(Array)是一个十分常用的数据类型。数组有许多内置方法可以用来操作它们。在这篇文章中,我们将详细介绍Javascript中常用的数组方法。 1. push方法 push方法向数组的末尾添加一个或多个元素,并返回新数组的长度。 语法 array.push(element1, …, ele…

    other 2023年6月25日
    00
  • synchronized优化

    synchronized优化的完整攻略 synchronized是Java中用于实现线程同步的关键字,可以保证多个线程对共享资源的访问顺序和互斥性。但是,在高并发场景下,synchronized的性能可能会成为瓶颈,因此需要进行优化。本文将介绍synchronized优化的完整攻略,包括使用锁粒度、使用CAS、使用读写锁、使用分段锁和两个示例说明。 使用锁粒…

    other 2023年5月9日
    00
  • shell for循环与数组应用介绍

    Shell for循环与数组应用介绍 Shell编程中的循环与数组是非常重要的知识点,它们能够极大的提高Shell脚本编程效率,本文将详细讲解Shell中的for循环与数组的应用。 Shell for循环 Shell中的for循环语法如下: for 变量名 in 列表 do 命令 done 变量名为循环计数器,列表则是要循环的数据集合,每次循环会取出一个元素…

    other 2023年6月25日
    00
  • vue监听scroll的坑的解决方法

    标题:Vue监听scroll的坑的解决方法 问题背景 在Vue的开发中,经常需要监听scroll事件以实现一些滚动相关的交互效果。但是,在使用Vue绑定scroll事件时,会出现一些坑。 问题描述 在Vue中通过v-on指令绑定scroll事件之后,发现绑定的函数并没有被触发,示例代码如下: <template> <div class=&q…

    other 2023年6月27日
    00
  • 详解vue.js中.native修饰符

    以下是关于“详解Vue.js中.native修饰符”的完整攻略: Vue.js简介 Vue.js是一款流行的JavaScript框架用于构建交互式的Web界面。Vue.js采用组件化的开发方式,可以将页面拆分成多个组件,提高的可维性和可重用性。 .native修饰符 在Vue.js中,可以使用修饰符来改变指令的行为。其中,.native饰符用于监听组件根元素…

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