Как настроить 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-разработчик