get 与 post的区别?application json 与form表单的区别?

今天给大家分享:【JS-Task05】get 与 post的区别?application json 与form表单的区别?

                                                          分享人:聂义中

目录

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

首先我们要了解HTTP协议,这是一种通信协议,不同的联机方式与所使用的网络服务而定, 会有不同的通信协议,发送邮件的时候要使用SMTP,传输文件会使用FTP,下载信件时会 使用POP3等,而浏览器跟WEB服务器之间的沟通方式则是HTTP。

HTTP是一种基于请求响应的通信协议,客户端对服务器发出一个取得资源的请求,服务器 将要求的资源响应给客户端,每次的联结只作一次请求/响应,是一种很简单的通信协议, 没有请求就没有响应

HTTP协议之下,服务器是个健忘的家伙,服务器响应客户端之后,就不会记得客户端的信息, 更不会去维护与客户端有关的状态,因此http又称为无状态的通信协议

URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源, 而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查 ,改 ,增 ,删 4个操作。 到这里,大家应该有个大概的了解了,GET一般用于获取/查询 资源信息,而POST一般用于更新 资源信息

2.知识剖析

get

get请求,顾名思义,就是向服务器取得指定的资源,在发出get请求时必须一并告诉服务器所请求资源的URL,以及一些标头信息

post

POST请求,顾名思义,就是在请求的时候发布信息给服务器,对于大量或复杂的信息发送,基本都会采用POST来进行发送

3.常见问题

get 与 post的区别?

4.解决方案

post和get之间的差别?

1. get是从服务器上获取数据,post是向服务器传送数据。

get 和 post只是一种传递数据的方式,get也可以把数据传到服务器, 他们的本质都是发送请求和接收结果。只是组织格式和数据量上面有差别, http协议里面有介绍

2.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中) ,以?分割URL和传输数据,参数之间以&相连,如: login.action? name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。 如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是 中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD, 其中%XX中的XX为该符号以16进制表示的ASCII。

因为get设计成传输小数据 ,而且最好是不修改服务器的数据,所以浏览器一般都在地址栏里面可以看到, 但post一般都用来传递大数据,或比较隐私的数据,所以在地址栏看不到, 能不能看到不是协议规定, 是浏览器规定的。

3. 对于get方式,服务器端用Request.QueryString获取变量的值, 对于post方式,服务器端用Request.Form获取提交的数据。

怎么获得变量和你的服务器有关,和get或post无关,服务器都对这些请求做了封装 4. get传送的数据量较小,不能大于2KB。post传送的数据量较大 ,一般被默认为不受限制。

post基本没有限制,我想大家都上传过文件,都是用post方式的。只不过要修改 form里面的那个type参数

5. get安全性非常低,post安全性较高。

5.编码实战

6.扩展思考

application json 与form表单的区别?

application/json 这个 Content-Type 作为响应头大家肯定不陌生。实际上, 现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串。 由于 JSON规范的流行,除了低版本 IE 之外的各大浏览器都原生支持 JSON.stringify, 服务端语言也都有处理 JSON 的函数,使用 JSON 不会遇上什么麻烦。angular中默认的就是这个格式

application/x-www-form-urlencoded 这应该是最常见的 POST 提交数据的方式了。浏览器的原生 form 表单,如果不设置 enctype 属性, 那么最终就会以 application/x-www-form-urlencoded 方式提交数据。请求类似于下面这样 ( 无关的请求头在本文中都省略掉了): POST http://www.example.com HTTP/1.1 Content-Type: application/x-www-form-urlencoded;charset=utf-8 title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3 首先,Content-Type 被指定为 application/x-www-form-urlencoded; 其次,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val都进行了 URL 转码。 大部分服务端语言都对这种方 式有很好的支持。例如 PHP 中,$_POST['title'] 可以获取到 title 的值,$_POST['sub'] 可以得到 sub 数组。

这两种方式也是经常被互相转换的使用的,一般情况从json转换成form的情况会相对多一些。

7.参考文献

https://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

https://www.zhihu.com/question/51359933?from=profile_question_card

8.更多讨论

1 post可以修改数据吗?

答: 按照HTTP规范来说是不可以的,但是实际上可以用 post来修改数据

2 get 和 post 在实际应用中怎么选择

答: get只能提交少量的数据,而post几乎对提交的数据大小无限制,所以用post 总是没错的。

3     还有哪些其他的提交表头的方法?

答:   multipart/form-data,这又是一个常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 form 的 enctyped 等于这个值。

鸣谢

感谢大家观看

BY :聂义中

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

你可能感兴趣的:(get 与 post的区别?application json 与form表单的区别?)