PSR-13 超媒体链接
免费 - Sunrise - - 浏览量: 1 - 文章来源
超媒体链接
在 HTML 和各种 API 格式的上下文中,超媒体链接已经变成 Web 越来越重要的一部分。然而遗憾的是,没有一种通用单一的超媒体格式,也没有一种通用的方式来表示链接间的格式。
该规范旨在为 PHP 开发人员提供一种简单的、通用的方式来表示一个独立于所使用的序列化格式的超媒体链接。 这反过来又允许系统将超媒体链接的响应序列化为一种或多种有线格式,而不依赖于决定这些链接应该是什么的过程。
为了避免歧义,文档大量使用了「能愿动词」,对应的解释如下:
- 必须 (MUST):绝对,严格遵循,请照做,无条件遵守。
- 一定不可 (MUST NOT):禁令,严令禁止。
- 应该 (SHOULD) :强烈建议这样做,但是不强求。
- 不该 (SHOULD NOT):强烈不建议这样做,但是不强求。
- 可以 (MAY) 和可选 (OPTIONAL) :选择性高一点,在这个文档内,此词语使用较少。
参见 RFC 2119
参考文献
1. 规范
1.1 基本链接
一个超媒体链接至少是由这些组成的:
- 一个
URI表示目标资源被引用。 - 一个关系定义如何把目标资源与源联系起来。
链接的各种其他属性可能存在,具体取决于所使用的格式。作为额外的属性将不能标准化和通用,故本规范不寻求规范他们。
就本规范而言,下列定义是适用的:
Implementing Object- 通过这个规范一个对象实现一个接口的定义。Serializer- 一个库或者其它系统需要一个或多个Link对象,并用它定义的一些格式产生一个序列化的表示。
1.2 属性
所有的链接 可以 包含零个或者多个 URI 和关系之外的附加属性。没有正式的在这里允许的能注册的值和值的有效性取决于上下文,并且通常取决于一个特定的序列化格式。一般情况下支持的值包括 hreflang、title 和 type。
如果序列化格式需要,序列化 可以 忽略链接对象上的属性。不管怎样,序列化 应该 对所有提供的属性尽可能地进行编码,以便允许用户扩展,除非有通过序列化格式的定义去阻止的情况。
一些属性(一般为 hreflang)在他们的上下文中 可以 多次出现。因此,一个属性值 可以 是一个数组形式的值而不是一个简单的值。序列化 可以 对任何适合于序列化格式的格式对该数组进行编码(比如:一个空格分隔的列表,逗号分隔的列表等等)。如果在一个特定的上下文中,指定的一个属性不允许有多个值,序列化 必须 使用第一个提供的值而忽略所有后续的值。
如果一个属性的值为布尔值 true,则序列化 可以 使用序列化格式支持的和合适的缩写形式。例如:当属性的存在有布尔意义时,HTML 允许属性没有值。当且仅当该属性为布尔值 true 时,这个规则才适用,而不适用于 PHP 中的其他任何 truthy 值,例如整数 1。
如果一个属性的值为布尔值 false,序列化 应该 完全省略属性,除非这样做会改变结果的语义含义。当且仅当该属性为布尔值 false 时,这个规则才适用,而不适用于 PHP 中的其他任何 falsey 值,例如整数 0。
1.3 关系
链接关系定义为字符串,在公开定义关系的情况下为一个简单关键字,或者在私有关系的情况下为一个绝对 URI。
在使用一个简单的关键字的情况下,它 应该 从 IANA 注册表中的一个匹配:

