Filmorate — это REST API сервис для рекомендаций фильмов с возможностью ставить лайки, добавлять и удалять друзей, а также получать список популярных фильмов.
Проект разработан на Spring Boot на основе многослойной архитектуры и работы с JDBC.
- CRUD для фильмов с поддержкой жанров и MPA-рейтингов
- Добавление и удаление лайков
- Получение списка популярных фильмов с подсчётом лайков
- CRUD для пользователей
- Добавление и удаление друзей
- Получение списка друзей и общих друзей между пользователями
- Жанры: получение всех или по ID
- MPA рейтинги: получение всех или по ID
- Язык: Java 21
- Фреймворк: Spring Boot 3 (Web, Validation, JDBC)
- База данных: H2 (in-memory)
- Инструменты: Maven, Lombok, Logbook, Checkstyle
Проект реализован по многослойной архитектуре: Controller → Service → Repository → Database
- Controller — REST API и эндпоинты
- Service — бизнес-логика, валидация и обработка ошибок
- Repository — работа с БД через NamedParameterJdbcOperations
- Database — in-memory H2 с таблицами для фильмов, пользователей, лайков, жанров и рейтингов
mvn clean packagemvn spring-boot:run
или
java -jar target/filmorate-0.0.1-SNAPSHOT.jar
API будет доступно по адресу:
http://localhost:8080
GET /films
GET /films/{id}
POST /films
PUT /films
PUT /films/{id}/like/{userId}
DELETE /films/{id}/like/{userId}
GET /films/popular?count=10
GET /users
GET /users/{id}
POST /users
PUT /users
PUT /users/{id}/friends/{friendId}
DELETE /users/{id}/friends/{friendId}
GET /users/{id}/friends
GET /users/{id}/friends/common/{otherId}
GET /genres
GET /genres/{id}
GET /mpa
GET /mpa/{id}
