Как проектировать idempotent API?

Middle
535 просмотров
AFK Offer AI

Idempotent API — повторный вызов даёт тот же результат, что и первый. GET, PUT, DELETE по определению идемпотентны. Проблема с POST: повторная отправка может создать дубликат. Решение: клиент генерирует Idempotency-Key (UUID) и передаёт в заголовке. Сервер сохраняет ключ + результат в БД. При повторном запросе с тем же ключом — возвращает сохранённый результат без повторного выполнения. TTL на ключи — 24 часа обычно. Stripe так делает для платежей. В Go — middleware, который проверяет ключ до обработки.

Следующий вопрос

Как реализовать rate limiter через token bucket?