logo

パレット - カラフルに🎨

Palette — ビジュアルページビルダー、デザインの専門知識は不要です。

ライブデモ パレットをダウンロード

Scroll
09/04/2025, by Ivan

JSON:APIモジュールは、RFC5829:Webリソース間の単純なバージョンナビゲーションのためのリンク関係タイプに着想を得た方法で、エンティティリビジョンをリソースバージョンとして公開します。

現在の制限事項:

リビジョンサポートは、JSON:API仕様の公式な一部ではありません。ただし、JSON:APIモジュールが開発してきたカスタム動作を標準化するために、数多くの「プロファイル」が開発されており(これらも仕様の公式な一部ではありませんが、すでにJSON:API v1.1にコミットされています)、それらはすべて仕様に準拠しています。

そうすることで、JSON:APIモジュールは他のシステムと最大限互換性があるべきであり、JSON:API実装に対して開発する開発者が知っておく必要のある「Drupal特有の要素」を最小限に抑えるべきです。

JSON:APIモジュールにおける「バージョン」とは、以前デフォルトリビジョンであったか、現在デフォルトリビジョンであるリビジョンのことを指します。すべてのリビジョンが「バージョン」と見なされるわけではありません。「デフォルト」リビジョンとしてマークされていないリビジョンは「作業コピー」と見なされます。通常、一般に公開されず、ほとんどの新しい作業が適用されるリビジョンだからです。

Content Moderationモジュールがインストールされている場合、最新のデフォルトリビジョンが*最新の*リビジョンではない可能性があります。

リソースバージョンのリクエストは、URLクエリパラメーターを介して行います。次の形式になります:

            version-identifier
                  __|__
                 /     \
?resourceVersion=foo:bar
                 \_/ \_/
                  |   |
  version-negotiator  |
              version-argument

バージョン識別子は、特定のリビジョンを読み込むのに十分な情報を含む文字列です。バージョンネゴシエーターコンポーネントは、リビジョンを読み込むためのネゴシエーションメカニズムを指定します。現在はidまたはrelのいずれかです。idネゴシエーターは、目的のリビジョンIDであるバージョン引数を取ります。relネゴシエーターは、latest-versionまたはworking-copyのいずれかの文字列であるバージョン引数を取ります。

将来的には、他のネゴシエーターが開発される可能性があります。たとえば、タイムスタンプベースやワークスペースベースのネゴシエーターなどです。

特定のエンティティリビジョンがどのようにリクエストされるかを説明するために、「公開(Published)」リビジョンと、その後の「下書き(Draft)」リビジョンを持つノードを想像してください。

JSON:APIを使用すると、/jsonapi/node/page/{{uuid}}?resourceVersion=rel:latest-versionをリクエストすることで「公開」ノードをリクエストできます。

まだ作業中(つまり「下書き」リビジョン)のエンティティをプレビューするには、/jsonapi/node/page/{{uuid}}?resourceVersion=rel:working-copyをリクエストできます。

特定のリビジョンIDをリクエストするには、/jsonapi/node/page/{{uuid}}?resourceVersion=id:{{revision_id}}をリクエストできます。

リビジョンのコレクションのリクエストはまだできません。これはイシュー#3009588:バージョン履歴を取得できるコレクションリソースを提供する(`version-history`、`predecessor-version`、`successor-version`リンク関係)で開発中です。

Drupalドキュメントからの記事です。