Проект релизует REST API для перенаправления запросов на https://jsonplaceholder.typicode.com/
Поддерживаются обработчики GET, POST, PUT, DELETE, проксирующие следующие запросы:
- /api/posts/**
- /api/users/**
- /api/albums/**
Реализована базовая авторизация и ролевая модель.
Реализован эндпоинт для добавления пользователей:
- /api/proxy/add_user/
Для хранения пользователей и ведения аудита используется база данных Postgres.
Используется кэширование для уменьшения числа запросов к jsonplaceholder.
После запуска проект будет доступен по http://localhost:3333/jsonplaceholder_proxy/
В Dockerfile уже описаны все инструкции для сборки проекта. С помощью docker compose поднимается контейнер с базой данных и контейнер с приложением.
Всё можно запустить одной командой:
docker compose up
При первом запуске будут подкачаны необходимые образы для работы с Postgres и JDK, поэтому процесс может занять пару минут.
Чтобы посмотреть, что лежит в БД контейнера, можно использовать следующие команды:
- Для вывода в терминал записей из таблицы аудита:
docker exec -it jsonplaceholderproxy-db-1 psql -U postgres -d postgres -c "select * from jsonplaceholder_proxy.audit"
- Для вывода сохраненных пользователей:
docker exec -it jsonplaceholderproxy-db-1 psql -U postgres -d postgres -c "select * from jsonplaceholder_proxy.users"
- Устанавливаем и запускаем Postgres на локальной машине или где-нибудь еще.
- Настраиваем
application.properties
(нужно указать url, username, password от вашей БД)
Пример:
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=1234
spring.datasource.driver-class-name=org.postgresql.Driver
- Собираем проект:
mvn package
- Запускаем:
java -jar target/JsonPlaceholderProxy.jar
Для тестирования api можно использовать Postman с заготовленными запросами. Для того, чтобы рабоать с Postman в браузере и он мог отправлять запросы на ваш localhost, установите Postman Agent.
Также для взаимодействия предусмотрена интеграция со Swagger UI, доступ по http://localhost:3333/jsonplaceholder_proxy/swagger-ui/index.html
Name | Password | Roles |
---|---|---|
admin | admin | ROLE_ADMIN |
users | users | ROLE_USERS |
albums | albums | ROLE_ALBUMS |
posts | posts | ROLE_POSTS |
visitor | visitor | ROLE_POSTS_VIEWER, ROLE_ALBUMS_VIEWER |
redactor | redactor | ROLE_POSTS_EDITOR, ROLE_ALBUMS_EDITOR |
Для добавления новых пользователей используйте эндпоинт /api/proxy/add_user/
Пример тела запроса:
{
"name": "new_user",
"password": "new_user",
"roles": "ROLE_POSTS_VIEWER, ROLE_POSTS_EDITOR"
}