Shift-rest
REST-сервис просмотра текущей зарплаты и даты следующего повышения.
Документация проекта
Описание
- alembic - папка с миграциями
- src - папка с исходным кодом
- .env.fastapi.dev - файл с переменными окружения для разработки
- src/auth - приложение с роутами для аутентификации
- src/salary - приложение с роутами для просмотра зарплаты и даты следующего повышения
Требования
- Docker
- Git
- Созданный и заполненный .env.fastapi.dev файл
Клонирование репозитория
- Клонируйте репозиторий:
git clone <url репозитория>
- Перейдите в директорию проекта:
cd shift-rest
Добавление .env файлов
- Создайте и заполните файл
.env.fastapi.dev
следующим образом:
DB_PORT=5432
DB_HOST=db
DB_NAME=postgres
DB_USER=postgres
DB_PASS=12345
SECRET_KEY = "60a66d11eea3a05709692535550f27e4a8ad8469598ab4df46e4057ebc6f5226"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30
POSTGRES_USER=postgres
POSTGRES_PASSWORD=12345
POSTGRES_DB=postgres
Что происходит при запуске
При запуске Docker Compose выполняются следующие действия:
- Создается контейнер с PostgreSQL.
- Создается контейнер с FastAPI.
- Применяются миграции к базе данных.
- Создаются 10 пользователей связанных с 10-ю записями о зарплате в базе данных:
- Пользователи:
user0
,user1
, ...,user9
- Пароли:
password0
,password1
, ...,password9
- Пользователи:
- Запускается FastAPI.
Запуск
- Запустите Docker Compose:
docker-compose build
docker-compose up -d
После этого приложение будет доступно по адресу http://0.0.0.0:8000
.
Приложение запускается не моминтально, так как идут миграции и заполнение базы данных тестовыми данными. Лучше посмотреть логи контейнера, когда uvicorn запуститься, а можно просто подождать
Важно: При подключении по адресу http://0.0.0.0:8000
в Safari могут возникнуть проблемы. В Google Chrome и Arc браузерах подключение работает корректно.
Документация API
Документация API доступна по адресу http://0.0.0.0:8000/docs
.
Доступно два эндпоинта:
-
/auth/token/
- аутентификация пользователя. Response:
{
"access_token": "string",
"token_type": "bearer"
}
-
/salary/
- просмотр зарплаты и даты следующего повышения пользователя. Response:
{
"salary_amount": "int",
"next_raise_date": "Y:M:D"
}
Отправка запросов с помощью Postman
Для обращения к /auth/token/
POST через Postman, вам нужно следовать следующим шагам:
- Откройте Postman.
- Введите URL
http://localhost:8000/auth/token/
. - Убедитесь, что выбран метод
POST
. - Перейдите на вкладку
Body
, затем выберитеx-www-form-urlencoded
. - Добавьте два ключа:
username
иpassword
, и установите их значения в соответствии с вашими учетными данными. - Нажмите кнопку
Send
для отправки запроса. - Скопируйте токен из ответа и используйте его для доступа к другим эндпоинтам.
Для обращения к /salary
GET через Postman, вам нужно следовать следующим шагам:
- Откройте Postman.
- Введите URL
http://localhost:8000/salary/
. - Убедитесь, что выбран метод
GET
. - Вам также может потребоваться добавить токен авторизации в заголовки запроса. Для этого перейдите на вкладку
Headers
и добавьте новый заголовок с именемAuthorization
и значениемBearer {ваш токен}
. - Нажмите кнопку
Send
для отправки запроса.
Пожалуйста, учтите, что {ваш токен}
нужно заменить на реальный токен, который вы получили при аутентификации.
Завершение работы
Не забудьте остановить контейнеры - они должны быть удалены, потому что при каждом запуске docker-compose создаются новые пользователи и записи о зарплате, что может привести к конфликтам.
docker-compose down