users-api

module
v0.0.0-...-256c714 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 13, 2025 License: MIT

README

Users API

RESTful API на Go для управления пользователями и отношениями "друзья".

В данном проекте реализованы CRUD-овые операции для пользователей, а также есть возможность создания связи между ними(дружбы). При удалении пользователя, состоящего в дружбе, реализовано каскадное удаление этой связи.

Технологии:

  • Go (Golang)
  • PostgreSQL (основная база)
  • SQLite (база сугубо для тестов)
  • GORM (ORM)
  • Chi Router (маршрутизатор)
  • REST API

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

  • model/ — схема базы,в ней описаны 2 структуры данных user и friendship c указанием зависимостей для Gorm
  • repository/ — слой работы с БД
  • service/ — бизнес-логика
  • handler/ — HTTP-хендлеры
  • config/ — инициализация подключения к БД
  • migrations - хранилище sql-миграции схемы БД

Установка и запуск

git clone https://github.com/UnendingLoop/users-api.git cd users-api

установка зависимостей

go mod tidy

запуск локально

go run cmd/main.go

Переменные окружения

  • DATABASE_URL — строка подключения к PostgreSQL, указывается в .env рядом с main.go

Примеры API-запросов

Создание пользователя

curl -X POST http://localhost:8080/users
-H "Content-Type: application/json"
-d '{ "name": "John", "surname": "Smith", "email": "newjohn@example.com" }'

curl -X POST http://localhost:8080/users
-H "Content-Type: application/json"
-d '{ "name":"Alice", "surname":"Smith", "email":"alice@example.com" }'

Обновление информации о существующем пользователе:

curl -X PUT http://localhost:8080/update/1
-H "Content-Type: application/json"
-d '{ "name": "john", "surname": "smith", "email": "newjohn@example.com" }'

Получение информации о существующем пользователе:

curl -X GET http://localhost:8080/users/1

Получение списка всех существующих пользователей:

curl http://localhost:8080/users

Удаление пользователя:

curl -X DELETE http://localhost:8080/delete/1

Создание дружбы между двумя пользователями:

curl -X POST http://localhost:8080/users/1/make_friend/2

Просмотр списка друзей пользователя:

curl http://localhost:8080/users/1/friends

Удаление дружбы:

curl -X DELETE http://localhost:8080/users/1/remove_friend/2

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

  • test.db используется как SQLite in-memory база для тестов
  • Тесты запускаются через: go test ./...

TODO

  • JWT-авторизация
  • Swagger-документация
  • Интеграционные тесты
  • Пагинация и поиск

Directories

Path Synopsis
cmd
Package docs Code generated by swaggo/swag.
Package docs Code generated by swaggo/swag.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL