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

Ответ

Да, активно документировал 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-переменными.

Ответ 18+ 🔞

А, документация, говоришь? Ну это, блядь, святое дело, ёпта. Без неё — пиздец полный, как в лесу ночью. Все друг на друга орут: «А чё тут передавать?», «А чё мне вернётся?». Я, конечно, не такой распиздяй, чтобы оставить коллег с голой жопой.

Для этих ваших REST API, что наружу торчат, что внутри между сервисами болтаются, я OpenAPI (он же Swagger) юзал. В Laravel-проектах ставил пакетик darkaonline/l5-swagger. Штука, я тебе скажу, огонь — он из аннотаций прямо в коде сам всё генерирует. И волнение ебать не надо, что документация от реальности отъехала — она всегда актуальная, прямо из кода пляшет.

// Вот смотри, как это в коде выглядит, обычный контроллер
/**
 * @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 и прочая хуйня.
  • Параметры — что в строке, что в теле, что в пути. С типами и правилами, чтоб не присылали ерунду.
  • Что назад прилетит — схемы ответов на все случаи жизни: и если ок (200), и если клиент долбоёб (400), и если у нас всё сломалось (500).
  • Примеры, блядь, живые. Чтоб можно было скопировать и сразу тыкнуть.
  • Ну и как авторизоваться, если надо — там токен Bearer или ещё какая хитрая жопа.

А ещё, чтоб фронтендерам и тестировщикам жизнь мёдом не казалась, я Postman-коллекции делал. Там уже готовые запросы, переменные окружения подкручены — сиди и жми кнопки. Удивление пиздец, но когда всё по полочкам разложено, работать в разы быстрее. А то без этого — один сплошной «Чёрт в душу, в сердцу мать!».