logo

パレット - カラフルに🎨

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

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

Scroll
09/04/2025, by Ivan

このページでは、JSON:APIモジュールのさまざまなPOSTリクエストの例を示します。

POSTリクエストは新しいリソースを作成するために使用されます。変更が必要な場合は、PATCHを使用します。

JSON:API仕様(したがってJSON:APIモジュール)は、POSTリクエストごとに1つのリソースの作成のみをサポートします。Drupalの場合、これは(このモジュール単独では)1つのリクエストで複数のエンティティを作成することが不可能であることを意味します。これは、親エンティティと同時に参照エンティティを作成したい場合に必要になるかもしれません。JSON:APIはそのような動作をサポートできませんが、Subrequestsのようなモジュールがそういった要件に役立ちます。

09/04/2025, by Ivan

このページでは、JSON:APIモジュールのさまざまなGETリクエストの例を示します。

以下のすべての例で、リクエストヘッダーは不要です。匿名ユーザーがコンテンツエンティティにアクセスできる場合は、認証も不要です。メニューなどの設定エンティティについては、最後のセクションを参照してください。

すべての場合において、idが必要なときは、常にエンティティのIDではなくエンティティのuuidであることに注意してください。

Acceptヘッダー

常にacceptヘッダーを送信してください:Accept: application/vnd.api+json

09/04/2025, by Ivan

このセクションには、リクエストタイプごとの例と情報が含まれます:GET、POST、PATCH、DELETE。

例について

すべての例は実際に動作する例であり、ブラウザまたはJSONクライアント(例:Postman)で試すことができます。標準のDrupalインストール、いくつかの記事(Article)ノード、および有効化されたJSON:APIモジュールが必要です。

http://example.com/jsonapi/node/article/{{article_uuid}}

すべてのリクエストは、JSON:APIモジュールのデフォルト値である「/jsonapi」パスプレフィックスを使用します。さまざまな例では、プレースホルダーは二重波括弧構文(例: {{...}})で表されます。それらを、自分の環境に適用できる指定されたデータに置き換えてください。

09/04/2025, by Ivan

JSON:APIは、非常にシンプルな多言語機能をサポートしています。高度なユースケースはサポートしていません。

現在は、Drupalのデフォルトの言語ネゴシエーションメカニズムに依存して、エンティティの適切な言語をネゴシエートし、その翻訳が利用できない場合にフォールバックします。長期的には、下位互換性を維持しながらこのメカニズムから移行する予定です。JSON:API仕様に準拠した正式な翻訳サポートを追加したいと考えています。

現在の言語ネゴシエーションメカニズム:

09/04/2025, by Ivan

JSON:APIを使用すると、単一のリクエストで複数のリソースを取得できます。これらのルートは「コレクション」ルートと呼ばれます。UUIDを含めずに、基本のリソースルートにGETリクエストを送信すると(例: GET /jsonapi/node/article)、リソースのコレクションを取得できます。デフォルトでは、指定されたタイプのすべてのリソースが含まれます。

フィルタリング とソートは、すべての標準リソースでデフォルトで利用できます。

ヘッダー

適切なJSON:APIリクエストとレスポンスを得るには、次のヘッダーがすべてのGETリクエストで必須です。

09/04/2025, by Ivan

ページネーションは、一見複雑そうに見えないものの、実は複雑なトピックです。思わぬ落とし穴に陥ったり、ベストプラクティスに従えなかったりしがちです。このページでは、ページネーションを「正しく」実装する方法を解説します。つまり、このページを読んで理解すれば、あなたのクライアントはより堅牢で将来性のあるものになり、将来的に作業が楽になるはずです。

このガイドから何かひとつだけ持ち帰るなら、それは ページネーションのURLを自分で組み立ててはいけないということです。

JSON:APIモジュールからのすべてのページ分割されたレスポンスには、コレクションの次のページへのリンクがすでに組み込まれています。そのリンクに従ってください。

09/04/2025, by Ivan

要点(TL;DR): クエリ文字列、例えば ?include=field_comments.uid を使用すると、field_comments が参照するすべてのエンティティと、それらの エンティティ上の uid が参照するすべてのエンティティをインクルードできます!


JSON:APIでは、レスポンスドキュメント に含めたいリレーションシップパスを指定できるため、HTTPリクエストを削減できます。どのように?