tips
- params和data两者 params是添加到url的请求字符串中的,用于get请求。
- data是添加到请求体(body)中的, 用于post请求。
tips
Content-Type: application/json; charset=UTF-8 =》 request payload 请求体 post传递的值 字符串格式为json
Content-Type:application/x-www-form-urlencoded=》 Form Data :post传递的值 (正常表单提交)key1=value1&key2=value2的形式提交的
GET 请求参数 留意请求头内无Content-Type =》 Query String Parameters get传递值
Content-Type:text/plain;charset=UTF-8 有些未带charset=UTF-8=》Request Payload :post传递的值,Form Data不见了
默认的Content-Type为text/plain。Request Payload会对非字符串做字符串转换。通过xhr.send(JSON.stringify(obj));可修正要发的内容"Content-Type": "multipart/form-data" =》 /* formData格式提交: */let formData = new FormData();formData.append(key,this.formMess[key]);
*request payload和Form Data 只是Content-Type设置的不同 展示的不同,数据的提交方式是相同的。
这两种提交都会将数据放在message-body中(payload)
1.传统的ajax请求时候,Content-Type默认为"文本"类型。
2.传统的form提交的时候,Content-Type默认为"Form"类型。
3.axios传递字符串的时候,Content-Type默认为"Form"类型。
4.axios传递对象的时候,Content-Type默认为"JSON"类型
1.当我们传递字符串的时候,Content-Type自动转为xxx-form-xxx的形式。当为对象的时候,自动转化为xxx/json。
2.字符串的时候以key1=val1&key2=val2的形式体现,对象以JSON字符串形式体现。
Content-Type的值,Form与非Form时,payload的区别。
1.都只支持字符串类型(以上探究的几种情况)
2.Form需要传递的格式为key1=value1&key2=value2,类似GET请求的QueryString格式
3.非Form一般为JSON.stringify(formDataObject)形式
无论何种形式传递,后端解析表单信息的时候,会考虑Content-Type。如果是JSON字符串的话,后端解析payload的内容时候,肯定要去解析JSON啦。如果是key1=value1&key2=value2的形式,则需要去分割字符串。