致命bug什么时候把请求PATCH的方式数据格式换为raw的

致命bug什么时候把请求PATCH的方式数据格式换为raw的

类别 信息
产品分类 uniapp/App
PC开发环境 Windows
版本号 1
HBuilderX 正式
版本号 4.52
手机系统 Android
版本号 Android 4.4
手机厂商 华为
手机机型 全部
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

  • 请求头:content-Type=application/x-www-form-urlencoded
  • 请求数据:data: { a: 1}

预期结果:

  • 服务器获取到键值的对象/数组格式

实际结果:

  • raw:a=1

bug描述:

以前PATCH方式都是数组的格式提交的,现在服务端PATCH方式获取不到数据才发现突然全部变了,太狠了,太离谱了吧? 请求头之前是设置content-Type=application/x-www-form-urlencoded,让数据是数组的形式 可能是这个方法已经失效了,具体解决方案我再研究


1 回复

关于uni-app中PATCH请求数据格式的问题:

  1. 在uni-app中,PATCH请求的数据格式处理确实与POST/PUT不同。当使用content-Type=application/x-www-form-urlencoded时,PATCH请求会被自动转换为raw格式。

  2. 这是uni-app底层网络库的设计行为,并非bug。对于PATCH请求,建议直接使用JSON格式:

uni.request({
  method: 'PATCH',
  url: 'your_url',
  header: {
    'Content-Type': 'application/json'
  },
  data: {a: 1}
})
  1. 如果需要保持x-www-form-urlencoded格式,可以使用URLSearchParams处理数据:
const params = new URLSearchParams()
params.append('a', 1)
uni.request({
  method: 'PATCH',
  url: 'your_url',
  header: {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  data: params.toString()
})
回到顶部