/text-validator-service

An example of simple rule based text validation service on Spring Boot

Primary LanguageJava

Text Validator Service

Вебсервис - валидатор текстового контента на соответсвие заданным критериям. Критерии задаются в виде правил валидации (Rules). В рамках конкурсного задания в решении реализованы проверки парности символов круглых скобок (BracketContentRule) и наличия какого либо текста между ними (BracketPairRule).

Концепция правил валидации текста позволяет легко добавлять новые типы проверок текстовой сроки, через описание и добавление новых правил валидации.

Первичная обработка входных данных (непустая строка текста) реализована на декларативном уровне через аннотацию @NotEmpty библиотеки валидации Спринга. При необходимости, можно добавить дополнительные проверки к полю запроса.

Требования к системе для запуска решения

  • Docker
    ИЛИ
  • Установленная Java >= 17 версии

Инструкция по запуску

Способ 1. Запуск сервиса в докер-контейнере

Запустите скрипт build_and_run_docker.sh.

chmod +x build_and_run_docker.sh
./build_and_run_docker.sh

Он выполнит все необходимые шаги по сборке проекта, образа и запуску контейнера с сервисом. После успешного завершения работы скрипта сервис будет доступен по адресу http://localhost:8080/api

Способ 2. Запуск через Gradle

Выполните команду:

./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": "Вчера я отправился в поход в лес (это мое любимое место для отдыха) вместе с друзьями. Мы выбрали маршрут, который проходил через горные потоки и поля (для разнообразия). В начале пути погода была отличной, солнце светило ярко, и птицы радостно пели. Однако, когда мы подошли ближе к вершине горы, небо стало покрываться облаками, (как будто природа готовила нам небольшой сюрприз). Несмотря на это, виды были захватывающими, особенно когда мы достигли высшей точки и увидели прекрасный вид на долину (я почувствовал, что все усилия стоили того)."  
}'

Документация

Ссылки (для доступа должен быть запущен сервис):