Как настроить CRUD REST API, начиная с модели данных и без генерации кода, с помощью Gemini Framework (платформа Spring / Java)

Gemini - это основанная на модели REST структура для автоматического создания CRUD API. Вы можете заглянуть в официальный репозиторий здесь.

Мы собираемся определить сущности и код для получения следующих CRUD API.

В этой статье объясняется, что входит в репозиторий Gemini Starter и как начать работу с полноценным проектом Gemini.



1. Пользовательский модуль Gemini

Gemini состоит из серии модулей (core, auth, gui и т. Д.). Когда вы запускаете проект, вы также можете предоставить свой настраиваемый модуль, который является контейнером для ваших сущностей, кода и API.

В предыдущем коде показано, как начать работу с Модулем Близнецов. Gemini имеет два контекста Spring: корневой, который загружает сущности и обрабатывает основные функции, и контекст api, запускающий веб-приложение. Поэтому мы используем MyCustomModule для сканирования основных компонентов и событий, в то время как MyCustomModuleAPI используется для сканирования модуля API (что может быть полезно, если вы хотите зарегистрировать полностью настраиваемые конечные точки Spring web / rest. ). Но обычно они вам не нужны, чтобы начать работу с базовыми REST-функциями Gemini.

Важно то, что основной компонент должен иметь приоритет над модулем интерфейса Gemini.

2. Gemini DSL и сущности

Поскольку имя настраиваемого модуля - CUSTOM_MODULE, мы можем поместить определение схемы в файл ресурсов schemas / CUSTOM_MODULE.at.

В репозитории у нас есть:

Обратите внимание, что у сотрудника есть две ссылки на сущность: компания и пол.

Пол - это особая сущность, которая реализует Домен (встроенный интерфейс Gemini, который предоставляет два поля: код и описание).

3. неизменные сущности

Неизменяемые объекты - это объекты, которые нельзя изменить, поэтому не разрешается добавлять запись (POST) или изменять существующую (PUT). Но как Близнецы могут их инициализировать? Это просто, просто добавьте всю запись в файл инициализации записи модуля records / CUSTOM_MODULE.atr

В предыдущем файле мы определили:

  • значения домена для объекта Пол
  • и мы сделали Gender Immutable, указав, что это закрытый домен.

NB: В Близнецах каждая Сущность связана с множеством метаданных. Все эти мета хранятся в Entity под названием Entity. Да, это так, и вы можете запрашивать все метаданные с помощью Swagger, используя конечную точку Entity.

Итак, после того, как Gemini завершит свой запуск, у вас уже будет пол, заполненный значением, инициализированным в файле.

И если вы посмотрите на гендерные API, вы увидите, что вы не можете POST / PUT / DELETE. Это закрытый неизменяемый домен. Просто ПОЛУЧИТЕ гендерные записи.

4. Расчетное поле с использованием Gemini Events.

API-интерфейсы CRUD полезны, но иногда вы хотите добавить некоторую логику или настраиваемое поведение, например, проверку или вычисляемое поле или записи, которые автоматически создают другие записи в качестве зависимости.

Например, позвольте сделать fullName вычисляемым полем путем объединения firstName и lastName. Мы работаем над сущностью EMPLOYEE и регистрируем событие до того, как запись будет вставлена ​​(создана) в первый раз, а также каждый раз, когда записи изменяются (обновляются).

Это просто. Вам нужна только комбинация аннотаций Близнецов и функция для извлечения полного имени.

Как видите, если мы POST a new Entity, fullName вычисляется автоматически.

Наконец-то

В этой статье я покажу вам, как легко начать с Близнецов. Но будет разработано много улучшений, поэтому я предлагаю следить за мной и основным репозиторием, который будет обновляться о каждом выпуске.

Другие полезные ресурсы для изучения Java, которые могут вам понравиться
10 вещей, которые Java-программист должен выучить в 2019 году
10 бесплатных курсов для изучения Java с нуля
10 Книги для углубленного изучения Java
10 инструментов, которые должен знать каждый Java-разработчик
10 причин изучать языки программирования Java
10 фреймворков, которые Java и веб-разработчики должны изучить в 2019 году < br /> 10 советов, как стать лучшим Java-разработчиком в 2019 году
5 лучших Java-фреймворков, которые следует изучить в 2019 году
10 библиотек тестирования, которые должен знать каждый Java-разработчик