API Gateway Auth Service — центральный шлюз (API Gateway) для аутентификации, управления пользователями и проксирования запросов к микросервисам профилей, фотографий и свайпов. Сервис реализован на FastAPI, поддерживает OAuth (Google, Яндекс), JWT, интеграцию с Kafka и PostgreSQL.
- Единая точка входа для клиентских приложений (API Gateway)
- Аутентификация через Google, Яндекс и по логину/паролю
- JWT-аутентификация
- Проксирование запросов к микросервисам профилей, фотографий, свайпов
- Интеграция с Kafka для событий свайпов
- Swagger/OpenAPI-документация
- Миграции БД через Alembic
- Python 3.12 — основной язык разработки
- FastAPI — современный асинхронный web-фреймворк
- SQLAlchemy — ORM для работы с базой данных
- Alembic — миграции схемы БД
- PostgreSQL — реляционная база данных
- Kafka (aiokafka) — брокер сообщений для асинхронной обработки событий (например, свайпы)
- Docker, docker-compose — контейнеризация и оркестрация сервисов
- Poetry — управление зависимостями и пакетами
- Pydantic — валидация и сериализация данных
- OAuth (Google, Yandex) — поддержка авторизации через внешние провайдеры
- ruff — быстрый и современный линтер для Python
Архитектурная схема (текст)
[Клиент]
|
v
[API Gateway (этот сервис)]
| | |
| | |---> [Микросервис профилей]
| |---> [Микросервис фотографий]
|---> [Kafka] <--- [Микросервис свайпов]
|
[PostgreSQL]
- Создайте папку с проектом и склонируйте репозиторий:
mkdir Auth-API-Gateway
cd Auth-API-Gateway
git clone https://github.com/aquaracer/Fastapi-Auth-API-Gateway.git-
Настройте переменные окружения в файле .env.
-
Соберите и запустите контейнеры:
docker-compose up --build- Примените миграции базы данных:
docker exec -it auth-api-gateway bash
poetry run alembic upgrade headПриложение будет доступно по следующим адресам:
- API:
http://localhost:8000 - Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
| Метод | URL | Описание |
|---|---|---|
| POST | /auth | Вход по логину/паролю |
| GET | /auth/login/google | Редирект на Google OAuth |
| GET | /auth/google | Callback от Google OAuth |
| GET | /auth/login/yandex | Редирект на Яндекс OAuth |
| GET | /auth/yandex | Callback от Яндекс OAuth |
| POST | /user | Регистрация пользователя |
| POST | /user_profile | Создать профиль |
| GET | /user_profile/list | Получить список профилей |
| PATCH | /user_profile | Обновить профиль |
| DELETE | /user_profile | Удалить профиль |
| POST | /photo | Загрузить фото |
| GET | /photo/list_own_photos | Получить свои фото |
| GET | /photo/list_users_photos | Получить фото других пользователей |
| DELETE | /photo/{photo_id} | Удалить фото |
| POST | /swipes/process_swipes | Отправить событие свайпа (Kafka) |