概述
Web有三个核心概念:资源(Resource)、URI(UniformResource Identifer,统一资源标识符)、表示(Representation).一个资源由一个URI进行标识。表示是从资源返回的数据,其格式被称为媒体类型。
资源
任何带有URI标识的东西都是资源。
资源并不只限于文件,还包括服务,系统,流媒体等。
URI
每个资源都可以通过唯一的URI访问,可以把URI看作一个资源的主键。
一个URI只能对应一个资源,但多个URI可以指向同一个资源。
URI 的格式为:scheme:hierarchicalpart[?query][#fragment],其中scheme表示通信协 议,hierarchical part 表示通信地址、安全证书颁发机构(authority)和分层路径(hierarchical path)等,查询字符串query和fragment是可选的。
URI分为两种类型:URL(UniversalResource Locator,统一资源定位符)和URN(Universal Resource Name,统一资源名)。URL既标识一个资源,又指定了访问该资源的方法。URN是一个资源的唯一标识符。在实际应用中,大多数URI都是URL,因此 URI和URL常常同义替换使用。
表示
表示是资源在某个时刻状态的快照。
当HTTP客户端请求一个资源时,返回的是这个资源的表示,而不是资源本身。
从一个请求到下一个请求发生时,资源的状态可能会发生很大的变化,因而返回的表示也会大不相同。
一个资源可以有一个或多个表示。
媒体类型
每个表示都有特定的表示,即媒体类型。
媒体类型是在Internet上客户端和服务器之间传递信息的格式。
媒体类型由两部分标识组成。第一部分是顶级媒体类型,描述了通用的类型信息以及常用处理规则。常见的顶级类型有:application、image、text、video和multipart。第二部分是子类型,描述一个非常具体的数据格式,如json、html等。
常用媒体类型列表
媒体类型 | 描述 |
Text/html | HTML文档 |
Application/xhtml+xml | 使用格式良好的XML的HTML文档 |
Application/xml | XML文档和模式 |
Application/json | JSON文档 |
Application/x-www-form-urlencoded | 表单键/值数据 |
Multipart/mixed | 多个数据集合而成的单个正文 |
Multipart/form-data | 文件 |
Image/jpeg | JPEG文档 |
Image/gif | GIF文档 |
Image/png | PNG文档 |
Image/svg+xml | SVG文档 |
Application/atom+xml | Atom源 |
Application/vnd.hal+json | 包含相关资源链接的数据 |
Application/vnd.collection+json | 数据集合 |
各种媒体类型的特点:
HTML 类型展示Web页面效果极佳,但不适合传输数据;JSON传输数据很好用,但在重现图像上效率却十分低下;PNG是极好的图像格式,但不适合存储可扩展的 矢量图形,对此SVG才是优选。ATOM,HAL和Collection+JSON能表达更为丰富的应用程序主义,不过受到的限制也较多。