Вебсервис - валидатор текстового контента на соответсвие заданным критериям. Критерии задаются в виде правил валидации (Rules). В рамках конкурсного задания в решении реализованы проверки парности символов круглых скобок (BracketContentRule) и наличия какого либо текста между ними (BracketPairRule).
Концепция правил валидации текста позволяет легко добавлять новые типы проверок текстовой сроки, через описание и добавление новых правил валидации.
Первичная обработка входных данных (непустая строка текста) реализована на декларативном уровне через аннотацию @NotEmpty библиотеки валидации Спринга. При необходимости, можно добавить дополнительные проверки к полю запроса.
- Docker
ИЛИ - Установленная Java >= 17 версии
Запустите скрипт build_and_run_docker.sh
.
chmod +x build_and_run_docker.sh
./build_and_run_docker.sh
Он выполнит все необходимые шаги
по сборке проекта, образа и запуску контейнера с сервисом. После успешного завершения работы скрипта
сервис будет доступен по адресу http://localhost:8080/api
Выполните команду:
./gradlew bootRun
Cервис будет доступен по адресу http://localhost:8080/api
Функционал сервиса покрыт модульными (сервис, контроллер, рулы ) и сервисным тестом (сервис без моков). Для запуска тестов запустите gradle таску:
./gradlew test
Если необходимо протестировать взаимодействие с сервисом вручную, используйте curl или любой другой http клиент.
curl --request POST \
--url http://localhost:8080/api/checkBrackets \
--header 'Content-Type: application/json' \
--data '{
"text": "Вчера я отправился в поход в лес (это мое любимое место для отдыха) вместе с друзьями. Мы выбрали маршрут, который проходил через горные потоки и поля (для разнообразия). В начале пути погода была отличной, солнце светило ярко, и птицы радостно пели. Однако, когда мы подошли ближе к вершине горы, небо стало покрываться облаками, (как будто природа готовила нам небольшой сюрприз). Несмотря на это, виды были захватывающими, особенно когда мы достигли высшей точки и увидели прекрасный вид на долину (я почувствовал, что все усилия стоили того)."
}'
Ссылки (для доступа должен быть запущен сервис):