HTTP:信封里的文档
HTTP: Documents in Envelopes
假如要我对海洋动物进行分类的话,我会先从一些共性(比如DNA、分子结构、胚胎发育规律,等等)开始讨论,然后说明为什么在这些共性上的分化会导致动物之间的差别。为了对programmable web进行分类,我想先对HTTP(所有Web服务共有的协议)作一个概述。
HTTP是一种基于文档的协议。客户端把文档放在信封(envelope)里,然后发给服务器;作为回应,服务器把响应文档放在信封里,然后发给客户端。HTTP对信封格式有严格的标准,但它并不关心信封里面的内容。示例1-5是一个信封的例子:当访问oreilly.com
主页时,Web浏览器发出HTTP请求(HTTP request)。我截断了其中超长的两行,以便适应印刷页面的大小。
示例1-5:一个发给http://www.oreilly.com/index.html的HTTP GET请求
GET /index.html HTTP/1.1 |
也许你对HTTP还不熟悉,所以我来讲解一下上述HTTP请求的各个主要部分。全书都采用这里的术语。
HTTP方法(HTTP method)
对于这个请求,方法是“GET”。在其他讨论“REST”的地方,你会看到HTTP方法也被称作“HTTP动词(HTTP verb)”或“HTTP动作(HTTP action)”。
HTTP方法的名称,就如同编程语言里的方法名称,表示客户端希望服务器如何处理该信封。这里,客户端(即我的Web浏览器)希望从服务器(www.oreilly.com)获取(GET)一些信息。
路径(path)
这是URI里主机名(hostname)后面的部分。对于这个请求,URI是http://www.oreilly. com/index.html,路径是“/index.html”。拿信封作比喻的话,路径就是信封上的地址。在本书中,有时“URI”只表示路径。
请求报头(request headers)
它们是一组关键字-值对(key-value pairs),起元数据(metadata)的作用,就像贴在信封上、写有信息的不干胶标贴一样。 这个请求有8个报头(headers):Host、User-Agent、Accept,等等。关于HTTP报头有一个标准(参见附录C),不过应用程序也可以定义自己的报头。
实体主体(entity-body),也称作文档(document)或表示(representation)
这是放在信封里的文档。本例是一个没有实体主体的HTTP请求——也就是说,信封里面是空的!一般来说,GET请求都没有实体主体——完成请求所需的全部信息都在路径(path)和报头(headers)里。
HTTP响应(HTTP response)也是一个放在信封里的文档。HTTP响应跟HTTP请求在形式上差不多。在浏览器向位于oreilly.com的服务器发出如示例1-5所示的请求后,该服务器将向Web浏览器作出响应。示例1-6显示的是经简化的HTTP响应。
示例1-6:对发给http://www.oreilly.com/index.html的HTTP GET请求的响应
HTTP/1.1 200 OK <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
HTTP响应可分为三个部分。
HTTP响应代码(HTTP response code)
它是一个通知客户端“HTTP请求是成功还是失败”的数字代码,并告诉客户端应如何对待信封及信封里的内容。对于本例,响应代码是200(“OK”),可见GET操作成功了。我将在附录B对各种HTTP响应代码进行解释。
响应报头(response headers)
跟请求报头(request headers)一样,响应报头也是贴在信封上的“不干胶标贴”。本例的HTTP响应有11个报头:Date、Server,等等。
实体主体(entity-body)或表示(representation)
同样地,它也是放在信封里的文档。不过这次它不是空的!该实体主体实现(fulfill)了我的GET请求。 HTTP响应里其余的部分,就像是粘有不干胶标贴的信封,告诉Web浏览器如何来处理这个文档。
有一些非常重要的标签是值得单独提及的。响应报头Content-Type给出实体主体的媒体类型(media type)。对于本例,媒体类型是text/html——这告诉Web浏览器,它可以把实体主体作为一个HTML文档(也就是一个网页)来呈现。
关于媒体类型有一个标准(http://www.iana.org/assignments/media-types/)。最常见的媒体类型有文本文档(text/html)、结构化数据文档(application/xml)及图像(image/jpeg)等。在别处讨论REST或HTTP时,你会看到媒体类型也被称作“MIME类型”、“内容类型(content type)”或“数据类型(data type)”。
| 回书目 上一节 下一节 |
|
· 11.10.3 运行工程 · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. · 系统分析师自测获奖名.. · Linux结课考试自测获奖.. · 上周Linux系统命令的使.. |
· 上周真题冲刺测试获奖.. · 全国计算机等考四级模.. · 08年3月各大网上书店及.. · 网络工程师模拟测试获.. · 全国计算机软考考试指.. · 3月24日WCF聊天活动 积.. |
|
||||
| · 企业数据恢复指南 · 龙芯要做中国的“奔腾” · 2008年上半年全国软考.. · 交换机故障解决指南 · Vista SP1对决XP SP3 · 华为路由器配置 · LAMP技术精解 · 微软出价446亿美元收购.. |
· 网络故障排除宝典 · AIX操作系统管理应用(.. · 华为员工自杀频频拷问.. · 三层交换技术专题 · ARP攻击防范与解决方案 · 隐私保护技术探讨 · 反垃圾邮件技术应用 · Windows Server 2008专.. |
|||
|
||||
| · SQL Server 2008/2005.. · SOA 面向服务架构 · SQL Server 2008/2005.. · iSCSI应用与发展 · RAID——磁盘阵列基础 · Apache技术专题 · 中间件应用技术专题 · 三层交换技术专题 |
· SQL Server入门到精通 · Apache技术专题 · 国际文档格式标准开战 · 路由器设置与口令恢复 · 打造安全服务器 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · iSCSI应用与发展 · 中间件应用技术专题 · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · iSCSI应用与发展 · 三层交换技术专题 |
· Apache技术专题 · 企业数据恢复指南 · RAID——磁盘阵列基础 · 路由器设置与口令恢复 · SOA 面向服务架构 · ADSL应用面面俱到 · ADSL应用面面俱到 · 反垃圾邮件技术应用 |
|||