发表于: 2017-02-22 19:38:45

1 1201


今天完成的事:

1.完成了登录页面的填写密码后,使用键盘enter键也可以实现登录(涉及到ng-keypress,和获取焦点);

2.完成了小课堂的ppt制作,以及后续各种表格的登记。

3.昨天上传的关于数组的操作方法,今天都实验了一遍。光看一遍不知道正确性。

明天计划的事:

1.搭建小程序的环境(注册微信小程序,填写帐号信息,激活邮箱,进行信息登记);

2.下载安装小程序开发工具;

3.进入官网学习框架和组件内容

4.完成微信推送内容的制作。

遇到的困难:

关于添加ng-press事件,首先要自动获取焦点,可以选择相关联的元素,例如上一个input填写完毕,失去焦点,下面的button就自动获取焦点。就可以给input框一个ng-blur事件,当失去焦点时,利用jq获取到button,给button执行focus方法。当input框失去焦点时,button获取焦点,再给button一个ng-keypress事件,即能达到需要的效果。

收获:

对于post和get方法有了深入的了解,知道了get请求时发送数据的大小限制的由来;以及运用键盘事件。


1.背景介绍
rest风格的由来
Web发展到了1995年,在CGI、ASP等技术出现之后,沿用了多年、主要面向静态文档的HTTP/1.0协议已经无法满足Web应用的开发需求,因此

需要设计新版本的HTTP协议。在HTTP/1.1协议的设计工作中,开发者们对于Web之所以取得巨大成功,在技术架构方面的因素做了一番深入

的总结。Fielding将这些总结纳入到了一套理论框架之中,然后使用这套理论框架中的指导原则,来指导HTTP/1.1协议的设计方向。

Fielding更为系统、严谨地阐述了这套理论框架,并且使用这套理论框架推导出了一种新的架构风格,并且为这种架构风格取

名“REST”--Representational State Transfer(表述性状态转移)的缩写。


2.知识剖析

什么是rest风格
get与post的区别
application json 与form表单的区别

(1).什么是rest风格
REST是所有Web应用都应该遵守的架构设计指导原则。当然,REST并不是法律,违反了REST的指导原则,仍然能够实现应用的功能。但是违

反了REST的指导原则,会付出很多代价,特别是对于大流量的网站而言。
如果要深入理解rest,就要先了解资源(Resource)资源的表述(Representation)状态转移(State Transfer)统一接口(Uniform

Interface)超文本驱动(Hypertext Driven)这五个关键字,这里就不多做描述,参考文献上有更加详细的讲解。
再介绍下rest风格的六个约束,大家可以了解下:
客户-服务器:通信只能由客户端单方面发起,表现为请求-响应的形式。
无状态:通信的会话状态(Session State)应该全部由客户端负责维护。
缓存:响应内容可以在通信链的某处被缓存,以改善网络效率。
统一接口:通信链的组件之间通过统一的接口相互通信,以提高交互的可见性。
分层系统:通过限制组件的行为(即,每个组件只能“看到”与其交互的紧邻层),将架构分解为若干等级的层。
按需代码:支持通过下载并执行一些代码(例如Java Applet、Flash或JavaScript),对客户端的功能进行扩展。

(2).get与post的区别


上图是在W3C上找到的答案,但是在网上查看后,有了其他收获。
首先我们要知道GET和POST都是HTTP定义的和服务器互交的不同方法,其余两种是PUT和DELETE。
(A).语义上的不同:
GET:获取指定URL上的资源,是读操作,
POST:向指定资源“追加/添加”数据.
(B).对于“安全”所代表的设定。
相对于服务器的资源来说,意味着该操作用于获取信息而非修改信息。
对于传递过程来说,指的是提交的数据不会直接在地址栏看见。(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录。

(C).GET是幂等的,POST是非幂等的
先介绍下幂等的概念:如果一个操作没有副作用,或者多次操作对资源产生的副作用相同,我们就说这个操作是幂等的.
get方法用户获取资源,没有副作用,所以是幂等的;post用于创建资源,是有副作用的,且副作用不同,所以post不是幂等的。(两次相

同的POST请求会在服务器端创建两份资源,它们具有不同的URI)
(D)关于两种方法发送的大小限制
HTTP协议没有对get和post做长度的限制,但是浏览器会对url长度做限制,因为url长了,对服务器处理起来也是一种负担,同时容易被恶

意攻击。
GET请求的数据是添加在url后面的例如“login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD”,由于浏览器对

url长度有限制,所有get方法传递数据受限制。
POST提交是把提交的数据放置在是HTTP包的包体中,所以没有限制。

(3).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-8title=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 数组。

3.常见问题
GET和POST使用环境

4.解决方案
应该符合语义的使用;即获取数据使用GET,增加数据使用POST.

5.编码实战
主要是概念上的东西,所以没有代码。

6.扩展思考
rest适用环境
REST是一种为运行在互联网环境中的Web应用量身定制的架构风格。企业内网运行环境之中REST还会面临DO、RPC的巨大挑战。特别是一些对

实时性要求很高的应用,REST的表现不如DO和RPC。

7.参考文
理解本真的REST架构风格

W3C
99%的人理解错 HTTP 中 GET 与 POST 的区别
8.更多讨论
讨论点一
面试遇到POST和GET的区别应该如何回答?


返回列表 返回列表
评论

    分享到