这篇文章是有选择性的摘抄的前辈的,方便以后自己看摘抄地址
1. Http数据传参的两种方式
- uri传参
数据参数写在uri地址中,可以为查询参数,也可以为路径参数,一般get请求方式用的多。
优点:一个TCP传输就可以将参数传递给服务器,速度快。
缺点:参数直接暴露在浏览器中,不安全。 - body传参
数据参数写在body体中,有多种content-type格式:json、xml、form-data,一般post请求方式用的多。
优点:相对安全,没有大小限制。
缺点:需要两个TCP传输,第一次传输head,第二次传输body。
2.content-type的不同数据格式及使用注意事项
-
application/json (在axios中默认的post就是这种格式)
这个大家很熟悉,就是json格式的数据,在网络流中被编码成json格式的字符串,如:{“key1”:“value1”,“key2”:“value2”} -
application/x-www-form-urlencoded
浏览器的原生 form 表单格式,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码,最终网络流中被编码成类似于这种格式的字符串:title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3 -
multipart/form-data
也是浏览器的原生 form 表单格式,与上面不同的是,这个既可以传键值对,也可以用来上传文件。我们使用表单上传文件时,必须让 form 的 enctyped 等于这个值。
所以在进行开发时,要弄清楚我们需要传输的数据到底是什么格式的,比如,如果传的是一个file文件,那么我们的content-type就要为multipart/form-data,如果content-type错误的写为application/json,必然会导致后端解析错误。