post请求设置表单form-data格式的几种方式

这篇具有很好参考价值的文章主要介绍了post请求设置表单form-data格式的几种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我用默认的post方法发送数据的时候发现后端获取不到数据,然而在network中看到参数是的确传出去的了。而且用postman测试的时候也是可以的,比较了下两个的不同发现是postman使用的是form-data格式,于是用form-data格式再次请求,发现OJBK

这两种格式都是无法使用的:

post请求设置表单form-data格式的几种方式

 post请求设置表单form-data格式的几种方式

方法一:配置transformRequest

缺点:其他请求格式的数据也会被重新格式化(PUT,PATCH)

import axios from "axios"  //引入

//设置axios为form-data
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defaults.headers.get['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defaults.transformRequest = [function (data) {
    let ret = ''
    for (let it in data) {
      ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
    }
    return ret
}]


//然后再修改原型链
Vue.prototype.$axios = axios

还有这种直接引用的方式:

axios({
   method: 'post',
   url: 'http://localhost:8080/login',
   data: {
      username: this.loginForm.username,
      password: this.loginForm.password
   },
   transformRequest: [
      function (data) {
         let ret = ''
         for (let it in data) {
            ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
         }
         ret = ret.substring(0, ret.lastIndexOf('&'));
         return ret
      }
    ],
    headers: {
       'Content-Type': 'application/x-www-form-urlencoded'
    }
})

方法二:添加请求拦截器,对症下药(推荐)

所有主要浏览器都支持 encodeURIComponent() 函数

在封装好的axios里添加以下代码:

//添加请求拦截器
axios.interceptors.request.use(
	config => {
		//设置axios为form-data 方法2
		if (config.method === 'post') {
			let data = ''
			for (let item in config.data) {
				if (config.data[item])
					data += encodeURIComponent(item) + '=' + encodeURIComponent(config.data[item]) + '&'
			}
			config.data = data.slice(0, data.length - 1)
		}
		return config;
	},
	error => {
		console.log("在request拦截器显示错误:", error.response)
		return Promise.reject(error);
	}
);

 这是现在的格式

post请求设置表单form-data格式的几种方式

 文章来源地址https://www.toymoban.com/news/detail-507904.html

到了这里,关于post请求设置表单form-data格式的几种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java请求调用参数格式为form-data类型的接口

    接口参数使用postman调用如图所示,只能使用form-data格式调用 使用java代码发送http请求实现此种方式的接口调用 特别说明:form的Content-Type属性为编码方式 常用有两种 :application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。 x-www-form-urlencoded :当action为

    2024年02月12日
    浏览(44)
  • requests 库:发送 form-data 格式的 http 请求 (python)

    requests官方网站地址 requests_toolbelt Python自动化 requests 库:发送 form-data 格式的 http 请求 requests-toolbelt · PyPI

    2024年02月03日
    浏览(40)
  • spring-boot 接收form表单 多文件加多字段数据(postman在form-data格式下传数组和集合)

    前言 该博客多用于记录自己的问题  在写项目的时候遇到这种业务情况: 需要保存整个页面的数据,数据包含 多个字段信息 和 多个文件  结合网上的处理思路,我最终实现了这种业务需求并整理一下 前端单独提交字段和文件比较方便简单,本人不太了解前端,既然前端说

    2024年02月03日
    浏览(35)
  • 用java实现模仿 Postman 发送 form-data 形式的请求,并指定编码格式

    可以使用 Apache HttpClient 库来模仿 Postman 发送 form-data 形式的请求,并指定编码格式。以下是一个示例代码: 在这个示例中, YOUR_ENDPOINT_URL 应该被替换为目标 URL。这段代码使用了 Apache HttpClient 库创建了一个带有 form-data 的请求,并使用 UrlEncodedFormEntity 设置了编码格式为 UTF-

    2024年02月02日
    浏览(41)
  • SpringBoot处理form-data表单接收对象数组

    主要是为了存档,碰到表单传对象数组的情况,一般都是一个表单只能传一个对象,后面经过跟前端的研究和讨论发现居然可以传对象数组,以此作为记录分享。 测试直接使用下标方式请求 直接使用属性下标的方式传递 请求: 示例代码: 结果: java.lang.IllegalStateException:

    2024年02月03日
    浏览(46)
  • Java以form-data(表单)的形式调用第三方接口

    之前写的调用第三方接口: Java使用原生API调用第三方接口 但是其中只包含了简单的接口(传递数据为JSON)调用。也就是 Content-Type 的值是设置成: 当第三方接口需要包含 文件 类型的参数,我们要设置成以 表单形式 提交,就要那么该属性就应该设置成 表示是以 表单形式

    2024年02月02日
    浏览(47)
  • Java发送form-data请求

    在Java中发送form-data请求,可以使用Apache HttpClient或OkHttp这样的HTTP客户端库来发送请求。 1.添加依赖 2.代码 对于HttpClient对象,HttpClientBuilder.create().build()创建的实例是 不需要手动关闭 的。 在使用HttpClientBuilder创建HttpClient对象时,不需要手动关闭HttpClient对象。这是因为HttpCli

    2024年02月10日
    浏览(33)
  • 解锁新技能《springboot基于表单multipart/form-data的文件上传》

    springboot的文件上传有多种实现方案,个人比较推荐方案三通过实体类属性绑定的方式,这样可以方便文件及其关联的相关属性字段; 开源依赖pom 一、单个文件上传及其它属性字段 二、通过数组方式上传多个文件 三、通过实体类绑定方式上传文件及传递其它属性值 四、通过

    2024年02月13日
    浏览(38)
  • java发送form-data请求实现文件上传

    需要请求第三方接口上传文件,该请求类型是form-data请求   注意: 这里的 builder.addPart(\\\"sendfile\\\", new FileBody(file)); , multipartFile 对应form表单的字段名称。 参考:Java发送form-data请求实现文件上传_IceFloe_Rot的博客-CSDN博客

    2024年01月18日
    浏览(44)
  • python-用form-data形式上传文件请求

    虽然现在基本上都约定俗成的接口都用json形式请求 但是不可避免地 有些接口需要传文件流,此时就需要用form-data形式上传了 for.e: 存在以下接口,通过接口创建海报图 但需要上传缩略图, 此时接口的Content-Type就不能是application/json,而是multipart/form-data; 参数格式也是以表单

    2023年04月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包