Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/streamlined2/rest-application

Simple REST application
https://github.com/streamlined2/rest-application

apache-poi docker-compose hibernate-orm java-17 liquibase maven mockmvc postgresql rest spring-boot spring-data-jpa

Last synced: about 1 month ago
JSON representation

Simple REST application

Awesome Lists containing this project

README

        

Запуск програми


Метод main основного класу застосунку com.streamlined.restapp.RestApplication


Імпорт даних основної сутності


Вихідний файл для імпорту даних основної сутності Person розташований за посиланням

https://github.com/streamlined2/REST-application/blob/main/src/main/resources/data/data0.json


Файл створений за допомогою метода main класа генератора випадкових даних com.streamlined.restapp.generator.PersonDataGenerator із параметрами кількість файлів 1, кількість сутностей 1000.


Скріпти Liquibase


Скріпти Liquibase для створення таблиць, індексів сутностей Person, Country і заповнення таблиці допоміжної сутності Country розташовані в теці src/main/resources/db


Збереження даних


Для збереження і роботи із даними використовується імідж PostgreSQL 16.2


https://hub.docker.com/r/bitnami/postgresql


Сервіс запускається за допомогою Docker Compose, файл налаштування compose.yaml розташований в корні проєкту.

Дані контейнера відображаються в локальну теку D:\postgresql.


Виконання запитів для ендпойнтів _list, _report основної сутності Person


Приклад виконання запитів для ендпойнта /api/person/_list



Запит для отримання першої сторінки розміром 10 сутностей зі значеннями статі FEMALE, кольору очей RED та волосся YELLOW



{
"sex":"FEMALE",
"eyeColor":"RED",
"hairColor":"YELLOW",
"page":0,
"size":10
}


Для пошуку людини Person по допоміжній сутності країни Country можна зазначити одну із властивостей id, name, або capital


Наприклад, для пошуку людини за іменем країни походження та за іменем столиці країни громадянства слід вказати запит



{
"countryOfOrigin":{
"name": "USA"
},
"citizenship":{
"capital": "Washington"
},
"page":0,
"size":10
}


Для пошуку за первинним ключем id країни походження можна вказати запит



{
"countryOfOrigin":{
"id":1
},
"page":0,
"size":10
}


Оскільки основна сутність Person містить дві властивості допоміжної сутності Country, а саме countryOfOrigin та citizenship, посилання на первинний ключ допоміжної сутності countryId є двозначним і неможливим.


Запити для ендпойнта /api/person/_report ідентичні, але без використання параметрів page, size


Валідація даних


Валідація даних виконується компонентом Validator на рівні сервісу перевіркою сутностей, а не DTO на рівні контролера, що спрощує супровід проєкту.