Документация бэкенда Go - qwsnxnjene/courier-transport GitHub Wiki

Документация будет приведена для методов публичного API

handlers.FreeScootersHandler

Данный хэндлер обрабатывает GET-запросы по пути /api/transport
Возвращает список свободных в данный момент самокатов в формате список структур Scooter
type Scooter struct {
Latitude float64 'json:"latitude"'
Longitude float64 'json:"longitude"'
BatteryLevel int 'json:"batteryLevel"'
}

handlers.SignInHandler

Данный хэндлер обрабатывает POST-запросы по пути /api/auth/login
В качестве query-параметра необходимо передать логин и пароль пользователя
{
"password": "your-password"
}
Проверяет переданный логин и пароль и, если он совпадает с ожидаемым (хранится в БД), генерирует и возвращает JWT-токен. В противном случае возвращает ошибку.
В случае успеха возвращает:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

В случае неудачи:
{
"error": "Неверный пароль"
}
Или
{
"error": "ошибка десериализации <описание>"
}

handlers.SignUpHandler

Данный хэндлер обрабатывает POST-запросы по пути /api/auth/signup
В качестве query-параметра необходимо передать логин и пароль пользователя
{
"login": "your-login"
"password": "your-password"
}
Проверяет переданный логин и пароль на корректность и добавляет его в БД. В противном случае возвращает ошибку.
В случае успеха возвращает:
{
"message":"Пользователь успешно зарегистрирован"
}

В случае неудачи:
{
"error":"Логин должен быть не короче 3 символов"
}
Или
{
"error":"Пароль должен быть не короче 8 символов"
}
Или
{
"error":"Логин уже занят"
}
Или
{
"error":"Внутренняя ошибка сервера"
}

handlers.ProfileInfoHandler

Данный хэндлер обрабатывает GET-запросы по пути /api/profile
Необходимо передать в заголовке jwt-токен
Токен будет проверен, и, если всё верно, то вернется информация о пользователе: {
Login string 'json:"name"'
Rating int 'json:"rating"'
Status string 'json:"status"'
Preferences []string 'json:"transportPreferences"'
Documents struct {
 Passport string 'json:"passport"'
 DriverLicense string 'json:"driverLicense"'
} 'json:"documents"'
RentalStats struct {
 TotalRentals int 'json:"totalRentals"'
 CurrentBalance int 'json:"currentBalance"'
 VehicleStats struct {
  E_scooter int 'json:"e-scooter"'
  Bike int 'json:"bike"'
  E_bike int 'json:"e-bike"'
} 'json:"vehicleStats"'
}
}
В случае ошибки могут вернуться следующие ответы: {"error":"Пользователь не найден"} или {"error":"Внутренняя ошибка сервера"}

handlers.AddRideHandler

Данный хэндлер добавляет в БД данные о прошедшей поездке по пути /api/add-ride
В теле запроса необходимо передать следующую информацию:
{
 UserID int json:"user_id"
 TransportID int json:"transport_id"
 StartTime string json:"start_time"
 EndTime string json:"end_time"
 Total int json:"total"
}

В случае ошибки вернётся ответ следующего типа:
{"error":"*описание ошибки*"}

handlers.RideInfoHandler

Данный хэндлер возвращает список поездок пользователя по пути /api/rides
В теле запроса необходимо передать логин пользователя
Ответ имеет вид списка структур:
{
 Start string json:"start"
 End string json:"end"
 Total int json:"total"
 Type string json:"type"
}
В случае ошибки вернётся ответ следующего типа:
{"error":"*описание ошибки*"}

⚠️ **GitHub.com Fallback** ⚠️