Создаю онлайн-сервис для чтения книг. День 4. Обработка первого запроса
Термины в статье:
Реализация обработки первого запроса 🚀
1. Добавление логов 📝
Логи пишутся практически при каждом действии пользователей, поэтому начну с их реализации в качестве примера.
Перейду в проект HelpLibrary и создам новый класс в папке DTOs .
Создам DTO для логов:
DTO Logs
Теперь перейду в проект ServerLibrary и добавлю интерфейс ILogRepository для определения класса логов.
Реализую этот интерфейс, создав класс LogRepository в папке Implementations . Он содержит:
Поле _context, которое объявляется в конструкторе для контекста базы данных.
Реализацию метода WriteLogs, который записывает логи в базу данных.
💡 Важно: Такой шаблон будет использоваться для каждой таблицы базы данных.
Qwen2.5-Max1:29 am
Вот обновленная версия текста с добавлением стикеров для улучшения визуального восприятия и акцентирования внимания на ключевых моментах:
Реализация обработки первого запроса 🚀
1. Добавление логов 📝
Логи пишутся практически при каждом действии пользователей, поэтому начну с их реализации в качестве примера.
Перейду в проект HelpLibrary и создам новый класс в папке DTOs .
Создам DTO для логов:
Теперь перейду в проект ServerLibrary и добавлю интерфейс ILogRepository для определения класса логов.
Реализую этот интерфейс, создав класс LogRepository в папке Implementations . Он содержит:
Поле _context, которое объявляется в конструкторе для контекста базы данных.
Реализацию метода WriteLogs, который записывает логи в базу данных.
💡 Важно: Такой шаблон будет использоваться для каждой таблицы базы данных.
2. Логика работы с пользователями 👤
Создам DTO для регистрации и входа в аккаунт:
Для регистрации обязательными полями являются: логин , имя , email и пароль .
Для входа в аккаунт необходимы: почта/логин и пароль .
Интерфейс репозитория 🔍
Определяю интерфейс репозитория для работы с базой данных. На данном этапе необходимо реализовать следующие методы:
Поиск пользователя по Id .
Поиск пользователя по никнейму .
Поиск пользователя по email .
Добавление пользователя в базу данных.
Реализация интерфейса ⚙️
💼 Реализация бизнес-логики
Создаю интерфейс с методом регистрации и входа в аккаунт.
Реализую бизнес-логику, реализовав созданных интерфейс. В конструкторе подключаю классы для работы с базой данных.
Метод регистрации
Метод входа в аккаунт
3. Контроллер 🌐
Создам новый класс в папке Controllers проекта Server , назову его AuthController . Добавлю в конструктор класса только что созданный сервис.
Добавлю два endpoint'а:
POST /register — для регистрации нового пользователя.
POST /login — для входа в аккаунт.
📌 Примечание: Swagger автоматически покажет доступные эндпоинты после запуска проекта.
4. Тестирование ✅
Запускаю проект. Открывается страница Swagger, где видны два созданных эндпоинта.
Регистрация 🆕
Открою POST /register и впишу в тело запроса:
{
"nickname": "vkatun",
"name": "vasya",
"email": "vasya@mail.ru",
"password": "password"
}
В итоге получу ответ с сообщением об успешной регистрации и статус-кодом 200!
🎉 Успех! Проверяю базу данных — в таблицах Users и Logs добавились соответствующие записи.
Все работает!
Вход в аккаунт 🔑
Тестирую POST /login с правильными данными:
{
"emailOrNickname": "vkatun",
"password": "password"
}
В итоге получу ответ об успешной аутентификации и статус-кодом 200.
Попробую ввести несуществующий логин и пароль:
{
"emailOrNickname": "vkatun123",
"password": "password"
}
и
{
"emailOrNickname": "vkatun",
"password": "password123"
}
Получу ответы:
{
"flag": false,
"message": "There is no account with this email or nickname."
}
и
{"flag": false,
"message": "Invalid password"
}
соответственно
⚠️ Ошибка обработана корректно!
5. Заключение 🏁
Все работает корректно! Теперь можно приступить к реализации логики JWT, но это уже тема для другой статьи.
📚 Следите за обновлениями!



























