6.2. The Context of the Web
我们已经讨论了增强用户体验的一般原则,其中的每一条原则都应该放到具体的实践中去应用。Rails开发的项目都是web应用,所以,让我们来看看web的工作方式。
6.2.1. HTTP
如果你使用HTTP嗅听器来查看在你浏览web页面时,发送到internet上的实际内容,你会看到浏览器和web服务器之间的会话。当你点击一个链接时,浏览器会发送一个类似于下面内容的请求:
Accept: */*
第一行是请求行,这一行的第一个单词代表请求方法(GET)。方法后面是请求的URL路径和所使用HTTP的版本。其余的是请求的头部信息,这些附加信息是为了完成请求而传递给服务器的。
HTTP方法有时也叫HTTP动词,因为这些方法在某些对象上实施动作。就像平时人们交流一样,在错误的环境中使用错误的动词会产生一些不良后果。HTTP动词也有类似的潜在的改变效果的可能,所以在选择方法时一定要小心。
最常见的HTTP方法是GET。无论你是在导航栏中输入网址后敲回车,还是点击一个标准链接,或者浏览页面中图像,这时数据都是通过GET方法请求得到的。依照规范,GET请求不对请求的数据进行改变性的操作,所以GET方法是安全的操作。GET方法的安全性带来了很多实用的技术, 譬如缓存和预载。
安全性经常会和一个相关概念--幂等性相混淆。一个方法如果是具有幂等性,意思就是说多次实施这个方法得到的结果与实施一次得到的结果一样的。例如,HTTP的操作DELETE方法就具有幂等性,因为一个资源被删除两次跟删除一次是一样的。GET也具有幂等性。
另外一个方法是POST,经常被用来提交web表单, POST请求通常包含一个内容结构,可能是各种不同的数据。POST的意思本质上来说是“process this(处理它)”。对于结果来说,POST方法既不安全也不幂等。这就是为什么浏览器要在加载一个通过POST方法进行访问的页面之前要先得到确认的原因。否则,可能会无意识的让服务器增加不必要的开销。
另外两个标准的HTTP方法是PUT和DELETE,这两个方法通常不被浏览器和服务器软件支持,但是他们却作为web服务越来越多的被使用。
Table 6-1. HTTP methods and SQL equivalents
|
SQL
|
幂等性
|
安全性
|
Yes
|
Yes
|
||
No
|
No
|
||
Yes
|
No
|
||
Yes
|
No
|
在Rails视图中可以使用:method参数来选用适当的HTTP方法,例如在link和form helper中:method都是可用的,在Ajax helper中也是可用的:
本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/111345,如需转载请自行联系原作者