WEB框架将会解析这段字符串,并生成响应的请求对象(Request Object)。
各个框架的请求对象大同小异,一同百通。
以 django的request对象 和 yaro[注2] 为例,对照着来略窥一二。
django |
yaro |
用途 |
request.path |
request.uri.path |
请求地址,不含域名,如 /people/zuroc/ |
request.method |
request.method |
请求方法,如GET,POST |
request.GET |
request.query |
包含了GET中参数的字典
|
request.POST |
request.form |
包含了POST中参数的字典 |
request.COOKIES |
request.cookie |
请求中的cookie
|
request.META |
request.environ |
包含所有请求信息的字典
|
请求地址,也就是访问的网址中的路径,网址分发就靠它了。
请求方法,有很多类型,不过最常用的就两种 -- GET 和 POST。
普通的浏览操作都是 GET方式请求,
网页表单提交的默认方式也是GET。GET方式提交表单可以向服务器传递参数,它会将参数编码在URL中,比如用百度搜索python
http://www.baidu.com/s?wd=python
上面请求对已的 request.GET 是 { "wd" : "python" }
GET能直接作为书签收藏,缺点是有长度限制。限制因浏览器而异,建议不要超过
2000个字符。
POST将提交参数隐藏在请求中,它可以提交大文本,上传文件。
GET和POST中,可以出现同样的名字对应多个值的情况,比如:
?lang=python&lang=java
此时,框架通常会把映射的值生成为列表,如 { "lang" : [ "python","java" ] }
习惯上,当请求会修改服务器上数据时,用POST方式访问,否发用GET -- 当然,走有中国特色的网页开发,具体问题具体分析了。
再说说
cookie。
网站可以在用户的浏览器中保存一段小的文本,称之为
cookie。
每当用户浏览页面时,cookie的内容会随着请求一起发送到服务器。
人们常常用cookie来记录登录状态,跟踪用户的点击流。
值得注意的是,cookie大小被浏览器严格限制(不超过4095个字节),所以cookie不适合用来存储大文本。并且cookie发送到网站服务器也要消耗带宽。因而,cookie越精简越好。
需要牢记的是,从客户端发送过来的任何数据,都可能被别有用心的一小撮人篡改,所以cookie中的数据同样需要进行格式校验。
最后,请求中的所有信息都可以在 META/environ 中找到,除了客户端发过来的信息,它还包含了HTTP服务器加上的信息 -- 比如 客户端的IP地址 。