REST API для управления списком задач (ToDo) с кешированием в Redis.
Используется Go, Gin, PostgreSQL, GORM, Redis и Docker.
git clone https://github.com/soujuruya/todo-api.git
cd todo-api- Переменные окружения
Создай файл .env в корне проекта:
# PostgreSQL
DB_USER=postgres
DB_PASSWORD=твой_пароль
DB_NAME=todo
DB_HOST=localhost
DB_PORT=5432
# Redis
REDIS_ADDR=localhost:6379
REDIS_PASSWORD=
REDIS_DB=0
# Сервер
PORT=8080
# JWT секрет
JWT_SECRET=supersecretkey- Запуск через Docker Compose
docker-compose up --buildПосле запуска сервисы будут доступны:
PostgreSQL: порт 5432
Redis: порт 6379
📡 Примеры запросов Получить все задачи
GET /todosПроверяется кеш в Redis (todos).
Если нет кеша — данные берутся из PostgreSQL и сохраняются в Redis.
Создать задачу
POST /todos
Content-Type: application/json
{
"title": "Купить хлеб",
"description": "Зайти в магазин после работы",
"completed": false
}После успешного создания ключ todos в Redis удаляется, чтобы кеш обновился при следующем GET.
Обновить задачу
PUT /todos/1
Content-Type: application/json
{
"title": "Купить молоко",
"description": "Теперь вместо хлеба",
"completed": true
}После обновления также сбрасывается кеш todos.
Удалить задачу
DELETE /todos/1Задача удаляется и ключ todos в Redis сбрасывается.
🔧 Полезные команды Docker
Пересобрать контейнеры и поднять сервисы:
docker-compose up --buildОстановить контейнеры:
docker-compose downПодключиться к базе PostgreSQL внутри контейнера:
docker exec -it todo-api-db psql -U soujuruya -d todoПроверить логи API:
docker logs -f todo-api-api