Skip to content
/ FastAPITemplate Public template

Шаблон для построения API с помощью фреймворка FastAPI и ORM Peewee. Для аутентификации используется JWT.

License

Notifications You must be signed in to change notification settings

the-lans/FastAPITemplate

Repository files navigation

FastAPITemplate

Шаблон для построения API с помощью фреймворка FastAPI и ORM Peewee. Для аутентификации используется JWT.

Установка

Последовательность действий для установки:

  • Для создания виртуальной среды могут использоваться conda или virtualenv.

  • Создайте виртуальное окружение conda create -n venv

  • Активируйте виртуальное окружение conda activate venv

  • Установите пакеты pip install -r requirements.txt

  • Перейдите в папку с проектом

  • Создайте базу данных <database>

  • Выполните миграцию python pw_migrate.py migrate --database=postgresql://postgres@<host_postgres>:5432/<database>

    <host_postgres> - рабочий хост базы данных

    <database> - имя базы данных

  • Настройте конфигурационный файл conf.yaml

  • Запустите API uvicorn main:app --reload

Конфигурация

Файл конфигурации: conf.yaml

SECRET_KEY - Секретный ключ для JWT-токена.
ALGORITHM: "HS256" - Используемый алгоритм шифрования JWT-токена.
ACCESS_TOKEN_EXPIRE_MINUTES: 1440 - Количество минут истечения действия JWT-токена.

DB:
DOMAIN: "127.0.0.1" - Хост, на котором запускается сервер.
PORT: 8000 - Используемый порт.
NAME: "fapi_template" - Имя БД.
USER: "postgres" - Имя пользователя БД. Для доступа к БД используется метод trust (без пароля), локальный хост и стандартный порт 5432.
ASYNC: True - Асинхронные запросы к БД.

Отладка

Запустите на отладку файл main.py

Проверьте API на локальной машине: http://127.0.0.1:8000/

Доступ к REST API Swagger: http://127.0.0.1:8000/docs#/

Доступ к REST API Redoc: http://127.0.0.1:8000/redoc

Запуск тестов

Тесты наследуют класс TestCase. Тесты лучше всего запускать не под привелигированным пользователем (т.е. не root).

cd ./tests
conda activate venv
pytest test_main.py

API

Эндпойнт Описание
POST /login Логин для получения JWT-токена.
GET /api/items/list Список всех элементов.
GET /api/items/{item_id} Вернуть 1 элемент.
PUT /api/items/{item_id} Изменить 1 элемент.
POST /api/items/new Создать новый элемент.

Оформление кода

Для форматирования кода используйте утилиту black

black --config ./pyproject.toml -v -S ./

Добавление функционала

Для добавления своего функционала можно воспользоваться готовым примером:

  • /backend/models/item.py - Модели объектов: для использования в API и для хранения в базе данных
  • /backend/api/mainapp.py - Реализация конечных точек API
  • /migrations/002_ITEM.py - Миграция данных под созданные модели объектов.

About

Шаблон для построения API с помощью фреймворка FastAPI и ORM Peewee. Для аутентификации используется JWT.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages