跳到主要内容

4. 链接关系类型

在最简单的情况下, 链接关系类型 (link relation type) 标识一条链接的语义. 例如, 关系类型为 "copyright" 的链接表示: 由目标 IRI 标识的资源是一条陈述, 说明适用于当前上下文 IRI 的版权条款.

链接关系类型也可以用于表示目标资源具有特定属性, 或表现出特定行为; 例如, 一条 "service" 链接意味着所标识的资源是某个已定义协议的一部分 (在此例中是一份服务描述).

关系类型不应与媒体类型 [RFC4288] 相混淆; 它们并不标识解引用该链接时所得表示的格式. 它们只描述当前上下文与另一个资源之间的关系.

关系类型 SHOULD NOT 根据另一个链接关系类型是否存在, 或根据其自身出现次数, 推断任何额外的语义. 一个例外是 "alternate" 与 "stylesheet" 这两个已注册关系类型的组合, 出于历史原因, 它在 HTML4 中具有特殊含义.

关系类型有两种: 已注册关系类型和扩展关系类型.

4.1. 已注册的关系类型​

定义良好的关系类型可以注册为 token, 以便于使用和/或促进被其他应用复用. 本规范为此类关系类型建立了一个 IANA 注册表; 见第 6.2 节.

已注册的关系类型名称 MUST 符合 reg-rel-type 规则, 并且 MUST 以大小写不敏感的方式逐字符比较. 它们 SHOULD 与该关系类型的特异性相称; 也就是说, 如果语义高度特定于某个应用, 名称就应当反映这一点, 以便更通用的名称可留给不那么特定的用途.

已注册的关系类型 MUST NOT 约束上下文 IRI 的媒体类型, 也 MUST NOT 约束目标 IRI 可用的表示媒体类型. 然而, 它们可以规定目标资源的行为和属性 (例如允许的 HTTP 方法、必须支持的请求和响应媒体类型). 此外, 链接的特定应用可能要求在注册表中包含额外数据. 例如, Web 浏览器可能想知道在归档某个 Web 页面时应当下载哪些类型的链接; 如果这类应用特定的信息位于注册表中, 新的链接关系类型就可以在无需不必要协调的情况下控制这一行为.

为满足这一需求, 可以向链接关系类型注册表添加逐条目的应用数据, 方法是在链接关系应用数据注册表 (第 6.3 节) 中注册它.

4.2. 扩展关系类型​

不希望注册关系类型的应用可以使用扩展关系类型 (extension relation type), 它是一个唯一标识该关系类型的 URI [RFC3986]. 尽管该 URI 可以指向一个包含该关系类型语义定义的资源, 但客户端 SHOULD NOT 自动访问该资源, 以避免给其服务器带来过重负担.

比较扩展关系类型时, MUST 将其作为字符串 (若以其他格式序列化, 例如 Curie [W3C.CR-curie-20090116], 则先转换为 URI) 以大小写不敏感的方式逐字符比较. 因此, 扩展关系 SHOULD 使用全小写的 URI.

注意, 虽然扩展关系类型要求是 URI, 但链接的某种序列化形式可以规定它们以另一种形式表达, 只要它们能够被转换为 URI 即可.