REST API на Spring Boot для управления облачным хранилищем файлов и директорий с аутентификацией пользователей. Использует MinIO в качестве S3-совместимого хранилища объектов.
Этот проект предоставляет RESTful API для выполнения следующих операций:
- Регистрация и аутентификация пользователей.
- Создание и управление директориями пользователя в облачном хранилище.
- Загрузка одного или нескольких файлов в указанную директорию.
- Получение информации о файле или директории.
- Получение содержимого директории.
- Скачивание файла или директории (в виде ZIP-архива).
- Перемещение/переименование файлов и директорий.
- Удаление файлов и директорий (рекурсивно).
- Поиск файлов по имени в хранилище пользователя.
- Аутентификация: Регистрация (Sign Up), Вход (Sign In), Выход (Sign Out), Получение текущего пользователя.
- Управление ресурсами: CRUD-подобные операции для файлов и директорий.
- Скачивание: Файлы скачиваются напрямую, директории - в виде ZIP-архива.
- Рекурсивные операции: Удаление и перемещение директорий происходит рекурсивно.
- Хранилище: Использует MinIO (или другое S3-совместимое хранилище).
- Язык: Java 21
- Фреймворк: Spring Boot 3
- Безопасность: Spring Security (Аутентификация, Авторизация, CORS)
- Данные: Spring Data JPA, Hibernate
- Объектное хранилище: MinIO Java Client
- Сессии: Redis
- База данных: PostgreSQL
- Утилиты: Lombok, MapStruct
- Тестирование: JUnit, Spring Boot Test, Testcontainers
- Сборка: Gradle, Docker
- JDK 21 или выше
- Docker и Docker Compose (рекомендуется для локального запуска MinIO, Postgres и Redis)
- Запущенный экземпляр MinIO
- Запущенный экземпляр Redis
- Запущенный экземпляр PostgreSQL
-
Клонируйте репозиторий:
git clone <URL_ВАШЕГО_РЕПОЗИТОРИЯ>
-
Настройте MinIO:
- Убедитесь, что у вас запущен MinIO сервер.
- Создайте бакет (bucket), имя которого вы укажете в конфигурации приложения.
-
Настройте Базу Данных:
- Создайте базу данных для приложения.
-
Настройте приложение:
- Отредактируйте
application.yml, указав ваши параметры.
- Отредактируйте
-
Соберите проект:
./gradlew clean build
-
Запустите приложение:
./gradlew bootRun # или запустите из вашей IDEПриложение будет доступно по адресу
http://localhost:8080(или порту, указанному в конфигурации).
Сервис предоставляет RESTful API по следующим базовым путям:
/api/auth/**: Эндпоинты для аутентификации (sign-up, sign-in, sign-out, current)./api/resources/**: Эндпоинты для управления ресурсами (upload, download, move, delete, search, info)./api/directory/**: Эндпоинты для управления директориями (create, list)./api/user/me**: Эндпоинт для получения информации о текущем пользователе.
Для получения детальной информации об эндпоинтах, параметрах и форматах запросов/ответов смотрите исходный код контроллеров или документацию Swagger/OpenAPI (/swagger-ui.html).
В проекте более 70 тестов. Для запуска тестов выполните:
./gradlew test