Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll
20/04/2025, by Ivan

Кратко (TL;DR):

  • HTTP-запросы отправляются к JSON:API ресурсам. Не путайте их с объектами ресурсов.
  • JSON-объект, получаемый клиентом, называется документом.
  • Документ всегда представляет собой JSON-объект и содержит основные данные под ключом data.
  • Данные под этим ключом называются объектами ресурсов или объектами-идентификаторами ресурсов.
  • Если вы запрашиваете вложенные связанные данные, документ становится составным документом.
  • Составной документ содержит ключ included в объекте верхнего уровня.
  • Ресурсы, возвращающие много объектов ресурсов, называются коллекциями ресурсов.
  • Ресурсы, возвращающие один объект ресурса, называются отдельными ресурсами.
  • Ресурсы, возвращающие информацию о связях между объектами ресурсов, называются ресурсами связей.
  • В терминах Drupal:
    • Объекты ресурсов → Сущности
    • Объекты-идентификаторы ресурсов → Элементы полей ссылок на сущности
    • Документ → JSON-запрос/ответ

Ниже приводится краткое описание терминов и понятий, используемых для описания модуля JSON:API.

Этот глоссарий близок к спецификации JSON:API, но адаптирует определения под Drupal и расширяет некоторые нюансы спецификации, которые могут быть неочевидны для новичков или тех, кто не знаком с чтением спецификаций.

Многие из этих определений тесно связаны между собой. В диаграмме внизу страницы эти термины представлены в контексте.

Ресурс

Местоположение, по которому можно получить документ ответа JSON:API. Ресурс определяется по URL и не должен путаться с "объектом ресурса". Он не обязательно соответствует данным приложения один к одному.

В Drupal ресурс JSON:API — это не сущность. Это место, где можно получить данные по определённой концепции. Например, "коллекция объектов ресурсов типа node--article" или "значения поля field_tags конкретного узла статьи".

Документ ответа

Тело ответа в формате JSON, возвращаемое от ресурса JSON:API. Это "обёртка", через которую клиенту передаются данные или ошибки. Иногда его называют объектом верхнего уровня. Если в документе присутствует ключ included, он называется составным документом.

Составной документ

Документ ответа, содержащий элемент included. Позволяет избежать дополнительных HTTP-запросов, включая связанные объекты ресурсов вместе с основными данными. Для получения составного документа к URL добавляется параметр запроса include.

Документ ошибки

Документ ответа, содержащий элемент errors с одним или несколькими объектами ошибок. Такой документ никогда не содержит data. HTTP-статус всегда 4xx или 5xx.

Отдельный ресурс

Ресурс, содержащий один объект ресурса в элементе data документа ответа. В Drupal такой ресурс позволяет 'просматривать', 'обновлять' или 'удалять' сущность. Нельзя использовать для создания сущности.

Коллекция ресурсов

Ресурс, содержащий много объектов ресурсов в элементе data. В Drupal можно использовать для 'создания' сущностей. Нельзя использовать для 'обновления' или 'удаления' сущностей в коллекции. Поддерживает пагинацию, фильтрацию и сортировку.

Ресурс связи

Ресурс, содержащий объект связи на верхнем уровне документа ответа. Содержит один или несколько объектов-идентификаторов ресурсов, которые представляют связь между объектами ресурсов. В Drupal используется для 'просмотра' или 'редактирования' значений полей-ссылок.

Ресурс, представляющий собой особую коллекцию ресурсов, содержащую один или более объектов ресурсов в элементе data. Эти ресурсы являются объектами, на которые ссылается поле-ссылка. Ресурс доступен только для чтения и не позволяет 'обновлять' сущности или 'редактировать' само поле-ссылку.

Элемент документа

JSON-объект, расположенный в верхнем уровне документа JSON:API. Эти объекты находятся под предопределёнными ключами, такими как jsonapi, data, included или errors.

Объект ресурса

Представление сущности в виде JSON-объекта. Не следует путать с ресурсом. Объект ресурса соответствует данным приложения один к одному.

Объект атрибутов

JSON-объект, содержащий информацию об объекте ресурса, в котором он определён. Может содержать любое допустимое JSON-значение. В Drupal это значения полей сущности, не являющиеся ссылками на другие сущности.

Объект связей

JSON-объект, содержащий ссылки от объекта ресурса к другим объектам ресурсов. Содержит множество объектов связи. В Drupal — это значения всех полей-ссылок на сущности.

Объект связи

JSON-объект, представляющий ссылки от объекта ресурса к другим объектам ресурсов. Содержит объекты-идентификаторы ресурсов, каждый из которых описывает одну связь. В Drupal — это отдельное поле-ссылка.

Объект-идентификатор ресурса

Простой JSON-объект, представляющий связь между двумя объектами ресурсов. Не является объектом ресурса. Содержит только ключи type и id, опционально — meta. Не содержит links. Используется в составных документах для сопоставления ссылок со связанными объектами.

JSON-объект, содержащий гиперссылки на другие ресурсы.

Объект ошибки

JSON-объект, представляющий ошибку, возникшую при обработке запроса. Может отражать ошибки клиента, ошибки валидации, ошибки сервера и др.

Json:API структура

Статья с сайта Drupal Documentation.