← Назад к вопросам

Насколько вы знакомы с API?

1.3 Junior🔥 61 комментариев
#Исследования пользователей

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Знакомство с API: практический взгляд PM

Краткий ответ

Я know APIs хорошо — не как разработчик (не пишу код), а как PM, который должен понимать, что возможно, а что нет. Это критически важно для принятия решений о фичах, партнёрствах и масштабировании.


Что я знаю: REST, GraphQL, webhooks

REST API

  • Я понимаю структуру: GET, POST, PUT, DELETE
  • Статус коды: 200 ✅, 400 ❌, 401 (нет доступа), 404 (не найдено), 429 (limit), 500 (ошибка сервера)
  • Rate limiting: важно для масштаба
  • Пример: GET /api/v1/users/{id} возвращает JSON с данными пользователя

GraphQL

  • Запрашиваешь только нужные поля (vs REST — вся запись)
  • Сложнее для новичков, но мощнее
  • Лучше для мобильных (меньше трафика)
  • Минус: кэширование сложнее

Webhooks

  • Server A отправляет данные Server B, когда что-то произойдёт
  • Пример: "когда платёж прошёл, вебхук отправляет данные в твой сервис"
  • Асинхронный, надёжнее чем polling

Что я использую в работе

1. Интеграции с третьими лицами

Я работал с API:

  • Stripe (платежи): их docs показывают, какие endpoints есть
  • Twilio (SMS): как отправить СМС через API
  • Google Maps (геолокация): как встроить карту
  • Slack (уведомления): как отправить сообщение в канал
  • Notion (база данных): как запихать данные в Notion

Мой workflow:

  1. Открываю документацию API (docs.stripe.com и т.д.)
  2. Смотрю примеры запросов
  3. Спрашиваю разработчика: "Это возможно через их API или нужно кастом?"

2. Проектирование собственного API

Когда я проектирую API для нашего продукта, я думаю:

  • Какие endpoints нужны?
  • Какая структура данных?
  • Какие статус коды?
  • Какой rate limit?

Пример разговора с разработчиком:

Я: "Нам нужен endpoint, чтобы получить список заказов пользователя"

Разработчик: "Окей, GET /api/v1/orders?user_id=123&limit=50&offset=0"

Я: "Почему limit 50, а не 100? И нужна ли пагинация через offset?"

Разработчик: "Limit 50 потому что на БД нагрузка, offset потому что
JavaScript стандарт"

Я: "Окей. А нужен ли фильтр по дате? Клиенты просят список заказов за неделю"

Разработчик: "Да, добавим: GET /api/v1/orders?created_after=2024-01-01&created_before=2024-01-07"

3. Переговоры о платежи

Я вёл переговоры о rate limit за API:

  • Бесплатный уровень: 100 запросов в минуту
  • Премиум: 10K запросов в минуту
  • Enterprise: custom

Это требует понимания того, сколько запросов надо клиентам.


Знаю минусы API

Ограничение 1: Rate limiting

  • Google Maps: максимум 1000 запросов в день (бесплатный уровень)
  • Если фича требует 10K запросов → нужно платить $5K/месяц
  • Я должен знать это ДО запуска фичи

Ограничение 2: Downtime

  • Stripe был down 30 минут в 2023 году
  • Все платежи заморозились
  • Я должен быть готов: либо на fallback, либо уведомить пользователей

Ограничение 3: Версионирование

  • API v1 устаревает → API v2
  • Клиенты должны мигрировать
  • Я должен планировать эту миграцию на квартал вперёд

Ограничение 4: Безопасность

  • API key не должна быть в frontend (она утечёт)
  • Нужен backend proxy
  • Недостаточное понимание = утечка данных

Знаю, когда нужен API, когда нет

Нужен API:

  • Множество клиентов хочет встроить данные (как Stripe)
  • Мобильное приложение (нужен бэкенд для синхро)
  • Автоматизация (клиент хочет автоматически отправлять данные)
  • Экосистема (как Slack имеет 1000+ apps через API)

Не нужен API:

  • Всё работает через веб-интерфейс
  • Клиентов мало, можно вручную
  • Данные не чувствительны (и утечка не страшна)

Знаю про API дизайн

Хорошие API практики:

  1. Версионирование: /api/v1/, /api/v2/

    • Не ломаешь старые клиенты
  2. Правильные HTTP методы:

    • GET (читать)
    • POST (создать)
    • PUT/PATCH (обновить)
    • DELETE (удалить)
  3. Правильные endpoint'ы:

    • Существительные, не глаголы: /users, не /get-users
    • Иерархия: /users/{id}/orders, не /get-user-orders
  4. Правильные статус коды:

    200 OK — успешно
    201 Created — новый ресурс создан
    400 Bad Request — ошибка клиента (неправильные параметры)
    401 Unauthorized — нет доступа (нужна авторизация)
    403 Forbidden — хочешь видеть чужие данные (access denied)
    404 Not Found — нет такого ресурса
    429 Too Many Requests — превышен rate limit
    500 Internal Server Error — ошибка сервера
    
  5. Документация: OpenAPI (Swagger) или AsyncAPI

    • Разработчик смотрит docs → понимает, как использовать

Истории из опыта

История 1: Интеграция с платёжной системой

Мы запустили интеграцию со Stripe. Через неделю выяснилось: rate limit 100 запросов в минуту, нашего трафика недостаточно... Но когда мы масштабировались до 10K транзакций в день, Stripe начал отклонять запросы.

Лесс: нужно знать, какой rate limit у API, и убедиться, что вы под него подходите ПЕРЕД запуском.

История 2: Меняющийся API

Использовали Google Maps API v1. Google объявил: v1 умирает в 2024. Мы должны были мигрировать на v2. Это заняло месяц (переписали кучу кода).

Лесс: всегда проверяй roadmap API провайдера. Если API старая версия → может отключить в любой момент.

История 3: API docs плохие

Использовали API неизвестного стартапа. Их docs были ужасны. Мне потребовалось 2 недели, чтобы разработчик понял, как это работает.

Лесс: хорошая документация = экономия месяцев на интеграцию. Плохая docs = не интегрируемся.


Не знаю (честно)

  • Я не пишу код для API (это работа разработчика)
  • Я не помню точные синтаксис (открываю docs)
  • Я не разбираюсь в микро-оптимизациях (как кэшировать в Redis при 10M запросов/сек)

Но я знаю, когда нужно спросить разработчика, и я знаю, правильный ли ответ.


Как я растю в этом

Читаю:

  • REST API best practices (json:api standard)
  • OpenAPI спецификация
  • Примеры хороших API (Stripe, GitHub, Slack)

Пробую:

  • Запускаю curl commands в терминале (самый простой способ тестировать API)
  • Запускаю Postman для более сложных запросов
  • Читаю логи → понимаю, что пошло не так

Спрашиваю:

  • Разработчиков: "Почему ты выбрал этот rate limit?"
  • Коллег PM: "Как другие компании обрабатывают версионирование?"

Итог

Я знаю API достаточно, чтобы:

  1. Говорить с разработчиками на их языке
  2. Проектировать интеграции
  3. Видеть, что возможно, а что нет
  4. Переговариваться с API провайдерами
  5. Читать документацию и понимать, как это работает

Я не знаю, как это писать, но я знаю, как это работает. И это достаточно для PM.