Разработать RESTful WebAPI на языке C# с использованием ASP.NET Core (MinimalAPI) для учёта информации о спортивных соревнованиях и их результатах. Реализовать базовые операции CRUD, а также написать тесты для проверки корректности работы API. Создать документацию.
Реализовать следующие классы (модели):
Competition — соревнование:
Id(int, уникальный идентификатор);Name(string, название соревнования);Date(DateTime, дата проведения);Location(string, место проведения);SportType(string, вид спорта).
Result — результат участника в соревновании:
Id(int, уникальный идентификатор);CompetitionId(int, ссылка на соревнование);ParticipantName(string, имя участника);Place(int, занятое место: 1, 2, 3 и т. д.);Score(decimal?, оценка или результат в числовом выражении, может быть null).
GET /api/competitions— получить список всех соревнований;GET /api/competitions/{id}— получить соревнование по ID;POST /api/competitions— создать новое соревнование;PUT /api/competitions/{id}— обновить соревнование;DELETE /api/competitions/{id}— удалить соревнование.
GET /api/results— получить все результаты;GET /api/results/{id}— получить результат по ID;GET /api/competitions/{competitionId}/results— получить все результаты для конкретного соревнования (по ID соревнования);POST /api/results— добавить новый результат;PUT /api/results/{id}— обновить результат;DELETE /api/results/{id}— удалить результат.
Использовать In‑Memory Storage (коллекции в памяти) для упрощения реализации. Данные сохраняются между перезапусками приложения.
Реализовать базовую валидацию входящих данных:
- Поля
Name,Date,Location,SportTypeдляCompetitionне должны быть пустыми. - Поля
ParticipantName,Place,CompetitionIdдляResultне должны быть пустыми;Placeдолжен быть больше 0. - При создании
Resultпроверять, чтоCompetitionIdсуществует в системе.
Возвращать соответствующие HTTP‑статусы:
200 OK— успешный запрос (получение данных);201 Created— ресурс успешно создан;400 Bad Request— неверные входные данные;404 Not Found— запрашиваемый ресурс не найден;500 Internal Server Error— внутренняя ошибка сервера.
- Корректная реализация всех требуемых эндпоинтов.
- Соблюдение принципов REST.
- Наличие и корректность валидации данных.
- Правильная обработка ошибок и возврат соответствующих HTTP‑статусов.
- Читаемость и структурированность кода (соблюдение naming conventions, разделение на слои, если применимо).
- Возможность запустить проект и протестировать API через Swagger UI или Postman.
- Наличие документации