Публичный API-шлюз на FastAPI: ключи, квоты, версии
Партнёрский шлюз: ключи, квоты в Redis, версии /v1–/v2 и кабинет использования.
FastAPI, OpenAPI, PostgreSQL, Redis
Я делал публичный API-шлюз на FastAPI для партнёров: выдача ключей, лимиты, версии методов, документация OpenAPI. Партнёрский фронт ходил только в этот шлюз, внутренние сервисы за ним не торчали.
Я написал слой ключей и подписей: API-key + опциональный HMAC, хэш ключа в БД, префикс для поиска, мгновенный revoke. Я реализовал квоты (RPS и суточный лимит) в Redis со скользящим окном и корректным 429 + Retry-After.
Я собрал маршрутизацию на внутренние сервисы: таймауты, circuit breaker, идемпотентность POST по Idempotency-Key, журнал request_id. Я версионировал контракт (/v1, /v2) без ломки старых клиентов.
Я добавил кабинет партнёра: ключи, график использования, логи ошибок без тел с ПДн. Стек: FastAPI, Pydantic v2, SQLAlchemy, PostgreSQL, Redis, Uvicorn, Docker. NDA: API и бренд не публикуются.