メインコンテンツまでスキップ

3. HTTP ヘッダーにおけるリンクのシリアライゼーション (Link Serialisation in HTTP Headers)

Link エンティティヘッダーフィールドは、HTTP ヘッダーで 1 つ以上のリンクをシリアライズする方法を提供します。HTML の <link> 要素と意味的に等価です。

Link       = #link-value
link-value = "<" URI-Reference ">" *( OWS ";" OWS link-param )
link-param = token BWS [ "=" BWS ( token / quoted-string ) ]

各 link-value は 1 つのリンクを伝えます。リンクターゲットは山括弧(<>)内の URI-Reference で表されます。

デフォルトでは、リンクのコンテキストは [RFC7230] 第 5.5 節で定義されているように、それが現れるメッセージを表す有効なリクエスト URI (Effective Request URI) です。

3.3. 関係タイプ (Relation Type)

リンク関係タイプは「rel」パラメーターの値によって識別され、その値は以下のいずれかを含まなければなりません (MUST)。

  • 登録済み関係タイプ名(第 2.1.1 節参照)、または
  • 拡張関係タイプ(第 2.1.2 節参照)
relation-type  = reg-rel-type / ext-rel-type
reg-rel-type = LOALPHA *( LOALPHA / DIGIT / "." / "-" )
ext-rel-type = URI

3.4. ターゲット属性 (Target Attributes)

リンクのターゲット属性は link-value 内で link-param として表されます。

3.4.1. シリアライゼーション定義の属性

「rel」パラメーターは存在しなければならず (MUST)、複数回現れてはなりません (MUST NOT)。

その他の一般的なターゲット属性には以下が含まれます。

  • hreflang: ターゲットリソースの言語を示します。値は [RFC5646] に準拠しなければなりません (MUST)。
  • media: ターゲットリソースの意図された表示メディアを示します。
  • title: ターゲットリソースをラベル付けするための人間が読める識別子。
  • title*: [RFC8187] で定義されたエンコーディングを使用した「title」パラメーターの国際化バージョン。
  • type: ターゲットリソースのメディアタイプに関するヒントを提供します。

例えば:

Link: <http://example.com/TheBook/chapter2>; rel="previous";
title="previous chapter"

「previous chapter」が http://example.com/TheBook/chapter2 にあることを示します。

Link: </>; rel="http://example.net/foo"

ルートリソース(「/」)がカスタム拡張関係タイプ「http://example.net/foo」に関連していることを示します。

複数のリンクを単一の Link ヘッダーフィールドで伝えることができます。

Link: </TheBook/chapter2>; rel="previous"; title*=UTF-8'de'letztes%20Kapitel,
</TheBook/chapter4>; rel="next"; title*=UTF-8'de'n%c3%a4chstes%20Kapitel

複数の Link ヘッダーフィールドを使用することもできます。

Link: </TheBook/chapter2>; rel="previous"
Link: </TheBook/chapter4>; rel="next"