Получение ресурсов (GET)
На этой странице приведены примеры различных GET-запросов для модуля JSON:API.
Во всех примерах ниже заголовки запроса не требуются. Аутентификация не нужна, если анонимные пользователи имеют доступ к сущностям контента. Для конфигурационных сущностей (например, меню) см. последние разделы.
Обратите внимание: если требуется 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. JSON:API-объект с максимум 50 статьями, включая ссылку на следующую страницу.
Получить первые 10 статей
URL: http://example.com/jsonapi/node/article?page[limit]=10
Ответ
JSON-ответ с максимум 10 статьями, включая ссылку на следующую страницу.
Получить вторую страницу (10 статей)
URL: http://example.com/jsonapi/node/article?page[limit]=10&page[offset]=10
Ответ
HTTP 200. Содержит статьи и ссылки prev/next.
Подробнее о пагинации: https://www.drupal.org/docs/8/modules/jsonapi/pagination
Сортировка статей
URL: http://example.com/jsonapi/node/article?sort=nid
Ответ
HTTP 200. Статьи отсортированы по nid по возрастанию. Для убывания: &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}}.
Подробнее о фильтрах: https://www.drupal.org/node/2943641
Получить поле изображения (ссылка на media entity)
Современный синтаксис:
http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_image&fields[file--file]=uri,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. Включены ссылки на изображения и их поля uri
, url
.
Получить статью с автором, терминами и т.д.
URL: http://example.com/jsonapi/node/article?fields[node--article]=uid,title,created&include=uid
Ответ
HTTP 200. В ответе присутствует объект пользователя, связанного с узлом.
Получить статью, пользователя и его профиль
URL: http://example.com/jsonapi/node/article/{{article_uuid}}?include=field_user_ref_example,field_user_ref_example.ref_example_profile
Ответ
HTTP 200. Ответ включает пользователя и связанный с ним профиль (вложенная связь).
Получить статью с выбранными полями связанных сущностей
URL: http://example.com/jsonapi/node/article?fields[node--article]=uid,title,created&fields[user--user]=name,mail&include=uid
Ответ
HTTP 200. Возвращается автор статьи с указанными полями (имя и email).
Получить список пользователей
URL: http://example.com/jsonapi/user/user?filter[anon][condition][path]=uid&filter[anon][condition][value]=0&filter[anon][condition][operator]=<>
Ответ
HTTP 200. Возвращаются все пользователи, кроме анонимного. Без фильтра запрос вернёт ошибку 403.
Получение конфигурационных сущностей
Конфигурационные сущности (меню, типы узлов и т.д.) отличаются от контентных. Они доступны только для чтения.
- Включите модуль basic_auth
- Предположим, что логин user-1: admin / admin
Пример запроса для получения меню:
curl \
--header 'Accept: application/vnd.api+json' \
http://admin:admin@drupal.d8/jsonapi/menu/menu
Статья с сайта Drupal Documentation.