DerMaven/Filmorate

RESTful Web API сервис, позволяющий пользователям находить, оценивать фильмы, добавлять их в избранное, а также находить друзей и общих знакомых со схожими вкусами.

★ 0Forks 0JavaGitHub ↗Compare
h2-databasehibernatehibernate-jpahibernate-ormjavamovies-api-appmovies-ratespring-boot

README

Filmorate - сервис для подбора и оценки фильмов

Данный проект представляет собой бэкенд для сервиса, который работает с фильмами и оценками пользователей. Проект создан на основе Spring Boot, с использованием языка Java 17 и системы сборки проектов Maven. В зависимости проекта добавлены следующие сторонние библиотеки: spring-boot-starter-web, spring-boot-starter-jdbc, Lombok и H2.

Информация о фильмах, пользователях, жанрах и рейтингах хранится в реляционной системе управления базами данных H2.


Содержание


Функционал

В данном проекте реализованы следующие функции:

  • CRUD-операции над фильмами, пользователями, жанрами и рейтингами
  • Получение лучших фильмов по рейтингу
  • Лайк и дизлайк фильма пользователем
  • Добавление и удаление пользователя из списка друзей
  • Получение списка друзей пользователя
  • Получение списка общих друзей между двумя пользователями

API Эндпоинты

Работа с фильмами (/films)

Метод Эндпоинт Описание
POST /films Добавление нового фильма
PUT /films Обновление существующего фильма
DELETE /films Удаление фильма
GET /films Получение списка всех фильмов
GET /films/{id} Получение фильма по ID
PUT /films/{id}/like/{userId} Поставить лайк фильму
DELETE /films/{id}/like/{userId} Удалить лайк
GET /films/popular Получение списка самых популярных фильмов (параметр count, по умолчанию 10)

Работа с пользователями (/users)

Метод Эндпоинт Описание
POST /users Регистрация нового пользователя
PUT /users Обновление данных пользователя
GET /users Получение всех пользователей
GET /users/{id} Получение пользователя по ID
PUT /users/{id}/friends/{friendId} Добавление в друзья
DELETE /users/{id}/friends/{friendId} Удаление из друзей
GET /users/{id}/friends Список друзей пользователя
GET /users/{id}/friends/common/{otherId} Список общих друзей с другим пользователем

Жанры и рейтинги (/genres & /mpa)

Метод Эндпоинт Описание
GET /genres Получить список всех жанров
GET /genres/{id} Получить жанр по ID
GET /mpa Получить список всех рейтингов MPAA
GET /mpa/{id} Получить рейтинг MPAA по ID

Как запустить проект?

База данных

  1. Загрузить проект из ветки "main" по ссылке на скачивание;
  2. Извлечь содержимое архива;
  3. Создать базу данных на базе H2;
  4. При создании БД указать следующие данные:
  • User: sa
  • Password: password
  • URL: jdbc:h2:file:;AUTO_SERVER=TRUE
  1. При успешном создании БД откроется консоль;
  2. Также при успешном запуске программы, о чём будет рассказано дальше, весь sql-код в файле schema.sql, находящемся по пути filmorate/src/main/resources/, будет автоматически инициализирован.

Программа

  1. Открыть IntelliJ IDEA или иную среду разработки;
  2. Перед запуском программы необходимо внутри пути filmorate/src/main/resources/ в файле application.properties вписать в параметре spring.datasource.url путь до вашей базы данных, а именно: jdbc:h2:file:;AUTO_SERVER=TRUE;
  3. Внутри IDE запустить из пути filmorate/src/main/java/org/example/ файл FilmorateApplication.java;
  4. Если после запуска не были выброшены исключения, то это говорит об успешном запуске проекта!

Note

  • Перед началом работы убедитесь в работоспособности БД, выполнив тест соединения (в DataGrip или IntelliJ IDEA при создании базы данных нажмите "test connection");
  • Проверьте, что все зависимости и сторонние библиотеки, указанные в pom.xml, загружены на ваш ПК;
  • Убедитесь, что у вас установлена Java 17, необходимая для запуска программы.

Где пользователи могут получить помощь по проекту?

При наличии вопросов или предложений касаемо проекта писать в telegram: @der_maven поддержка проекта осуществляется автором репозитория

Contributors

DerMaven

Issues