Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/streamlined2/rest-application
- Owner: streamlined2
- Created: 2024-04-17T10:53:36.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-06-06T15:28:25.000Z (7 months ago)
- Last Synced: 2024-06-07T14:52:22.899Z (7 months ago)
- Topics: apache-poi, docker-compose, hibernate-orm, java-17, liquibase, maven, mockmvc, postgresql, rest, spring-boot, spring-data-jpa
- Language: Java
- Homepage:
- Size: 311 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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 на рівні контролера, що спрощує супровід проєкту.