Skip to content

Тестовое задание: Реализация REST приложения на Spring Boot

Notifications You must be signed in to change notification settings

knastnt/meshtest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание: Реализация REST приложения на Spring Boot

demo


🎮 Показать Демо (login:user password:1)
🎁 Скачать проект ZIP
Скачать JAR

Задание: https://docs.google.com/document/d/1FKiNwuKPcfVhAa0p6ipLIlyT8uTrIIo8Ii_UfgmW5GQ/edit


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

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

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

Для работы с приложением необходима авторизация:

Пользователь user, пароль 1

Принимается авторизация как через форму логина (http//localhost:8010/login), так и через передачу учетных данных в Header`е (Basic Authentification). В случае успешной аутентификации выдаётся Cookie secret, при предъявлении которой повторная передача логина и пароля не требуется.

Завершение сессии происходит путём выполнения GET запроса http//localhost:8010/exit


REST эндпоинты

Note: Для документирования REST к приложению подключен Swagger:
localhost:8010/v2/api-docs
localhost:8010/v3/api-docs
localhost:8010/swagger-ui/index.html

####Эндпоинты реализованы согласно заданию с некоторыми оговорками:

GET /profiles/last возвращает 404 в случае отсутствия последнего добавленного профиля.

GET /profiles/{ID} возвращает 500 в случае ошибки парсинга ID (да, код должен быть другой, но это я уже не реализовывал)

POST /profiles/get возвращает 500 в неверных параметров (да, код должен быть другой, но это я уже не реализовывал)

GET /error/last возвращает 404 в случае отсутствия последней ошибки (и это считается ошибкой, поэтому в след.раз вернёт её =) ).

created: timestamp в миллисекундах

GET /exit Производит закрытия приложение у меня не поднялась рука останавливать работу всего приложения по GET - запросу. Поэтому сделал logout

Структура проекта

├── model/                          # каталог с Entity
|   └── Profile                     # Entity объект профиля
├── repository/                     # интерфейсы репозиториев
|   └── CrudProfileRepository       # наследник JpaRepository с парой дополнительных методов
├── util/                           # утильные классы
│   ├── exception/                  # объекты связанные с исключениями
│   |   ├── ErrorInfo               # объект возвращаемого JSON исключения
│   |   └── NotFoundException       # кастомный эксэпшн
|   └── ExceptionUtil               # утильные методы связанные с обработкой исключений
├── web/                            # классы непосредственно относящиеся к web взаимодействию
│   ├── error/                      # контроллеры исключений
│   |   └── ErrorRestController     # контроллер обрабатывающий GET /error/last
│   ├── profile/                    # контроллеры профиля
│   |   └── ProfileRestController   # контроллер обрабатывающий /profiles
│   ├── ExceptionInfoHandler        # обработчик исключений
│   └── RootController              # контроллер обрабатывающий GET /exit-success
├── MeshtestApplication             # главный класс приложения
└── WebSecurityConfig               # настройки Spring Security
...
── application.properties           # настройки приложения (порт, соединение с БД, генерация DDL, логирование...)

About

Тестовое задание: Реализация REST приложения на Spring Boot

Resources

Stars

Watchers

Forks

Languages