JSON:API backend
JsonDrop API использует реализацию JSON:API для взаимодействия между backend и frontend и полностью соответствует:
Коллекция Postman с готовыми эндпоинтами:
https://drive.google.com/file/d/1rMf0XdrK1zXwPqLQVsTH44Z2ttFxj7ss/view?usp=drive_link
По словам авторов спецификации, JSON:API — это:
[...] спецификация того, как клиент должен запрашивать получение или изменение ресурсов, и как сервер должен отвечать на эти запросы.
JSON:API разработан с целью минимизации количества запросов и объёма передаваемых данных между клиентами и серверами. Эта эффективность достигается без ущерба для читаемости, гибкости или возможности обнаружения ресурсов.
Структуры данных Drupal — такие как типы сущностей, пакеты (bundles) и поля — исключительно хорошо подходят для JSON:API.
После включения модуля JSON:API вы мгновенно получаете полноценный REST API для каждого типа сущностей в вашем Drupal-приложении. JSON:API анализирует типы сущностей и пакеты, чтобы динамически предоставить URL-адреса для доступа ко всем сущностям с использованием стандартных HTTP-методов: GET, POST, PATCH и DELETE.
JSON:API следует философии, что модуль должен быть готов к использованию «из коробки». Это значит, что модуль имеет строго определённую структуру — размещение ресурсов, доступные методы — и управление доступом осуществляется через систему прав в ядре Drupal. На данный момент нет страниц конфигурации, что позволяет запустить API-ориентированное приложение на Drupal с минимальными усилиями.
Дочерние страницы этой документации будут включать:
- Основные концепции спецификации JSON:API и их применение в Drupal
- Общий обзор API, предоставляемого модулем
- Практическая информация о составлении HTTP-запросов
- Как аутентифицировать запросы
- Типичные ошибки и нюансы
- Подробную документацию по:
- Получению отдельных ресурсов (GET)
- Получению коллекций ресурсов (GET с фильтрацией, пагинацией и сортировкой)
- Созданию новых ресурсов (POST)
- Обновлению существующих ресурсов (PATCH)
- Удалению ресурсов (DELETE)
Если у вас есть конкретные вопросы, создайте запрос в очереди поддержки модуля JSON:API (480+ обращений).
API, предоставляемый модулем JSON:API, построен вокруг типов сущностей и пакетов в Drupal. Каждый пакет получает собственный уникальный URL, соответствующий общей схеме.
В отличие от REST-модуля ядра Drupal, эти пути не настраиваются и включены по умолчанию. Кроме того, JSON:API — это не просто формат передачи данных, как JSON или HAL+JSON. Он задаёт полный набор правил работы API: какие методы использовать, какие коды ответа возвращать, как формируется тело ответа и как осуществляется связь между ресурсами. Подробное сравнение — JSON:API vs. REST-модуль ядра.
Типы
Каждый ресурс в JSON:API должен иметь глобально уникальное свойство type
. В реализации Drupal это свойство формируется на основе машинного имени типа сущности и имени пакета. Например: статьи — node--article
, страницы — node--pages
, пользователи — user--user
. Обратите внимание, что сущность user в Drupal не имеет пакета, поэтому имя типа повторяется.
Структура URL
Пример URL в JSON:API:
GET|POST /jsonapi/node/article
PATCH|DELETE /jsonapi/node/article/{uuid}
Каждый тип ресурса должен иметь уникальный URL. Это означает, что URL не могут возвращать несколько типов. В Drupal URL-структура такова: /jsonapi/{entity_type_id}/{bundle_id}[/{entity_uuid}]
.
URL всегда начинается с /jsonapi
.
Затем следует ID типа сущности и ID пакета. Обратите внимание, что путь /jsonapi/node
отсутствует, так как нарушает спецификацию, возвращая несколько типов с одного URL.
Существуют:
/jsonapi/node/page
/jsonapi/node/article
Не существует:
/jsonapi/node
Чтобы обратиться к конкретному ресурсу (чтение, обновление, удаление), необходимо указать UUID ресурса. При создании ресурса или при получении коллекции ID указывать не нужно.
GET, POST
/jsonapi/node/article
PATCH, DELETE
/jsonapi/node/article/{uuid}
HTTP-методы
JSON:API поддерживает методы: GET, POST, PATCH и DELETE. Метод PUT не используется.
- GET — Получение данных (один или несколько ресурсов)
- POST — Создание нового ресурса
- PATCH — Обновление существующего ресурса
- DELETE — Удаление ресурса
Заголовки запросов
Не забудьте использовать заголовки Content-Type и Accept. Подробнее см. ответственность клиента.
Accept: application/vnd.api+json
Content-Type: application/vnd.api+json
Коды ответов
Спецификация JSON:API также определяет допустимые ответы. Реализация в Drupal поддерживает следующие коды:
- 200 OK — успешные запросы GET и PATCH
- 201 Created — успешные запросы POST (включает созданный ресурс)
- 204 No Content — успешные запросы DELETE
Статья с сайта Drupal Documentation.