- Базовый URL:
/api - Формат данных: JSON
- Аутентификация: JWT (Bearer token)
POST /api/auth/register
Параметры запроса (JSON):
email(string, required) - Email пользователяpassword(string, required) - Пароль
Ответ (успех):
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"userId": 1,
"email": "user@example.com"
}POST /api/auth/login
Параметры запроса (JSON):
email(string, required) - Email пользователяpassword(string, required) - Пароль
Ответ (успех):
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"userId": 1,
"email": "user@example.com"
}GET /api/lessons
Заголовки:
Authorization: Bearer <token>
Ответ (успех):
[
{
"id": 1,
"title": "Основы SELECT",
"description": "Научитесь извлекать данные из таблиц с помощью базовых запросов SELECT",
"topic": "Основы SQL",
"difficulty": "Легкий",
"orderIndex": 1
},
...
]GET /api/lessons/{id}
Параметры пути:
id(number, required) - ID урока
Заголовки:
Authorization: Bearer <token>
Ответ (успех):
{
"id": 1,
"title": "Основы SELECT",
"description": "Научитесь извлекать данные из таблиц с помощью базовых запросов SELECT",
"topic": "Основы SQL",
"difficulty": "Легкий",
"orderIndex": 1
}GET /api/lessons/{lessonId}/tasks
Параметры пути:
lessonId(number, required) - ID урока
Заголовки:
Authorization: Bearer <token>
Ответ (успех):
[
{
"id": 1,
"lessonId": 1,
"title": "Выбор всех данных",
"description": "Выберите все записи из таблицы users",
"schemaDefinition": "CREATE TABLE users(id INT PRIMARY KEY, name VARCHAR(100), age INT, email VARCHAR(100));",
"solutionQuery": "SELECT * FROM users;"
},
...
]POST /api/tasks/check
Параметры запроса (JSON):
taskId(number, required) - ID заданияuserQuery(string, required) - SQL-запрос пользователя
Заголовки:
Authorization: Bearer <token>Content-Type: application/json
Ответ (успех):
{
"isCorrect": true,
"feedback": "✅ Запрос верный!",
"expectedQuery": null
}Ответ (ошибка):
{
"isCorrect": false,
"feedback": "❌ Неверный запрос. Проверьте синтаксис и логику.",
"expectedQuery": "SELECT * FROM users;"
}GET /api/users/me
Заголовки:
Authorization: Bearer <token>
Ответ (успех):
{
"id": 1,
"email": "user@example.com",
"githubUsername": "githubuser",
"avatarUrl": "https://avatars.githubusercontent.com/u/1234567",
"progress": 25
}В случае ошибки API возвращает JSON-объект с описанием ошибки:
{
"timestamp": "2023-08-07T16:49:20.123+00:00",
"status": 404,
"error": "Not Found",
"message": "Урок не найден",
"path": "/api/lessons/999"
}200 OK- Успешный запрос201 Created- Ресурс успешно создан400 Bad Request- Неверные параметры запроса401 Unauthorized- Требуется аутентификация403 Forbidden- Недостаточно прав404 Not Found- Ресурс не найден409 Conflict- Конфликт (например, email уже используется)500 Internal Server Error- Внутренняя ошибка сервера