Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

Задание: разработка WebAPI для учёта соревнований и их результатов

Цель задания

Разработать RESTful WebAPI на языке C# с использованием ASP.NET Core (MinimalAPI) для учёта информации о спортивных соревнованиях и их результатах. Реализовать базовые операции CRUD, а также написать тесты для проверки корректности работы API. Создать документацию.

Требования к функционалу

1. Модели данных

Реализовать следующие классы (модели):

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).

2. API‑эндпоинты

Соревнования (Competitions controller)

  • GET /api/competitions — получить список всех соревнований;
  • GET /api/competitions/{id} — получить соревнование по ID;
  • POST /api/competitions — создать новое соревнование;
  • PUT /api/competitions/{id} — обновить соревнование;
  • DELETE /api/competitions/{id} — удалить соревнование.

Результаты (Results controller)

  • 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} — удалить результат.

3. Хранение данных

Использовать In‑Memory Storage (коллекции в памяти) для упрощения реализации. Данные сохраняются между перезапусками приложения.

4. Валидация

Реализовать базовую валидацию входящих данных:

  • Поля Name, Date, Location, SportType для Competition не должны быть пустыми.
  • Поля ParticipantName, Place, CompetitionId для Result не должны быть пустыми; Place должен быть больше 0.
  • При создании Result проверять, что CompetitionId существует в системе.

5. Обработка ошибок

Возвращать соответствующие HTTP‑статусы:

  • 200 OK — успешный запрос (получение данных);
  • 201 Created — ресурс успешно создан;
  • 400 Bad Request — неверные входные данные;
  • 404 Not Found — запрашиваемый ресурс не найден;
  • 500 Internal Server Error — внутренняя ошибка сервера.

Критерии оценки

  • Корректная реализация всех требуемых эндпоинтов.
  • Соблюдение принципов REST.
  • Наличие и корректность валидации данных.
  • Правильная обработка ошибок и возврат соответствующих HTTP‑статусов.
  • Читаемость и структурированность кода (соблюдение naming conventions, разделение на слои, если применимо).
  • Возможность запустить проект и протестировать API через Swagger UI или Postman.
  • Наличие документации

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors