首页 > 其他分享 >axios 发送 form-data 请求和 x-www-form-urlencoded请求以及相关问题

axios 发送 form-data 请求和 x-www-form-urlencoded请求以及相关问题

时间:2023-05-12 09:56:42浏览次数:43  
标签:www 请求 form FormData urlencoded data

问题

  1. not supported
{
    "msg": "Content type 'multipart/form-data;boundary=--------------------------714795402464721152224475;charset=UTF-8' not supported",
    "code": 500
}

这个是因为 form-data 请求没有被后端支持,联系后端确认请求格式;关键就是 msg 中第一个分号前的内容,例子是 form-data

解决方法

  1. 在请求时按照接口文档或者后端给的 postman.json 配置请求头 header
  return request({
    url: 'API',
    headers: { //这里配置请求头
      isToken: true,
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    method: 'post',
    data: data,
    timeout: -1
  })

例子中,请求添加了headers字段,request对象为封装的axios请求,isToken字段表示将会携带token给后端;第二个'Content-Type'为设置的请求类型,当前设置的为x-www-form-urlencoded,也可以设置为其他的,比如form-data。如何确定该字段内容,详见文末 依据Postman写请求头

FormData 与 x-www-form-urlencoded 请求的数据封装

  1. FormData
    在使用FormData格式发送请求时,需要将数据用FormData的对象封装起来,然后传给后台
function getList(params){
	const data = new FormData()
	data.append("pageSize", data.pageSize) 
	data.append("pageNum", data.pageNum)
	return request({
		url: 'api',
		headers: {
		  isToken: true,
		  'Content-Type': 'multipart/form-data'
		},
		method: 'post',
		data: data,
		timeout: -1
	})
}

在上面的例子中,FormData为form-data请求的数据格式,data.append(key, value)方法的第一个参数是后端指定的参数名,第二个是值
2. x-www-form-urlencoded

export function getDetail(params) {
  const data = new URLSearchParams()// 这个就是 x-www-form-urlencoded 要封装的数据格式
  data.append('trackIds', params) // 第一个参数是后端指定的参数名,第二个是值
  return request({
    url: 'api',
    headers: {
      isToken: true,
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    method: 'post',
    data: data,
    timeout: -1 //表示请求永不超时
  })
}

x-www-form-urlencoded请求需要将数据封装为URLSearchParams对象,利用append(key,value)方法按照 第一个参数是后端指定的参数名,第二个是值的方法 为URLSearchParams对象填充属性

Postman确定请求类型

如果后端给了postman.json,那么按照postman界面显示来确定请求类型

  1. formData
    image
  2. x-www-form-urlencoded
    image

依据Postman写请求头

  1. 用postman正常发起一次请求,获取到数据后,在下图的位置有个代码样式的按钮,点开
    image
  2. 复制其内容中的header,粘贴到 request 的 headers 中
    image

标签:www,请求,form,FormData,urlencoded,data
From: https://www.cnblogs.com/echo-lovely/p/17392921.html

相关文章

  • Hugging Face推出Transformers Agents
    来源:GitHubDailyHuggingFace,作为AI开源圈最为知名的「网红」创业公司,成立仅几年,便在GitHub开源了诸多实用开源项目,受到了不少开发者的赞赏。其中影响力最大的,也被很多人称为初代GPT的Transformers,截至今天,GitHubStar累积将近10万。这几年,在HuggingFace平台上面......
  • BIP跨域请求跳转弹框案例
    viewModel.get("button5qj")&&viewModel.get("button5qj").on("click",function(data){//按钮--单击letid=viewModel.get("detailEntityList").......
  • Thinkphp5.1允许uni-app的H5跨域请求接口解决方法
    情景:   uni-app使用vue框架开发混合APP,虽然APP或者小程序没有跨域,但希望就是写完这个既有H5,又有APP,小程序等,所以能通过后端解决跨域最好。但是不知道是vue的原因还是什么,在PHP接口基类中添加了header头完全不起作用。官方给出的方法也有,具体可以看https://uniapp.dcloud.io/ap......
  • BEV专栏(一)从BEVFormer深入探究BEV流程(上篇)
    前言 本文提出了一种基于Transformer和时间结构的Bird's-Eye-View(BEV)编码器,称为BEVFormer。该编码器可以有效地聚合来自多视角摄像机和历史BEV特征的时空特征。本教程禁止转载。同时,本教程来自知识星球【CV技术指南】更多技术教程,可加入星球学习。欢迎关注公众号CV技术指南,专注......
  • SpringMVC18_SpringMVC获得请求数据5
    一、获得请求参数-请求参数类型 二、获得请求参数-获得基本类型参数  三、获得请求参数-获得POJO类型参数 四、获得请求参数-获得数组类型参数1  五、获得请求参数-获得集合类型参数2  六、获得请求参数-获得集合类型参数3  七、获得请求参数-静态资源......
  • 前端缓存支持的文件格式及请求方式
    1.varnish缓存和cdn缓存只支持get请求,post等其它请求不支持缓存2.缓存的文件格式:.html,.htm,.json,.jsonp四种文件格式,其它的如.do是动态的请求,不需要缓存3.varnish缓存是内存缓存,即服务器缓存,不支持集群,必须设置属性:s-maxage(单位:秒)4.cdn缓存是客户端缓存,支持集群,必须......
  • C# 实现winform软件最小化到系统托盘,开机自启动
    C#实现winform软件最小化到系统托盘,开机自启动 问题描述  用户的电脑是win7系统,应用系统在用户电脑上运行时部分功能需要访问注册表,但是使用这些功能时会提示用户没有权限访问注册表。原因分析  win7及后续高版本系统对用户的权限控制比较严,就算用户的权限较高,但用户启......
  • VS2017登录失败:无法刷新此账户的凭证、无法添加此账户发送请求时出错、评估期已结束,请
    1、启动vs2017,在弹出要登录的窗口之前,迅速的点击工具-》选项-》账户,然后勾选在添加账户或对账户重新进行身份验证时启用设备代码流。2、再次点击登录,弹出如下界面 3、在浏览器中输入图片中的网址,依次按提示操作,输入图片中的代码,直至最后出现下面图片,然后等待VS自动校验登录。......
  • 008 python get请求后得到的json字符串解析为pythn字典
    importjsonimportrequests#r=requests.get('https://www.baidu.com')#最基本的不带参数的get请求response=requests.get(url='http://xxx.xxx.xxx.cn:8120/api/Product/GetProductInfoList',\params={'packageNo'......
  • springboot+Prometheus+grafana 实现自定义监控(请求数、响应时间、JVM性能)
    自定义监控1.SpringBoot工程集成Micrometer1.1引入依赖1.2配置1.3监控jvm信息1.4创建自定义监控1.5添加具体业务代码监控2.集成Prometheus2.1安装2.2集成配置3.使用GrafanaDashboard展示监控项3.1安装grafana3.2配置prometheus数据源3.3增加jvm面板3.4配置业务接口监控面板......