发表于: 2017-01-14 10:55:32

1 1248


【JS-5】

小课堂【什么是rest风格?get和post的区别?application json 与form表单的区别?】

分享人:王峰

目录

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

REST是REpresentational State Transfer 的缩写,那它究竟意味着什么呢?也许这个问题已经困惑你很久了,下面就由我给你细细分解。

从宏观上讲,REST 是一种设计网络应用时的构架风格。这种风格约束了网络应用中各个模块之间的交互,从而使网络应用具有非常好的简易性,扩展性,可靠性等。

2.知识剖析

REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。资源是由URI来指定。对资源的操作包括获取创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法,通过操作资源的表现形式来操作资源。

资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。一般符合restful开发的要求:

  客户端和服务器结构、连接协议具有无状态性、能够利用Cache机制增进性能以及层次化的系统

  

3.常见问题

  a,其实就是应用http的一套规则。一般常见的http应用只使用get和post。那么get和post有什么区别呢?

       b, application json 与form表单的区别

4.解决方案

  第一个问题,这里列出来他们两者的区别

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

  2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一   起传送到ACTION属性所指的URL地址。用户看不到这个过程。

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

  4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

  5. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。

建议:1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

    第二个问题,

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 数组。

5.编码实战

6.扩展思考

  rest风格的优势是什么?rest风格中什么时候用put?

7.参考文献

http://blog.csdn.net/tycoon1988/article/details/40080691    四种常见的post提交数据方式

http://www.cnblogs.com/Guazi-JS/archive/2010/05/05/1727966.html  get和post的区别<

https://segmentfault.com/a/1190000007252829#articleHeader5    application/json 与 application/x-www-form-urlencoded的简单比较

https://www.zhihu.com/question/24048837    什么是rest?



返回列表 返回列表
评论

    分享到