Приветствую!
REST-сервис написан на FastAPI с использованием следующих библиотек:
- dotenv (взаимодействие с .env)
- PyJWT (реализация JWT токенов для авторизации)
- Tortoise-ORM (ORM для упрощения работы с БД)
- Python >= 3.12
- Poetry >= 2.1
-
Клонирование репозитория
git clone https://gitlab.com/notnered/cft-test-task.git -
Установка зависимостей
poetry install -
Создание файла
.envПример содержимого
.env:SECRET_KEY=ВАШ_СЕКРЕТНЫЙ_КЛЮЧ -
Запуск приложения
- Выполнение напрямую:
poetry run python main.py | poetry run fastapi run- Выполнение с окружением:
poetry shell fastapi run | python main.py
Создаёт пользователя и связанного сотрудника.
Тело запроса (JSON):
{
"username": "string",
"password": "string"
}ОТВЕТ 200
{
"id": "int",
"username": "string"
}ОШИБКИ
- 400 -пользователь с таким именем уже существует или проблема при создании сотрудника.
Выполняет вход пользователя, возвращает JWT-токен.
Тело запроса (JSON):
{
"username": "string",
"password": "string"
}ОТВЕТ 200
{
"token": "jwt-token-string"
}ОШИБКИ
- 406 — пустой или некорректный логин.
- 401 — неверный логин или пароль.
- 500 — ошибка создания JWT токена.
Возвращает информацию о зарплате пользователя.
Авторизация: Требует JWT в заголовке Authorization: Bearer
ОТВЕТ 200
{
"employee": {
"user_name": "string",
"user_id": "int"
},
"salary": "int",
"next_rise": "dd/mm/yyyy"
}ОШИБКИ
- 401 — профиль сотрудника не найден или нет прав доступа.
При желании заменить СУБД откройте файл db.py и при помощи документации Tortoise-orm
from tortoise.contrib.fastapi import register_tortoise
def init_db(app):
register_tortoise(
app,
db_url='sqlite://db.sqlite3',
modules={'models': ['app.models']},
generate_schemas=True,
add_exception_handlers=True,
)-
Если увидите ошибку вроде
Error: The current project could not be installed:, выполните:poetry instal --no-root -
.envдолжен распологаться в той же папке, что иmain.py -
requirements.txtиспользуется при наличиии проблем с poetry. При нормальной работе все зависимости берутся изpyproject.toml.