Skip to content

ProductList - REST API project on Spring Boot / MongoDB / Swagger

Notifications You must be signed in to change notification settings

alex90bar/productList

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ProductListApplication

Описание проекта

ProductListApplication - это учебный проект на Spring Boot. БД - PostgreSQL.
Второй вариант - на БД MongoDB: https://github.com/alex90bar/productList/tree/mongoDB-dev
Взаимодействие приложения с БД через Spring Data JPA / Hibernate.
Подключен Liquibase для удобства контроля версий БД.
Маппинг сущностей выполняется через MapStruct.
Валидация на spring-boot-starter-validation.
В проекте также используется Lombok для упрощения процесса разработки и снижения количества кода.
Настройки приложения в файле src/main/resources/application.yaml.
Ключевые места бизнес-логики покрыты тестами. Порт приложения: 8080.

Приложение упаковано в докер-контейнер. При запуске контейнера БД заполняется тестовыми данными (src/main/resources/db/changelog/2022/08/data.sql), можно выполнять запросы.

Подключен Swagger, подробная документация по эндпоинтам: http://localhost:8080/swagger-ui/

Также можно открыть в файле swagger.json в корне проекта

Скрипты для запуска приложения и БД:

docker network create my-network
docker run --network=my-network --name postgres -e POSTGRES_DB=postgres -e POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres -p 5435:5432 -d postgres
docker run --network=my-network --rm -p 8080:8080 -e DATABASE_URL=postgresql://postgres:5432/postgres alex90bar/product-list:latest

Список эндпоинтов:

Endpoint Description JSON Body
http://localhost:8080/api/list Получение всех существующих List, включая список всех Product по каждому List, и суммарное количество kcal по каждому List, запрос GET в формате JSON: Не требуется
http://localhost:8080/api/list Создание нового List в БД, проверяет на наличие по названию, запрос POST в формате JSON: { "name": "Закуски"}
http://localhost:8080/api/product Получение всех существующих продукт, запрос GET в формате JSON: Не требуется
http://localhost:8080/api/product Создание нового Product в БД, проверяет на наличие по названию, запрос POST в формате JSON: { "description": "Урожай - лето 2022, Воронежская область. Нежный, рассыпчатый", "kcal": 148, "name": "Картофель молодой"}
http://localhost:8080/api/product Помещает выбранный Product в существующий List, проверяет на наличие по названию, проверяет на наличие в List, запрос PUT в формате JSON: { "listName": "Закуски", "productName": "Картофель молодой" }

About

ProductList - REST API project on Spring Boot / MongoDB / Swagger

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published