Разработать REST-сервис, предоставляющий REST-интерфейс для загрузки файлов и вывода списка уже загруженных файлов пользователя. Все запросы к сервису должны быть авторизованы. Заранее подготовленное веб-приложение (FRONT) должно подключаться к разработанному сервису без доработок, а также использовать свой функционал для авторизации, загрузки и вывода списка файлов пользователя.
- Сервис должен предоставлять REST-интерфейс для интеграции с FRONT.
- Сервис должен реализовывать все методы, описанные в yaml-файле:
- Авторизация (логин и логаут).
- Вывод списка файлов.
- Добавление файла.
- Удаление файла.
- Скачивание файла.
- Переименование файла.
- Все настройки должны вычитываться из файла настроек (yml).
- Информация о пользователях сервиса (логины для авторизации) и данные должны храниться в базе данных (на выбор).
- Приложение разработано с использованием Spring Boot.
- Использован сборщик пакетов gradle/maven.
- Для запуска используется docker, docker-compose.
- Код размещён на Github.
- Код покрыт unit-тестами с использованием mockito.
- Добавлены интеграционные тесты с использованием testcontainers.
Фронт-приложение на Vue.js, предоставляющее веб-интерфейс пользователю, дано как-есть.
Для его работы требуется nodejs версии от 19.7.0.
Следуя описанию, оно запускается командами npm install, npm run serve в его рабочей директории.
Корневой URL для вызова тылового сервиса прописывается в файле .env.
По умолчанию приложение запускается на порту 8080 и доступно в браузере как http://localhost:8080. Если порт 8080 занят, занимается ближайший следующий доступный порт. После выполнения npm run serve в терминале отображается, на каком порту оно запустилось.
Для авторизации веб-приложение присылает на оконечник /login логин и пароль, ожидая в ответ токен авторизации (произвольного вида). Все последующие авторизованные запросы от него сопровождаются этим токеном в заголовке "auth-token". Выход из приложения осуществляется запросом к оконечнику /logout, который удалит/деактивирует токен. Последующие запросы с этим токеном будут не авторизованы и вернут код 401.