リソースの取得(GET)
このページでは、JSON:APIモジュールのさまざまなGETリクエストの例を示します。
以下のすべての例で、リクエストヘッダーは不要です。匿名ユーザーがコンテンツエンティティにアクセスできる場合は、認証も不要です。メニューなどの設定エンティティについては、最後のセクションを参照してください。
すべての場合において、idが必要なときは、常にエンティティのIDではなくエンティティのuuidであることに注意してください。
Acceptヘッダー
常にacceptヘッダーを送信してください:Accept: application/vnd.api+json。
curl \
--header 'Accept: application/vnd.api+json' \
....
基本的なGETの例
URL: http://example.com/jsonapi/node/article/{{article_uuid}}
レスポンス
HTTP 200レスポンス。レスポンスボディには、属性、リレーションシップ、リンクを含む、単一の記事ノードのJSON:APIオブジェクトが含まれます。
複数の記事を取得するGET
URL: http://example.com/jsonapi/node/article
レスポンス
HTTP 200レスポンス。レスポンスボディには、次のページへのリンクを含む、最大50件の記事のJSON:APIオブジェクトが含まれます。
最初の10件の記事を取得するGET
URL: http://example.com/jsonapi/node/article?page[limit]=10
レスポンス
次のページへのリンクを含む、最大10件の記事のJSONレスポンス。
2ページ目の10件の記事を取得するGET
URL: http://example.com/jsonapi/node/article?page[limit]=10&page[offset]=10
レスポンス
HTTP 200レスポンス。レスポンスボディには、前のページや次のページなどへのリンクを含む、最大10件の記事のJSON:APIオブジェクトが含まれます。
ページングの詳細については、次を参照してください: https://www.drupal.org/docs/8/modules/jsonapi/pagination
ソートされた複数の記事を取得するGET
URL: http://example.com/jsonapi/node/article?sort=nid
レスポンス
HTTP 200レスポンス。レスポンスボディには、nid昇順でソートされた記事のJSON:APIオブジェクトが含まれます。降順でソートするには&sort=-nidを使用します。
ソートの詳細については、次を参照してください: https://www.drupal.org/node/2803141
タイトルでフィルタリングされた記事を取得するGET
URL: http://example.com/jsonapi/node/article?filter[article-title][path]=title&filter[article-title][value]={{title_filter}}&filter[article-title][operator]==
レスポンス
HTTP 200レスポンス。レスポンスボディには、'title'フィールドの値が'{{title_filter}}'と一致する記事のJSON:APIオブジェクトが含まれます。
フィルターの詳細については、次を参照してください: https://www.drupal.org/node/2943641
参照を含めることで、記事のメディアエンティティ参照フィールドfield_imageのurl、uriを取得するGET
新しい構文
URL:
http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_image&fields[file--file]=uri,url
古い構文
URL: http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_image,field_image.image,field_image.image.file--file&fields[field_image]=image&fields[file--file]=uri,url
レスポンス
HTTP 200レスポンス。レスポンスボディには、'{{article_uuid}}'に一致する単一の記事ノードに対応する、含まれるメディアイメージのリレーションシップのJSON:APIオブジェクトが含まれます。
関連データ一式(著者、タクソノミータームなど)とともに記事を取得するGET
URL: http://example.com/jsonapi/node/article?fields[node--article]=uid,title,created&include=uid
レスポンス
HTTP 200レスポンス。レスポンスボディには、関連するユーザーに関するすべての情報を含むユーザーオブジェクトが含まれます。同じ構文は、タクソノミータームなどの他の関連データでも機能します。
ユーザー参照フィールドfield_user_ref_exampleと、そのプロファイルref_example_profileを持つ記事を取得するGET(参照フィールド内の参照フィールド)
URL: http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_user_ref_example,field_user_ref_example.ref_example_profile
レスポンス
HTTP 200レスポンス。レスポンスボディには、関連するユーザーとそのプロファイルに関するすべての情報を含むユーザーオブジェクトが含まれます。同じ構文は、参照フィールドも含む他の関連データでも機能します。
選択した関連データ項目(著者、タクソノミータームなど)とともに記事を取得するGET
URL: http://example.com/jsonapi/node/article?fields[node--article]=uid,title,created&fields[user--user]=name,mail&include=uid
レスポンス
HTTP 200レスポンス。レスポンスボディには、関連オブジェクト内の指定されたフィールド(この場合は著者名と著者のメールアドレス)を含むユーザーオブジェクトが含まれます。同じ構文は、タクソノミータームなどの他の関連データでも機能します。
ユーザーアカウントを取得するGET
URL: http://example.com/jsonapi/user/user?filter[anon][condition][path]=uid&filter[anon][condition][value]=0&filter[anon][condition][operator]=<>
レスポンス
HTTP 200レスポンス。レスポンスボディには、匿名ユーザーアカウントを除く、システム内のユーザーアカウントのJSON:APIオブジェクトが含まれます。すべてのユーザーアカウントのリストを取得したい場合は、単純に/jsonapi/user/userにGETリクエストを送るのではなく、上記のクエリを使用する必要があることに注意してください。GETリクエストを送るとHTTP 403エラーになります。
設定エンティティを取得する。
設定エンティティ(メニュー、ノードタイプ、ツアー)はコンテンツエンティティ(ノード、ユーザー)とは異なるため、これはもう少し複雑です。現在、設定エンティティは読み取り専用です。
簡単なテストのために、user-1とbasic_authモジュールを使用します。
- basic authモジュールを有効にします
- user-1の名前がadminでパスワードがadminであると仮定します
次のコマンドを使用すると、メニューのリストが表示されます。
curl \
--header 'Accept: application/vnd.api+json' \
http://admin:admin@drupal.d8/jsonapi/menu/menu
Drupalドキュメントからの記事です。