致命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请求数据格式的问题:
-
在uni-app中,PATCH请求的数据格式处理确实与POST/PUT不同。当使用
content-Type=application/x-www-form-urlencoded
时,PATCH请求会被自动转换为raw格式。 -
这是uni-app底层网络库的设计行为,并非bug。对于PATCH请求,建议直接使用JSON格式:
uni.request({
method: 'PATCH',
url: 'your_url',
header: {
'Content-Type': 'application/json'
},
data: {a: 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()
})