API для сокращения ссылок с возможностью управления ими. Поддерживает регистрацию пользователей, создание, удаление, обновление и просмотр статистики коротких ссылок.
- Создание коротких ссылок для зарегистрированных и незарегистрированных пользователей
- Поддержка кастомных alias
- Поиск ссылки по оригинальному URL
- Указание времени жизни ссылки
- Получение статистики переходов
- Кэширование популярных ссылок через Redis
- Генерация QR-кодов для коротких ссылок
- Удаление неиспользуемых ссылок спустя N дней после последнего перехода
POST /links/shorten{
"original_url": "https://example.com",
"custom_alias": "myalias",
"expires_at": "2025-12-31T23:59:59"
}{
"short_code": "myalias",
"original_url": "https://example.com"
}GET /links/{short_code}302 Redirect на оригинальный URL
GET /links/{short_code}/stats{
"original_url": "https://example.com",
"created_at": "2025-01-01T12:00:00",
"visit_count": 15,
"last_visited_at": "2025-03-30T15:20:00"
}pip install -r requirements.txtСоздайте файл .env и укажите переменные
docker-compose up --build -ddocker logs fastapi_app -f| Поле | Тип данных | Описание |
|---|---|---|
| id | UUID | Уникальный идентификатор |
| TEXT | Email пользователя (уникальный) | |
| hashed_password | TEXT | Захешированный пароль |
| registered_at | TIMESTAMP | Дата регистрации пользователя |
| is_active | BOOLEAN | Флаг активности пользователя |
| is_superuser | BOOLEAN | Флаг суперпользователя |
| is_verified | BOOLEAN | Флаг верификации пользователя |
| Поле | Тип данных | Описание |
|---|---|---|
| id | BIGINT | Уникальный идентификатор |
| original_url | TEXT | Исходный URL |
| short_code | VARCHAR(10) | Уникальный короткий код |
| created_at | TIMESTAMP | Дата создания |
| expires_at | TIMESTAMP | Время истечения (если есть) |
| custom_alias | VARCHAR(50) | Кастомный алиас (если задан) |
| user_email | TEXT | Email владельца (может быть NULL) |
| Поле | Тип данных | Описание |
|---|---|---|
| id | BIGINT | Уникальный идентификатор |
| link_id | BIGINT | ID ссылки |
| visit_count | INTEGER | Количество переходов |
| last_visited_at | TIMESTAMP | Дата последнего перехода |
После запуска сервера документация доступна по адресу:
- Swagger UI: http://localhost:8000/docs
🔗 Разработано на FastAPI с поддержкой PostgreSQL и Redis



