Skip to content

Тестовое задание: Реализация микросервиса с REST API на Spring Boot + Docker

Notifications You must be signed in to change notification settings

knastnt/veetest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание: Реализация микросервиса с REST API на Spring Boot + Docker



📣 Запуск приложения через Docker

Для запуска нам потребуется контейнер с postgresql и контейнер приложения:

docker run -d -p 5432:5432 --name veeroute-postgres -e POSTGRES_PASSWORD=mysecretpassword --env="POSTGRES_DB=veeroute" postgres
docker run -dp 8080:8080 --link veeroute-postgres:pgsql knastnt/veetest

Можно открывать в http://localhost:8080/employees

База данных пуста.


Задание:

Необходимо реализовать микросервис - rest api для CRUD приложения , которое
возвращает список всех сотрудников в базе (с пагинацией по n сотрудников). С
возможностью их удаления, редактирования, добавления новых.
У вас есть всего 1 таблица employees. В ней хранится список
сотрудников(например,сотрудники какого-то предприятия).Сотрудников можно
добавлять (create), получать данные(read), изменять данные о сотруднике
(update), удалять(delete).
Данные, которые должны быть в таблице:
● id –идентификатор сотрудника;
● first_name –Имя сотрудника
● last_name – фамилия сотрудника
● middle_name - отчество сотрудника
● date_of_birth –дата рождения;
● date_added - дата добаления сотрудника
● date_updated -дата обновления данных сотрудника
● account_number - номер счета
● is_deleted – true- сотрудник был удален, false- сотрудник не удален
API:
1) Запрос на получение данных всего списка неудаленных сотрудников
(+реализовать пагинацию)
2) Запрос на получения сотрудника по id
3) Запрос на обновление информации о сотруднике по id
4) Запрос на удаление сотрудника по id (в базе поменять флажок is_deleted)
5) Запрос на добавление сотрудника
Тип формата сообщений:json
Требования:
• Java 8-11
• Spring/Springboot.
• PostgreSQL/Redis
• Maven/Gradle
Покройте ваше приложение автотестами(JUnit/Mockito) и упакуйте микросервис в
docker, тестовую базу тоже можете поместить в docker, не забудьте сопроводить
ваше приложение инструкцией по запуску и описания входных и выходных
пакетов.

Описание приложения

Приложение создано на стеке Java 11, Maven, Spring Boot, Spring Web, Spring Data JPA (Hibernate), PostgreSQL, JUnit.

Приложение запускается на 8080 порту.

Для работы с приложения необходим доступ к БД:

PostgreSql pgsql:5432, имя базы veeroute

Создание структуры происходит автоматически при запуске приложения.

При запуске тестов - содержимое таблицы уничтожается и заполняется тестовыми данными.


REST эндпоинты

GET /employees возвращает список всех работников на одной странице

GET /employees?page=2 возвращает список работников постранично. В параметре page указывается номер страницы, начиная с 1. Количество работников на одной странице устанавливается свойством app.rest.employee.count-on-page в файле application.properties и сейчас равно 2.

GET /employees/{ID} возвращает работника по его id, и код 404 если таковой отсутствует

POST /employees создает нового работника, принимая данные в формате JSON. Валидация параметров не производится, обязательных полей нет. Возвращает созданного работника с присвоенными id, датой создания и датой изменения, отметкой isDeleted. Пример json:

{
    "firstName": "Геннадий",
    "lastName": "Поляков",
    "middleName": "Юрьевич",
    "dateOfBirth": "2001-05-26 15:00:05",
    "accountNumber": 31556,
    "deleted": false
  }

PUT /employees/{id} редактирует выбранного работника, принимая данные в формате JSON. Валидация параметров не производится, обязательных полей нет. Ничего не возвращается. При редактировании обнавляется поле с датой обновления. Если id в адресе не совпадает и id в JSON, будет возвращен код 400. Пример json:

{
    "id":4,
    "firstName": "Геннадий",
    "lastName": "Поляков",
    "middleName": "Юрьевич",
    "dateOfBirth": "2001-05-25 23:00:05",
    "accountNumber": 31556,
    "deleted": false
  }

DELETE /employees/{id} удаляет выбранного работника, изменяя флаг isDeleted. Возвращает 404 в случае отсутствия удаляемого работника.

Что осознанно не сделано или сделано недостаточно:

  • Отсутствие валидации входных данных
  • Отсутствие набора обязательных полей
  • Недостаточно подробная обработка ошибок и логика формирования исключений.
  • Отсутствие разделения БД для тестов с рабочей БД

Создание контейнера

docker run -d -p 5432:5432 --name veeroute-postgres -e POSTGRES_PASSWORD=mysecretpassword --env="POSTGRES_DB=veeroute" postgres
mvn -Dmaven.test.skip=true package
docker build -t veetest .
docker run -t --link veeroute-postgres:pgsql -p 8080:8080 veetest

About

Тестовое задание: Реализация микросервиса с REST API на Spring Boot + Docker

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published