Skip to content

KFalcon2022/test-http-client

Repository files navigation

Приложение для практики работы с HTTP-запросами

Приложение нацелено на закрепление на практике работы с различными HTTP-клиентами. Для этих целей оно предоставляет ряд эндпоинтов для стандартных CRUD-операций над двумя связанными сущностями: Brand и Car.

Доступные запросы, описание для них и для Request/Reaponse body каждого из них можно найти в сваггере. После запуска приложения он доступен по URL: http://localhost:8080/swagger-ui/index.html

Запуск

Запустить приложение можно несколькими способами:

  1. Выполнить Gradle task bootRun. Через IDEA он доступен в группе задач application;
  2. Выполнить тот же таск через gradle wrapper в консоли: ./gradlew :bootRun (Linux, MacOS) или gradlew.bat :bootRun (Windows). Единственное значимое отличие от запуска через IDEA - не будет доступен дебаг, но в нем и нет необходимости;
  3. Запуск через IDEA, используя Spring Boot конфигурацию. Этот вариант доступен только для IDEA Ultimate, визуально ничем не отличается от стандартного запуска Java-приложения - конфигурация должна определиться автоматически и быть доступа по запуску одним кликом.

Рекомендуемые сценарии взаимодействия

Приложение позволяет добавлять, обновлять, удалять и получать информацию о брендах автомобилей и самих автомобилях. При этом в Swagger можно найти информацию об ожидаемых полях для каждого запроса, их описание и требования к заполнению: обязательность, минимальные значения и пр.

Также рекомендую обратить внимание, что невозможно создать машину без указания бренда или использовать несуществующий бренд.

Таким образом, рекомендуемые сценарии взаимодействия сводятся к следующему:

  1. Протестируйте положительные сценарии: попробуйте добавлять, обновлять и удалять машины и бренды. Попробуйте получать информацию о них через GET-методы;
  2. Попробуйте передавать невалидные данные: получить объект по несуществующему id, не заполнить при создании/обновлении обязательное поле, попытаться создать машину с несуществующим брендом. Обращайте внимание на коды и тела ответов в таких случаях.

Для взаимодействия с API вы можете использовать любой HTTP-клиент на свой вкус. Хост для выполнения запросов - http://localhost:8080, пути к конкретным ресурсам (эндпоинты) доступны через Swagger.

Опционально

Если вам хочется немного покодить - вы можете доработать сервисный слой приложения. В нем использован ряд технологий, с которыми мы еще не знакомы. Но методы в классах-сервисах не содержат чего-то принципиально нового для нас. Зато они содержат ряд недостатков:

  1. Проблема с синхронизацией, в свете чего есть риск получить непредсказуемое поведение при обработке нескольких запросов одновременно. Грамотная доработка с использованием блокировок или возможностей потокобезопасных коллекций может решить эту проблему;
  2. Юнит-тесты для сервисного слоя. Сейчас их нет ни в каком виде;
  3. Проблема с хранением данных - сейчас вся информация хранится in-memory, а значит - теряется после завершения работы приложения. Ваших знаний достаточно, чтобы реализовать хранение в базе данных.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages