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

yizhihongxing

封装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日

相关文章

  • 全屏背景:15个jQuery插件实现全屏背景图像或媒体

    全屏背景:15个jQuery插件实现全屏背景图像或媒体 作为一个网站的站长,你肯定想为你的网站添加一些令人惊叹的特性,比如设置一个动态的全屏背景来吸引用户的注意。在这篇文章中,我将为您介绍15个使用jQuery实现全屏背景图像或媒体的插件,这些插件都被广泛地使用于现代的网站设计之中。 1. Supersized Supersized是一个免费开源的jQuer…

    其他 2023年3月28日
    00
  • 详解Java构建树结构的公共方法

    详解Java构建树结构的公共方法攻略 构建树结构是在Java编程中常见的任务之一。本攻略将详细介绍如何使用Java构建树结构的公共方法。我们将使用递归算法来实现这个目标。 步骤1:定义树节点类 首先,我们需要定义一个树节点类,用于表示树中的每个节点。树节点类通常包含一个值和一个指向子节点的列表。 public class TreeNode { private…

    other 2023年8月6日
    00
  • 魔兽世界10.0暴雪默认界面微调wa 支持自定义修改界面

    以下是详细讲解“魔兽世界10.0暴雪默认界面微调wa支持自定义修改界面”的完整攻略。 一、简介 在魔兽世界的游戏过程中,使用默认的界面可能会有一些不方便的地方,因此我们可以使用wa来微调默认界面并支持自定义修改界面。 二、步骤 1. 下载并安装wa 首先我们需要下载wa并安装到我们的魔兽世界游戏中。 2. 导入wa插件 在wa插件的官方网站(https://…

    other 2023年6月25日
    00
  • Java for循环的几种用法分析

    Java for循环的几种用法分析 在Java中,for循环是一种常用的循环结构,用于重复执行一段代码。它提供了多种用法,可以根据不同的需求选择适合的方式。下面将详细介绍Java for循环的几种用法,并提供示例说明。 1. 基本的for循环 基本的for循环是最常见的形式,它由三个部分组成:初始化、条件判断和迭代操作。循环会在每次迭代时检查条件,只有条件为…

    other 2023年8月15日
    00
  • html中常用鼠标样式

    以下是“HTML中常用鼠标样式的完整攻略”的详细说明,包括过程中的两个示例说明。 HTML中常用鼠标样式的完整攻略 在HTML中,我们可以使用CSS来设置元素的样式,包括鼠标样式。以下是一份关于HTML中常用鼠标样式的完整攻略。 1. 鼠标样式基础知识 在开始设置鼠标样式之前,我们需要掌握一些基础知识,例如: CSS中的cursor属性,用于设置鼠标样式。 …

    other 2023年5月10日
    00
  • Win11重启快捷键是什么?Win11重启快捷键介绍

    下面我将为你详细讲解 Win11 重启快捷键及其介绍。 Win11 重启快捷键是什么? Win11 重启快捷键是一组按键,通过短时间内同时按下这些按键可以快速地重启电脑。具体的组合是:按下 Win键+Ctrl+Shift+B。 Win11 重启快捷键的介绍 Win11 重启快捷键的实际作用就是让操作系统重启。这个快捷键可以在一些特定场景下派上用场,比如当你的…

    other 2023年6月26日
    00
  • 新外星人17值得买吗?戴尔新外星人17寸笔记本全面评测图解

    很抱歉,作为文本模型,我无法以标准的markdown格式回答您的问题。但是,我可以为您提供一份详细的攻略,包含戴尔新外星人17寸笔记本的全面评测和图解,并提供两个示例说明。 戴尔新外星人17寸笔记本全面评测攻略 产品外观与设计 戴尔新外星人17寸笔记本采用了时尚的外观设计,具有独特的外星人系列风格。其机身采用高质量的材料制造,给人一种坚固耐用的感觉。键盘背光…

    other 2023年10月17日
    00
  • vue递归组件实现树形结构

    要实现树形结构,可以使用递归组件的方式,其中递归组件指的是自己调用自己的组件。 下面是实现树形结构的完整攻略: 1. 数据准备 首先需要准备好数据,至少需要有以下两个属性: id:唯一标识符,用来标识每一个节点; children:一个数组,包含当前节点下的子节点。 这样每个节点就可以像一个树一样组织起来。 示例数据如下: const data = { id…

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