Skip to content

ModiconMe/real-world-app

Repository files navigation

RealWorld Example App using Spring

Spring Boot codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the RealWorld spec and API

Приложение разработано на основе спецификации real-world-app.

Highlights

  • Приложение построено на основе трехслоиной архитектуры (api, services, repository)
  • Security построено на основе jwt токенов
  • Обработка исключений с помощью @ControllerAdvice
  • Таблицы, constraints и внешние ключи генерируются с помощью Jpa
  • DTO в качестве классов оберток для api запросов и ответов

Также:

Technology

  • Spring Boot 3.0.0 и Java 17
  • Spring Data JPA + Hibernate + H2-database
  • Spring Security 6 + jwt
  • Logback
  • Spring Validation для валидации rest запросов
  • Jackson для сериализации и дессериализации запросов и ответов
  • JUnit 5 + AssertJ + Mockito для тестирования
  • Docker для запуска в контейнере из Dockerfile

Getting started

Требуется Java 17 или выше

./gradlew bootRun

Для тестирования работоспособности приложения в браузере http://localhost:8080/api/tags.
Или же через команду в терминале

curl http://localhost:8080/api/tags

Testing

Для запуска тестов следующая команда

./gradlew test

Процент покрытия строк кода тестами 93%.

Test-coverage

Test-scripts

Для полного тестирования api на соответствие спецификации протестируйте с помощью официального bash script

cd api-bash-test

Команда для запуска скрипта

APIURL=http://localhost:8080/api ./run-api-tests.sh

bash-script-result

Docker-run

Убедитесь что Docker engine запущени командой docker --version. Если Docker не установлен, то вот гайд по установке Docker.

Для запуска приложения в докер контейнере в корне проекта запускаем команду для построения докер образа.

docker build -t realworld:v1 .

После построения образа создаем и запускаем контейер с помощью docker run

docker run --name realworld -p 8080:8080 realworld:v1

После этого можно протестировать работоспособность

About

Real world backend API built in Spring boot

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published