APISample (FastAPI)


Пример простого CRUD API сервиса для работы с моделью пользователя.


Используемый стек

  • PostgreSQL
  • Uvicorn
  • Python 3.10
    • FastAPI
    • FastAPI CRUD Router
    • Ormar
    • Jose

Настройки проекта

Все общие настройки проекта хранятся в корневой директории в файле .env в виде переменных окружения.

Для запуска и тестирования можно ничего не менять.

Таблица со значениями переменных:

Переменная окружения Значение
POSTGRES_HOST Адрес хоста базы данных
POSTGRES_PORT Порт базы данных
POSTGRES_DB Имя базы данных
POSTGRES_USER Пользователь базы данных
POSTGRES_PASSWORD Пароль пользователя базы данных
SECRET_KEY Секретный ключ, используемый для шифрования паролей и JWT токенов.

По умолчанию переменная POSTGRES_HOST = postgres - название контейнера с базой данных в docker-compose.yml.


Сборка и запуск проекта

Для сборки и запуска проекта Вам потребуется иметь установленный Docker.

Переходим в корневую директорию проекта, содержащую файлы Dockerfile и docker-compose.yml.

Запускаем сборку проекта:

docker-compose up

Docker автоматически запустит проект по адресу http://0.0.0.0:8000/


Взаимодействие с API эндпоинтами

В проекта задействованно автоматическое генерирование документации для API энд-поинтов, используя Swagger и Redoc.

URL-адрес, по которому расположена документация API Swagger: http://0.0.0.0:8000/docs

URL-адрес, по которому расположена документация API Redoc: http://0.0.0.0:8000/redoc

URL-адрес, по которому расположен CRUD API модели User: http://0.0.0.0:8000/users


Процесс авторизации пользователя

Изначально в базе данных нет ни одного пользователя.
Вы можете создать его, отправив POST запрос на API энд-поинт http://0.0.0.0:8000/users/

После создания пользователя, при взаимодействии с API, в каждом запросе необходимо передавать JWT Token в Headers:

Authorization: Bearer here_your_token

Получение JWT токена

Процесс получения JWT токена довольно простой.
Необходимо отправить POST запрос на URL-адрес http://0.0.0.0:8000/token/

В запросе необходимо передать username и password существующего пользователя.

Срок жизни токена - 60 минут.


=)