63 lines
3.7 KiB
Markdown
63 lines
3.7 KiB
Markdown
# Документация 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
|
||
```
|