Владимир Шалимов 2310cfd05b | ||
---|---|---|
.idea | ||
brunoTest/golang-test | ||
cli | ||
controllers | ||
database | ||
libs | ||
middlewares | ||
routes | ||
types | ||
validators | ||
Dockerfile | ||
docker-compose.yml | ||
entrypoint.sh | ||
go.mod | ||
go.sum | ||
main.go | ||
readme.md |
readme.md
Документация API
Обзор
Этот проект представляет собой RESTful API для управления товарами, производителями и пользователями. В качестве ORM используется GORM.
Структура проекта
- cli/migration.go - Применение автомиграции в БД.
- contollers/ - Вся бизнес логика, обращения к БД.
- database/connect.go - Подключение к БД.
- database/models.go - Модели Gorm.
- brunoTest/ - Коллекция Bruno для тестирования API.
- libs/ - Небольшие функции используемые в разных контроллерах.
- middlewares/authMiddleware.go - Прослойка для авторизации.
- routes.go - Описание всех маршрутов.
- types/ - Типы для запросов и ответов на сервер.
- validators/ - Кастомные валидаторы.
- docker-compose.yml - Файл docker-compose для запуска в контейнере вместе в БД.
- Dockerfile - Файл для сборки докер контейнера.
- entrypoint.sh - Входная точка для докер контейнера. Нужна чтобы запустить миграцию в бд перед запуском сервера.
- main.go - Основной файл. Используется для запуска сервера.
Endpoints
Товары
- POST /product - Создание нового товара. Требуется JSON с данными товара.
- DELETE /product/:id - Удаление товара по идентификатору.
- GET /product - Получение списка всех товаров.
- GET /product/:id - Получение информации о конкретном товаре.
- GET /product/:id/buy - Покупка товара по идентификатору.
Производители
- POST /manufacturer - Создание нового производителя. Требуется JSON с данными производителя.
- DELETE /manufacturer/:id - Удаление производителя по идентификатору.
- GET /manufacturer - Получение списка всех производителей.
- PATCH /manufacturer/:id - Редактирование данных производителя. Требуется JSON с изменениями.
Пользователи
- POST /registration - Регистрация нового пользователя. Требуется JSON с данными пользователя.
- POST /login - Вход пользователя. Требуется JSON с данными для входа.
- GET /user - Получение данных текущего пользователя.
- PATCH /user - Редактирование имени пользователя. Требуется JSON с новым именем.
- POST /user/addmoney - Добавление денег на счет пользователя. Требуется JSON с суммой.
- GET /user/products - Получение списка купленных пользователем товаров.
Запуск сервера
Сервер запускается в докер контейнере
Сначала нужно собрать image командой:
docker build -t ravonzz/go-testapi .
Затем можно запускать контейнер вместе с БД Postgresql командой:
docker-compose up -d