合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
有时候我们发现接收PUT方法发来的的参数不是我们想要的类型,想要一个参数数组,却被接收成一串字符串,这种问题其实是我们把Content-Type的类型搞错了,我们发送的是application/json或者application/x-www-form-urlencoded对应的数据,但Content-Type却是multipart/form-data,这样接收的数据就变成了form-data的样子: { "------WebKitFormBoundaryWgy9SzN0PinJvjfS\r\nContent-Disposition:_form-data;_name": "\"shop_id\"\r\n\r\n123123\r\n------WebKitFormBoundaryWgy9SzN0PinJvjfS\r\nContent-Disposition: form-data; name=\"group_id\"\r\n\r\n131312\r\n------WebKitFormBoundaryWgy9SzN0PinJvjfS--\r\n", "type": 1 } 并且Restful的数据基本都是json格式传输,所以发送的HTTP头应该是`Content-Type=application/json`。 使用POST MAN: ![](https://box.kancloud.cn/b354028d503be70b363a422d5f40d4d5_731x134.png) ![](https://box.kancloud.cn/183808f8b9d807a4f2d77679a1473a88_575x141.png) 如果使用tp5框架可以使用助手函数实现: ~~~ input('put.status'); input('put.'); ~~~ ps:这里的form-data误区应该是由PHP的POST和PUT方法内部解析`multipart/form-data`的数据方式不同导致的,POST方法把参数解析到$\_POST并把content内容置空,而PUT却没有这步操作,所以要注意使用上的区别。