获取资源(GET)
此页面展示了 JSON:API 模块 的各种 GET 请求示例。
在以下所有示例中,请求头不是必须的。如果匿名用户可以访问内容实体,则不需要认证。对于菜单等配置实体,请参考最后部分。
请注意,在所有情况下,当需要 id 时,它始终是实体的 uuid,而不是实体 id。
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 对象,包括属性、关系和链接。
获取多个文章
URL: http://example.com/jsonapi/node/article
响应
HTTP 200 响应。响应体包含最多 50 篇文章的 JSON:API 对象,包括指向下一页的链接。
获取前 10 篇文章
URL: http://example.com/jsonapi/node/article?page[limit]=10
响应
JSON 响应包含最多 10 篇文章,包括指向下一页的链接。
获取第 2 页的 10 篇文章
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
获取排序后的文章
URL: http://example.com/jsonapi/node/article?sort=nid
响应
HTTP 200 响应。响应体包含按 nid 升序排序的文章 JSON:API 对象。使用 &sort=-nid
可以进行降序排序。
有关排序的更多信息,请参阅:https://www.drupal.org/node/2803141
按标题过滤文章
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
通过 include 获取文章媒体实体引用字段 field_image 的 url 和 uri
新语法:
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 对象。
获取文章及完整的相关数据(作者、分类术语等)
URL: http://example.com/jsonapi/node/article?fields[node--article]=uid,title,created&include=uid
响应
HTTP 200 响应。响应体包含一个用户对象,包含与该文章关联用户的所有信息。同样的语法也适用于其他相关数据,如分类术语。
获取带用户引用字段 field_user_ref_example 及其 profile 引用(引用字段内嵌引用字段)的文章
URL: http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_user_ref_example,field_user_ref_example.ref_example_profile
响应
HTTP 200 响应。响应体包含与文章相关联的用户对象及其 profile 的所有信息。同样的语法也适用于包含引用字段的其他相关数据。
获取文章及选定的相关数据项(作者、分类术语等)
URL: http://example.com/jsonapi/node/article?fields[node--article]=uid,title,created&fields[user--user]=name,mail&include=uid
响应
HTTP 200 响应。响应体包含相关对象中指定字段的用户对象(在此示例中为作者姓名和邮箱)。同样的语法也适用于其他相关数据,如分类术语。
获取用户账户
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
会导致 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 文档。