このページでは、JSON:APIモジュールのDELETEリクエストの例を示します。
削除操作の有効化
/admin/config/services/jsonapiにアクセスし、
「Accept all JSON:API create, read, update, and delete operations.(すべてのJSON:APIの作成、読み取り、更新、削除操作を受け入れる)」オプションをオンにします。
このページでは、JSON:APIモジュールのPATCHリクエストの例を示します。
更新操作の有効化
/admin/config/services/jsonapiにアクセスし、
「Accept all JSON:API create, read, update, and delete operations.(すべてのJSON:APIの作成、読み取り、更新、削除操作を受け入れる)」オプションをオンにします。

このページでは、JSON:APIモジュールのさまざまなPOSTリクエストの例を示します。
POSTリクエストは新しいリソースを作成するために使用されます。変更が必要な場合は、PATCHを使用します。
JSON:API仕様(したがってJSON:APIモジュール)は、POSTリクエストごとに1つのリソースの作成のみをサポートします。Drupalの場合、これは(このモジュール単独では)1つのリクエストで複数のエンティティを作成することが不可能であることを意味します。これは、親エンティティと同時に参照エンティティを作成したい場合に必要になるかもしれません。JSON:APIはそのような動作をサポートできませんが、Subrequestsのようなモジュールがそういった要件に役立ちます。
このページでは、JSON:APIモジュールのさまざまなGETリクエストの例を示します。
以下のすべての例で、リクエストヘッダーは不要です。匿名ユーザーがコンテンツエンティティにアクセスできる場合は、認証も不要です。メニューなどの設定エンティティについては、最後のセクションを参照してください。
すべての場合において、idが必要なときは、常にエンティティのIDではなくエンティティのuuidであることに注意してください。
Acceptヘッダー
常にacceptヘッダーを送信してください:Accept: application/vnd.api+json。
このセクションには、リクエストタイプごとの例と情報が含まれます:GET、POST、PATCH、DELETE。
例について
すべての例は実際に動作する例であり、ブラウザまたはJSONクライアント(例:Postman)で試すことができます。標準のDrupalインストール、いくつかの記事(Article)ノード、および有効化されたJSON:APIモジュールが必要です。
http://example.com/jsonapi/node/article/{{article_uuid}}
すべてのリクエストは、JSON:APIモジュールのデフォルト値である「/jsonapi」パスプレフィックスを使用します。さまざまな例では、プレースホルダーは二重波括弧構文(例: {{...}})で表されます。それらを、自分の環境に適用できる指定されたデータに置き換えてください。
JSON:APIは、非常にシンプルな多言語機能をサポートしています。高度なユースケースはサポートしていません。
現在は、Drupalのデフォルトの言語ネゴシエーションメカニズムに依存して、エンティティの適切な言語をネゴシエートし、その翻訳が利用できない場合にフォールバックします。長期的には、下位互換性を維持しながらこのメカニズムから移行する予定です。JSON:API仕様に準拠した正式な翻訳サポートを追加したいと考えています。
現在の言語ネゴシエーションメカニズム:
JSON:APIモジュールは、RFC5829:Webリソース間の単純なバージョンナビゲーションのためのリンク関係タイプに着想を得た方法で、エンティティリビジョンをリソースバージョンとして公開します。
現在の制限事項:
JSON:APIを使用すると、単一のリクエストで複数のリソースを取得できます。これらのルートは「コレクション」ルートと呼ばれます。UUIDを含めずに、基本のリソースルートにGETリクエストを送信すると(例: GET /jsonapi/node/article)、リソースのコレクションを取得できます。デフォルトでは、指定されたタイプのすべてのリソースが含まれます。
フィルタリング とソートは、すべての標準リソースでデフォルトで利用できます。
ヘッダー
適切なJSON:APIリクエストとレスポンスを得るには、次のヘッダーがすべてのGETリクエストで必須です。
ページネーションは、一見複雑そうに見えないものの、実は複雑なトピックです。思わぬ落とし穴に陥ったり、ベストプラクティスに従えなかったりしがちです。このページでは、ページネーションを「正しく」実装する方法を解説します。つまり、このページを読んで理解すれば、あなたのクライアントはより堅牢で将来性のあるものになり、将来的に作業が楽になるはずです。
このガイドから何かひとつだけ持ち帰るなら、それは ページネーションのURLを自分で組み立ててはいけないということです。
JSON:APIモジュールからのすべてのページ分割されたレスポンスには、コレクションの次のページへのリンクがすでに組み込まれています。そのリンクに従ってください。
要点(TL;DR): クエリ文字列、例えば ?include=field_comments.uid を使用すると、field_comments が参照するすべてのエンティティと、それらの エンティティ上の uid が参照するすべてのエンティティをインクルードできます!
JSON:APIでは、レスポンスドキュメント に含めたいリレーションシップパスを指定できるため、HTTPリクエストを削減できます。どのように?