Приложение нацелено на закрепление на практике работы с различными HTTP-клиентами. Для этих целей оно предоставляет ряд
эндпоинтов для стандартных CRUD-операций над двумя связанными сущностями: Brand и Car.
Доступные запросы, описание для них и для Request/Reaponse body каждого из них можно найти в сваггере. После запуска приложения он доступен по URL: http://localhost:8080/swagger-ui/index.html
Запустить приложение можно несколькими способами:
- Выполнить Gradle task
bootRun. Через IDEA он доступен в группе задачapplication; - Выполнить тот же таск через gradle wrapper в консоли:
./gradlew :bootRun(Linux, MacOS) илиgradlew.bat :bootRun(Windows). Единственное значимое отличие от запуска через IDEA - не будет доступен дебаг, но в нем и нет необходимости; - Запуск через IDEA, используя Spring Boot конфигурацию. Этот вариант доступен только для IDEA Ultimate, визуально ничем не отличается от стандартного запуска Java-приложения - конфигурация должна определиться автоматически и быть доступа по запуску одним кликом.
Приложение позволяет добавлять, обновлять, удалять и получать информацию о брендах автомобилей и самих автомобилях. При этом в Swagger можно найти информацию об ожидаемых полях для каждого запроса, их описание и требования к заполнению: обязательность, минимальные значения и пр.
Также рекомендую обратить внимание, что невозможно создать машину без указания бренда или использовать несуществующий бренд.
Таким образом, рекомендуемые сценарии взаимодействия сводятся к следующему:
- Протестируйте положительные сценарии: попробуйте добавлять, обновлять и удалять машины и бренды. Попробуйте получать информацию о них через GET-методы;
- Попробуйте передавать невалидные данные: получить объект по несуществующему id, не заполнить при создании/обновлении обязательное поле, попытаться создать машину с несуществующим брендом. Обращайте внимание на коды и тела ответов в таких случаях.
Для взаимодействия с API вы можете использовать любой HTTP-клиент на свой вкус. Хост для выполнения запросов -
http://localhost:8080, пути к конкретным ресурсам (эндпоинты) доступны через Swagger.
Если вам хочется немного покодить - вы можете доработать сервисный слой приложения. В нем использован ряд технологий, с которыми мы еще не знакомы. Но методы в классах-сервисах не содержат чего-то принципиально нового для нас. Зато они содержат ряд недостатков:
- Проблема с синхронизацией, в свете чего есть риск получить непредсказуемое поведение при обработке нескольких запросов одновременно. Грамотная доработка с использованием блокировок или возможностей потокобезопасных коллекций может решить эту проблему;
- Юнит-тесты для сервисного слоя. Сейчас их нет ни в каком виде;
- Проблема с хранением данных - сейчас вся информация хранится in-memory, а значит - теряется после завершения работы приложения. Ваших знаний достаточно, чтобы реализовать хранение в базе данных.