关于form-data
2019-03-26 本文已影响0人
VictoriaZsj
有关request post请求格式中的multipart/form-data格式。
***** 传递给后端的数据转换为整型*****
在后端与前端约定好application/json格式传递数据时,因为后台是go强类型语言,在定义api接口时,某些字段要求是整型类型,但是对于前端来说输入框或者从url中的search取到的参数都是字符串,不得不进行前端类型转换。
后端同学还支持另一种的前后端数据交互请求内容格式为Content-Type: multipart/form-data,用来指定请求内容的数据编码格式。通过该格式后端取到前端传递的数据就是数字了(即使前端传递的是字符串),而不像json格式获取的是字符串。这样,就不需要额外对前端获取的数据进行特殊转换了
form-data格式一般是用来进行文件上传的。使用表单上传文件时,必须让表单的 enctype 等于 multipart/form-data,因为该值默认值为application/x-www-form-urlencoded
手动来实现一个转换数据函数,https://www.cnblogs.com/wonyun/p/7966967.html
function objectToFormData (obj, form, namespace)
{
const fd = form || new FormData();
let formKey;
for(var property in obj){
if(obj.hasOwnProperty(property))
{
let key = Array.isArray(obj) ? '[]' : `[${property}]`;
if(namespace) { formKey = namespace + key; }
else { formKey = property; }
// if the property is an object, but not a File, use recursivity.
if(typeof obj[property] === 'object' && !(obj[property] instanceof File))
{ objectToFormData(obj[property], fd, formKey); }
else { // if it's a string or a File object fd.append(formKey, obj[property]); }
}
}
return fd;
}