Skip to content

REST API for proxying requests to jsonplaceholder.typicode.com with support for GET, POST, PUT, DELETE, authorization and role model.

Notifications You must be signed in to change notification settings

nekitze/jsonplaceholder_proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JsonPlaceholder Proxy



О проекте

Проект релизует 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/

С помощью Docker (рекомендуется):

В 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"



С помощью Maven:

  1. Устанавливаем и запускаем Postgres на локальной машине или где-нибудь еще.
  2. Настраиваем 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
  1. Собираем проект:
mvn package
  1. Запускаем:
java -jar target/JsonPlaceholderProxy.jar



Тестирование API

Для тестирования 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"
}

About

REST API for proxying requests to jsonplaceholder.typicode.com with support for GET, POST, PUT, DELETE, authorization and role model.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published