post提交方式为啥要序列化,而get提交方式就不用?序列化做了啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了post提交方式为啥要序列化,而get提交方式就不用?序列化做了啥?相关的知识,希望对你有一定的参考价值。

参考技术A qs.stringify()是将对象 序列化成URL的形式,以&进行拼接。

get请求方式提交数据时,参数之间附加到url后边,即 http://xxxx.xxx?a=1&b=2&c=3

?后边正式服务端可以直接处理的数据格式,所以get方式直接提交数据的话就不需要再对参数进行序列化处理,直接提交即可。

后台能够直接处理的数据格式,是一种经过序列化的键值对数据。

如:前端向服务端传递三个参数a=1,b=2,c=3,那么服务端接受到数据应该是a=1&b=2&c=3,每个键值对之间用&链接。

post方式提交时,提交的数据本身就是一个json对象,如:
var data = a:1,b:2,c:3

提交时候是直接以原始数据格式存储在body中的,而不是以键值对的形式附加到url中,所以服务端是无法直接识别的。我们需要在提交之前将data转换成a=1,b=2,c=3的格式再提交,这就是序列化。

当然,如果数据是通过表单提交,不管是get还是post,浏览器都会自动进行序列化,无需前端再做处理。

JSON.stringify()

QS.stringify()

1、安装qs
npm install qs

2、引入qs(在需要的组件中引入)
import qs from 'qs'

3、qs序列化方法:qs.parse()和qs.stringify()

qs.parse()是将URL解析成对象形式;

即:uid=cs11&pwd=000000als&username=cs11&password=000000als
解析成uid:"cs11",pwd:"000000als",username:"cs11",password:"000000als"

qs.atringify()是将对象序列化成URL的形式,以&进行拼接;

即:
uid:"cs11",pwd:"000000als",username:"cs11",password:"000000als" 序列化成
uid=cs11&pwd=000000als&username=cs11&password=000000als

资料参考:
http://www.mamicode.com/info-detail-2877097.html

https://www.cnblogs.com/andyZhang0511/p/11671713.html

jquery中$.get()提交和$.post()提交有区别吗?

相同点:都是异步请求的方式来获取服务端的数据; 异同点:
a、请求方式不同:$.get() 方法使用GET方法来进行异步请求的。$.post() 方法使用POST方法来进行异步请求的。
b、参数传递方式不同:get请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给Web服务器 的,这种传递是对用户不可见的。
c、数据传输大小不同:get方式传输的数据大小不能超过2KB 而POST要大的多
d、安全问题: GET 方式请求的数据会被浏览器缓存起来,因此有安全问题。





以上是关于post提交方式为啥要序列化,而get提交方式就不用?序列化做了啥?的主要内容,如果未能解决你的问题,请参考以下文章

三种POST和GET的提交方式

表单提交中get和post方式的区别

简单的提交方式

Android Volley框架的几种post提交请求方式

GET与POST两种提交方式有什么区别?

php上传文件为啥一定要用post