Документировал ли API?

«Документировал ли API?» — вопрос из категории Софт-скиллы, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Да, активно документировал API как для внутренних сервисов, так и для внешних потребителей.

Для публичных и внутренних REST API я использовал OpenAPI (Swagger). В Laravel-проектах подключал пакет darkaonline/l5-swagger, который автоматически генерирует спецификацию из аннотаций в коде. Это гарантирует, что документация всегда актуальна.

// Пример аннотации для контроллера в Laravel
/**
 * @OAGet(
 *     path="/api/v1/users",
 *     summary="Получить список пользователей",
 *     tags={"Users"},
 *     @OAParameter(name="active", in="query", @OASchema(type="boolean")),
 *     @OAResponse(
 *         response=200,
 *         description="Успешный ответ",
 *         @OAJsonContent(
 *             type="array",
 *             @OAItems(ref="#/components/schemas/User")
 *         )
 *     )
 * )
 */
public function index(Request $request) { /* ... */ }

Что включал в документацию:

  • Все эндпоинты с методами (GET, POST, PUT, DELETE).
  • Параметры запроса (query, path, body) с типами данных и валидацией.
  • Форматы и схемы ответов для всех HTTP-статусов (200, 400, 401, 500).
  • Примеры запросов и ответов.
  • Описание авторизации (например, через Bearer-токен).

Для удобства фронтенд-разработчиков и тестировщиков также создавал и поддерживал Postman-коллекции с примерами запросов и environment-переменными.