Документирование endpoints

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

Качественная разработка API невозможна без документации. В этом уроке мы разберем, как описывать endpoints (конечные точки) вашего REST API. Это критически важно для того, чтобы фронтенд-разработчики и внешние клиенты понимали, как использовать ваш код.

Документирование включает описание:

  • Метода запроса (GET, POST, PUT, DELETE).
  • URL адреса и параметров пути.
  • Тела запроса (формат данных, обязательные поля).
  • Кодов ответа (200 OK, 404 Not Found, 400 Bad Request) и структуры ответа.

Мы рассмотрим примеры оформления документации (например, в стиле OpenAPI/Swagger) и потренируемся читать и составлять такие описания. Эти задания и тесты помогут вам структурировать знания о взаимодействии клиент-сервер.

Список тем

1. Методы и действия

id: 39289_api_01_compare

В левой колонке перечислены основные HTTP-методы, которые используются при создании REST API. В правой колонке — описания типичных действий, которые выполняет каждый из этих методов над ресурсом. Сопоставьте каждый HTTP-метод с соответствующим ему описанием действия. Обратите внимание, что в REST-архитектуре каждый метод имеет строго определённое семантическое значение, и правильное сопоставление важно для корректного документирования endpoints API.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
GET
POST
PUT
PATCH
DELETE
Частичное обновление существующего ресурса
Удаление указанного ресурса с сервера (идемпотентный)
Полная замена существующего ресурса новым представлением (идемпотентный)
Создание нового ресурса на сервере
Получение одного или списка ресурсов (безопасный и идемпотентный метод)
Сообщения
Проверить
Показать подсказку

2. Компоненты запроса и ответа

id: 39289_api_02_sort

В документации REST API каждый endpoint описывается с указанием того, какие данные клиент отправляет серверу (Request) и что сервер возвращает клиенту (Response). Перед вами список элементов, которые обычно встречаются в описании HTTP-запросов и ответов. Разнесите их по двум категориям: «Request (Запрос)» — то, что клиент передаёт серверу, и «Response (Ответ)» — то, что сервер отправляет обратно клиенту. Каждый элемент должен попасть ровно в одну категорию.

Перетяните элементы в соответствующие блоки
Request (Запрос)
Response (Ответ)
Authorization Header
Body Params
Status Code
JSON Data
Сообщения
Проверить
Показать подсказку

3. Анализ описания эндпоинта

id: 39289_api_03_highlight

В приведённом ниже фрагменте документации к REST API выделите три типа элементов: URL эндпоинта (обычно начинается с /api/ или /v1/, содержит параметры в фигурных скобках), HTTP-метод (GET, POST, PUT, DELETE и т.д.) и описание успешного ответа (обычно начинается с «Возвращает», «Успешный ответ» или содержит статус-код 200/201). Для каждого выделенного сегмента выберите соответствующий тип из списка ниже.

Кликните по каждому выделенному фрагменту и выберите для него подходящий тип из списка под текстом.
{{GET /api/v1/users/{id}~|~t1}}

Получить информацию о пользователе по его идентификатору.

{{Возвращает объект пользователя в формате JSON с кодом 200 OK.~|~t2}}

Параметры пути:
• id — идентификатор пользователя (обязательный)
Описание успешного ответа
URL эндпоинта
Сообщения
Проверить
Показать подсказку

4. Обязательные параметры

id: 39289_api_04_click

Перед вами таблица описания параметров эндпоинта REST API, представленная в популярном формате документации (OpenAPI/Swagger). В колонке «Required» указано, является ли параметр обязательным для передачи в запросе. Ваша задача — внимательно изучить таблицу и выделить кликом только те параметры, у которых в колонке «Required» стоит значение «Yes» (или true). Параметры с пустой ячейкой, значением «No», «false» или любым другим — отмечать не нужно. Обратите внимание, что обязательность может быть указана как текстом «Yes», так и булевым значением true.

Кликните по всем фрагментам, которые подходят под условие задания.
Parameter Type Description Required
{{user_id~|~t1}} integer Идентификатор пользователя {{Yes~|~t2}}
{{email~|~t3}} string Email адрес (для уведомлений) {{No~|~t4}}
{{role~|~t5}} string Роль пользователя в системе {{true~|~t6}}
{{timezone~|~t7}} string Часовой пояс (по умолчанию UTC)
{{notify~|~t8}} boolean Отправлять уведомления на email {{false~|~t9}}
{{api_key~|~t10}} string Ключ доступа к API {{Yes~|~t11}}
Сообщения
Проверить
Показать подсказку

5. Ожидаемый статус

id: 39289_api_05_predict

В документации вашего REST API указано, что успешное создание нового пользователя через POST-запрос на endpoint /api/users должно возвращать HTTP-статус 201 Created. Клиент сформировал полностью корректный запрос: отправил JSON с обязательными полями (name, email, password), все данные прошли валидацию на сервере, пользователь успешно сохранён в базе данных. Проанализируйте ситуацию и выберите код HTTP-статуса, который сервер вернёт в ответ на этот запрос в соответствии со стандартами документирования REST API.

Выберите правильный вариант ответа
Документация API

POST /api/users
Создаёт нового пользователя.

Успешный ответ:
• Статус: 201 Created
• Location: https://api.example.com/users/{id}
• Тело ответа: данные созданного пользователя
Сообщения
Проверить
Показать подсказку

6. Заполнение шаблона документации

id: 39289_api_06_replace

В этом задании вы отрабатываете правильное документирование REST API endpoints в соответствии со стандартами. Заполните пропуски в шаблоне описания маршрута так, чтобы полностью соответствовать операции получения информации о конкретном пользователе по его идентификатору. Укажите корректный HTTP-метод и код успешного ответа, который возвращается при успешном выполнении запроса. Обратите внимание, что путь содержит параметр в фигурных скобках — это стандартный способ обозначения динамического сегмента в маршрутах REST API.

Заполните пропуски
Method: input1S
Path: /users/{id}
Response: input2S OK
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

7. Описание ошибки

id: 39289_api_07_bank

В документации REST API нужно правильно описать ошибку с кодом 404 Not Found. Соберите полное описание ответа, используя выпадающие списки и выбирая подходящие фразы из банка токенов. В реальной документации (OpenAPI/Swagger, Postman, README API) описание ошибки 404 обычно содержит указание, что запрошенный ресурс не найден на сервере. Выберите корректные части фразы из предложенных вариантов, чтобы получить стандартное и понятное сообщение об ошибке.

Нужно правильно расставить в пропуски предложенные варианты

При попытке получить несуществующий ресурс сервер возвращает статус 404 Not Found и тело ответа:

{
  "input1S": "input2S",
  "message": "The requested input3S was input4S on this server."
}
error_code
status
404
"404"
Resource
resource
not found
found
exists
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

8. Структура OpenAPI (YAML)

id: 39289_api_08_sequencing

Перед вами строки YAML-описания OpenAPI 3.0 (фрагмент спецификации). Они перемешаны и имеют неправильную вложенность. Ваша задача — расставить их в строго правильном порядке, чтобы получилась корректная иерархия ключей: paths → /users → get → responses → 200. Обратите внимание на отступы: каждый уровень вложенности в YAML обозначается двумя пробелами. Правильная структура должна соответствовать официальному формату OpenAPI Specification (OAS 3.0.x).

Расставьте строки в правильном порядке
paths:
    responses:
      summary: Получить список всех пользователей
        schema:
  /users:
    get:
        application/json:
      content:
      200:
      description: Список пользователей
Сообщения
Проверить
Показать подсказку

9. Неверный глагол

id: 39289_api_09_error

В этом фрагменте документации REST API описан эндпоинт для получения списка товаров, однако указан неправильный HTTP-метод. Метод, используемый для чтения данных (получения ресурса), должен быть GET, а не POST. Найдите строку, где указан неверный глагол, и замените его на правильный. Ошибка очевидна и касается только одного сегмента текста.

Найдите ошибку и исправьте
Эндпоинт: POST /api/products — получение списка всех товаров
Параметры запроса: page, limit (опционально)
Ответ: 200 OK, JSON-массив объектов товара
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

10. PHPDoc для API контроллера

id: 39289_api_10_build

В REST API контроллерах для корректного документирования эндпоинтов часто используют PHPDoc-блок с аннотациями. Из предложенных строк соберите правильный PHPDoc-блок для метода контроллера, который обрабатывает POST-запрос по маршруту и добавляет новый элемент. В блоке должны присутствовать только три аннотации: @Route (с указанием пути и метода), @Method('POST') и @Description с кратким описанием действия. Некоторые строки являются лишними — их включать в решение не нужно. Обратите внимание на правильный порядок и синтаксис аннотаций в PHPDoc.

Перетяните в правильном порядке строки из одного блока в другой
/**
 * @Route("/api/items", methods={"POST"})
 * @Method("POST")
 * @Description("Adds a new item")
 */
 * @param Request $request
 * @return JsonResponse
 * @ApiResource
 * @Route("/items/create")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

11. Чтение пути

id: 39289_api_11_give_result

В документации REST API динамические части пути (path parameters) обозначаются фигурными скобками { }. Например, в маршруте /api/v1/users/{id} параметр id является переменным — при запросе вместо него подставляется конкретное значение. Внимательно посмотрите на приведённый ниже путь эндпоинта и определите имя динамического параметра. Введите только имя параметра без фигурных скобок и без лишних символов.

Что должно получиться?
GET /api/v1/orders/{order_id}/items

Какой параметр в этом пути является динамическим?

Сообщения
Проверить
Показать подсказку

PHP: запуск кода в браузере

id: 39289_compiler
🐘
Запустить тренажёр (PHP)
НайтиКурс.Ру