Приложение разработано в рамках прохождения учебного курса Java-разработчик от Яндекс.Практикум
Его идея в том, чтобы собирать подборки полезных материалов и сохранять ссылки с разных устройств. Например, вы дизайнер и читаете много контента по дизайну — приложение даст возможность создать хранилище для лучших публикаций. Его можно использовать как самому, так и поделиться с другими дизайнерами.
Приложение представляет собой микросервис в контейнере Docker. Может сохранять заголовки страницы и
информацию о типе контента, который находится по этой ссылке: изображение, видео или что-то другое.
Предполагается, что Later работает со сторонним сервисом авторизации и аутентификации,
который частично обрабатывает первоначальные запросы и дальше передает их в основной сервис.
Приложение позволяет выбрать действия для следующих категорий:
-
пользователь:
- добавление нового пользователя (данные о новом пользователе передаются в теле запроса на
эндпоинт
POST /users
) - получение списка всех пользователей (эндпоинт
GET /users
)
- добавление нового пользователя (данные о новом пользователе передаются в теле запроса на
эндпоинт
-
ссылка:
- добавление новой ссылки (идентификатор пользователя передаётся в заголовке запроса
X-Later-User-Id
, данные о новой ссылке передаются в теле запроса на эндпоинтPOST /items
) - обновление информации о ссылке (на эндпоинт
PATCH /items/{itemId}?replaceTags=&unread=
передаются: в заголовке запроса идентификатор пользователяX-Later-User-Id
, в переменную пути{itemId}
идентификатор ссылки для обновления, в теле запроса список тэгов для обновления информации о ссылке, в параметре запроса?replaceTags=
- заменить тэги или добавить новые к существующим (принимает значенияtrue
илиfalse
, по умолчаниюfalse
), в параметре запросаunread=
- пометить как непрочитанную ссылку (принимает значенияtrue
илиfalse
, по умолчаниюfalse
)) - удаление ссылки (идентификатор пользователя передаётся в заголовке запроса
X-Later-User-Id
, идентификатор ссылки для удаления передаётся в переменную пути{itemId}
на эндпоинтDELETE /items/{itemId}
) - получение всех ссылок пользователя (на эндпоинт
GET /items?state=&contentType=&sort=&limit=&tags=
передаются: идентификатор пользователя в заголовке запросаX-Later-User-Id
, в параметрах запроса?state=
статус ссылок (по умолчаниюstate=unread
),contentType=
тип контента страницы (по умолчаниюcontentType=all
),sort=
тип сортировки ссылок (по умолчаниюsort=newest
),limit=
ограничение на количество выводимых результатов (по умолчаниюlimit=10
),tags=
список тэгов для поиска ссылок (по умолчанию не требуется)) - получение ссылок пользователя с проверкой их актуальности (идентификатор
пользователя передаётся в заголовке запроса
X-Later-User-Id
на эндпоинтGET /items/status
)
- добавление новой ссылки (идентификатор пользователя передаётся в заголовке запроса
- Windows 10 - операционная
система
- Java 11 - язык программирования
- IntelliJ IDEA
2022.1.4 (Ultimate Edition) - среда разработки
- Spring Boot 2.6.1 - используемый фреймворк
- PostgreSQL 13.7-alpine - основная база данных
- H2 - база данных для тестирования
- Apache Maven 4.0.0 - управление зависимостями
- Project Lombok 1.18.24 - библиотека аннотаций для сокращения
шаблонного кода
- Hibernate 5.6.10 - ORM-фреймворк
- Docker Desktop 20.10.17 -
платформа контейнеризации
- Docker Compose 3.8 - утилита для
развертывания контейнеров
- JUnit 4.13.2 - фреймворк для модульного тестирования программного
обеспечения на языке Java
- Mockito 4.5.1 - фреймворк для тестирования программного
обеспечения
- Postman 9.31.0 - приложение для выполнения запросов
к API
В приложении использованы шаблоны проектирования Data Transfer Object (DTO Pattern) и Builder.
На Вашем компьютере должны быть установлены соответствующие приложения из раздела "Стек технологий". Для запуска приложения необходимо:
- склонировать проект на свой компьютер
- запустить приложение Docker
- открыть склонированный проект в IntelliJ IDEA
- открыть терминал командной строки и вписать команду
mvn clean package
. Дождаться выполнения успешной сборки проекта. - далее в терминал вписать команду
docker compose up
и дождаться успешного запуска сервиса в контейнере Docker.
Для использования приложения необходимо открыть браузер или программу для
работы с API, например, Postman.
В адресной строке написать https://localhost:8080/
и далее необходимый эндпоинт для
подходящего действия из раздела Функционал.
Написаны модульные тесты (выполняются в отдельной базе данных
H2).
Чтобы пройти тесты достаточно открыть склонированный проект
в IntelliJ IDEA
, перейти в директорию тестов Later/src/test/java/ru.practicum.user
и выбрать из
предложенных интересующий класс для проверки (красная стрелка)
Внутри класса можно запустить все тесты, которые есть в данном классе, нажав на двойной
зелёный треугольник слева от названия класса, или же запустить выполнение определенного теста,
нажав на зелёный треугольник слева от названия теста.
Связаться с автором проекта можно в telegram.