Skip to content

Soujuruya/todo-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ToDo API на Go (Gin + PostgreSQL + Redis)

📌 Описание

REST API для управления списком задач (ToDo) с кешированием в Redis.
Используется Go, Gin, PostgreSQL, GORM, Redis и Docker.


🚀 Запуск проекта через Docker

1. Клонируем репозиторий

git clone https://github.com/soujuruya/todo-api.git
cd todo-api
  1. Переменные окружения

Создай файл .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
  1. Запуск через Docker Compose
docker-compose up --build

После запуска сервисы будут доступны:

API: http://localhost:8080

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

About

ToDo REST API на Go с Gin

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors