🎮 Показать Демо (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 порту.
Для работы с приложением необходима авторизация:
Принимается авторизация как через форму логина (http//localhost:8010/login), так и через передачу учетных данных в Header`е (Basic Authentification). В случае успешной аутентификации выдаётся Cookie secret, при предъявлении которой повторная передача логина и пароля не требуется.
Завершение сессии происходит путём выполнения GET запроса http//localhost:8010/exit
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, логирование...)
- Konstantin Zubrilin | HH.ru | 456kot@mail.ru
