API: Игроки

# Players API Документация ## Обзор API для работы с информацией об игроках и их трансферах. Базовый URL: `/Players` Все ответы API обернуты в объект `ApiResponse` со следующей структурой: ```json { "success": true, "data": { /* данные ответа */ }, "message": "Сообщение об ошибке (если есть)" } ``` ## Эндпоинты ### 1. Поиск игроков по имени **GET** `/Players/find` Возвращает список игроков, имена которых содержат указанную подстроку (поиск без учета регистра). #### Параметры запроса | Параметр | Тип | Обязательный | Описание | |----------|-----|--------------|----------| | `name` | string | Да | Имя или часть имени игрока для поиска | #### Примеры URL ``` GET /Players/find?name=Ronaldo GET /Players/find?name=меси GET /Players/find?name=John ``` #### Коды ответов - **200 OK** - Успешный поиск - **400 Bad Request** - Не указано имя для поиска - **500 Internal Server Error** - Внутренняя ошибка сервера #### Пример успешного ответа (200) ```json { "status": "OK", "count": 55, "data": [ { "id": 127794, "name": "Ronaldo Rivas", "team": null }, { "id": 16350, "name": "Ronaldo Aldair Villa Lara", "team": { "id": 25736, "name": "22 de Julio", "flashId": null } }, { "id": 874, "name": "Cristiano Ronaldo", "team": null }, { "id": 166735, "name": "Ronaldo", "team": { "id": 22852, "name": "União São João", "flashId": null } } ] } ``` #### Пример ошибки (400) ```json { "success": false, "message": "Invalid name" } ``` **Ограничения**: Возвращается максимум 100 результатов. --- ### 2. Получение полной информации об игроке **GET** `/Players/{id}` Возвращает подробную информацию об игроке, включая текущую команду и историю трансферов. #### Параметры пути | Параметр | Тип | Описание | |----------|-----|----------| | `id` | int | Уникальный идентификатор игрока | #### Примеры URL ``` GET /Players/1 GET /Players/123 GET /Players/9999 ``` #### Коды ответов - **200 OK** - Игрок найден - **404 Not Found** - Игрок с указанным ID не найден - **500 Internal Server Error** - Внутренняя ошибка сервера #### Пример успешного ответа (200) ```json { "status": "OK", "data": { "id": 78484, "name": "M. Zajac", "currentTeam": { "id": 2620, "name": "Vaughan Azzurri", "flashId": null }, "transfers": [ { "from": { "id": 18766, "name": "Guelph United", "flashId": null }, "to": { "id": 2620, "name": "Vaughan Azzurri", "flashId": null }, "date": "2023-01-01" }, { "from": { "id": 6945, "name": "Olimpia Elbląg", "flashId": null }, "to": { "id": 18766, "name": "Guelph United", "flashId": null }, "date": "2022-02-10" }, { "from": { "id": 3830, "name": "Forge", "flashId": null }, "to": { "id": 6945, "name": "Olimpia Elbląg", "flashId": null }, "date": "2021-07-09" } ] } } ``` #### Пример ошибки (404) ```json { "success": false, "message": "Player not found" } ``` ## Структуры данных ### ApiSaPlayer Базовая информация об игроке: ```json { "id": 1, "name": "Имя игрока" } ``` ### ApiSaPlayerFull Расширенная информация об игроке: ```json { "id": 1, "name": "Имя игрока", "currentTeam": { "id": 10, "name": "Название команды" }, "transfers": [ { "from": { "id": 1, "name": "Команда-отправитель" }, "to": { "id": 2, "name": "Команда-получатель" }, "date": "2023-01-15" } ] } ``` ### ApiSaTeam Информация о команде: ```json { "id": 1, "name": "Название команды" } ``` ### ApiSaPlayerTransfer Информация о трансфере: ```json { "from": { "id": 1, "name": "Команда-отправитель" }, "to": { "id": 2, "name": "Команда-получатель" }, "date": "2023-01-15" } ``` ## Примечания 1. **Дата в трансферах** - может быть `null` если дата трансфера неизвестна 2. **Текущая команда** - может быть `null` если игрок не состоит ни в одной команде 3. **Поиск по имени** - выполняется без учета регистра и поддерживает поиск по частичному совпадению 4. **Все команды в трансферах** - могут быть `null` в зависимости от типа трансфера ## Обработка ошибок Все ошибки возвращаются в стандартном формате: ```json { "success": false, "message": "Описание ошибки" } ``` Основные типы ошибок: - **400 Bad Request** - Неверные параметры запроса - **404 Not Found** - Ресурс не найден - **500 Internal Server Error** - Внутренняя ошибка сервера