Skip to content

EgorTolbaev/todo-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Todo API

Простой REST API для управления задачами с аутентификацией через JWT, реализованный на Go с использованием Gin и PostgreSQL в Docker.


Содержание


Описание

API позволяет регистрировать пользователей, аутентифицироваться по JWT токену и работать с персональными задачами: создавать, обновлять, получать и удалять. Данные хранятся в PostgreSQL, база запускается в Docker контейнере. В проекте используется чистая работа с SQL через database/sql и миграции через goose.


Технологии

  • Go (Golang)
  • Gin (HTTP фреймворк)
  • PostgreSQL (База данных)
  • Docker (для базы)
  • goose (миграции базы)
  • bcrypt (хеширование паролей)
  • JWT (аутентификация)

Установка

  1. Клонировать репозиторий:
git clone https://github.com/EgorTolbaev/todo-api.git
cd todo-api
  1. Установить зависимости:
go mod download
  1. Создать и запустить базу в Docker:
docker-compose up -d

Запуск

  1. Задать переменную окружения с подключением к базе (если требуется):
export DATABASE_DSN="host=localhost port=5432 user=todo_user password=todo_pass dbname=todo_db sslmode=disable"
  1. Запустить миграции:
goose -dir migrations postgres "$DATABASE_DSN" up
  1. Запустить приложение:
go run ./cmd/main.go

Сервер будет доступен по адресу: http://localhost:8080


Использование API

  • POST /register — регистрация пользователя
  • POST /login — получение JWT токена
  • Защищенные маршруты (требуют Authorization: Bearer <token>):
    • GET /tasks — получить список задач текущего пользователя
    • POST /tasks — создать новую задачу
    • PUT /tasks/:id — обновить задачу
    • DELETE /tasks/:id — удалить задачу

Структура проекта

/cmd/main.go - точка входа, инициализация и запуск сервера
/internal/storage/ - работа с базой данных (разделена на user_storage.go и task_storage.go)
/internal/handlers/ - обработчики HTTP запросов
/internal/router.go - настройка маршрутов и middleware
/internal/storage/migrations/ - миграции базы данных goose
/docker-compose.yml - конфигурация для запуска PostgreSQL в Docker

Миграции базы данных

Для управления схемой используется goose.

  • Создавайте миграции командой:
goose create <имя_миграции> sql
  • Применяйте миграции:
goose -dir migrations postgres "$DATABASE_DSN" up
  • Откатывайте миграции:
goose -dir migrations postgres "$DATABASE_DSN" down

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

Для тестирования API можно использовать Postman или curl. Пример последовательности:

  1. Зарегистрироваться через POST /register
  2. Залогиниться в POST /login и получить JWT
  3. Передавать токен в заголовке Authorization для работы с задачами

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages