Skip to content

Latest commit

 

History

History
166 lines (129 loc) · 6.32 KB

README.md

File metadata and controls

166 lines (129 loc) · 6.32 KB

API для благотворительного фонда QRKot с возможность создавать отчеты, используя google cloud platform.


Описание

Данный сервис создан для поддержки хвостатых. Пользователи могут внести пожертвование, сопроводив его комментарием или пожеланием. Администраторы сервиса создают проекты в помощь приютам для животных и другим заинтересованным. Проекты не целевые: распределение средств происходит автоматически в порядке создания проектов.


Используемые технологии

  • Python 3.11
  • FastAPI (веб-фреймворк для создания API)
  • SQLAlchemy (библиотека для работы с реляционными СУБД с применением технологии ORM)
  • Pydantic (библиотека для валидации и сериализации данных)
  • Alembic (инструмент для миграции базы данных)
  • Uvicorn (высокопроизводительный ASGI сервер)
  • Aiogoogle (google cloud platform)

Установка

  1. Клонируйте репозиторий
git clone https://github.com/Rxyalxrd/QRkot_spreadsheets.git
  1. Создайте и активируйте виртуальное окружение
python3 -m venv env
  • Если у вас Linux/macOS

    source env/bin/activate
  • Если у вас windows

    source env/scripts/activate
  1. Обновите pip до последней версии
python3 -m pip install --upgrade pip
  1. Установите зависимости из файла requirements.txt
  • Если используете venv

    pip install -r requirements.txt
  • Если используете poetry

    poetry add $(cat requirements.txt)

Запуск

В директории проекта создайте файл .env и заполните его по образцу .env.example

Примените миграции

alembic upgrade head

Запустите проект

uvicorn app.main:app --reload

Для того чтобы открыть документацию проекта, перейдите по ссылке http://127.0.0.1:8000/docs/ после запуска проекта.


API

Данный сервис является API, так что может быть интегрирован в вашу систему.

Формат запроса

Запрос осуществляется посредством протокола HTTP 1.1.

Формат ответа

Ответ сервиса представляет собой JSON-документ в кодировке UTF-8, содержимое зависит от запроса.

Ресурсы

QRKot имеет следующте ресурсы: Проекты, Пожертвования, Пользователи и Формирование отчетов. Работа с пользователями осуществляется с помощью стандартного модуля FastAPI Users.

Список проектов может быть просмотрен любым пользователем сервиса. Создание, редактирование и удаление проектов доступно только суперпользователям.

Пожертвование может сделать любой пользователь. Также он может посмотреть список своих пожертвований. Суперпользователь может посмотреть список всех пожертвований.

Отчеты формируются по закрытым благотворительным проектам. Создавать может только суперюзер.

Для регистрации выполните POST запрос на http://127.0.0.1:8000/auth/register:

curl -X 'POST' \
  'http://127.0.0.1:8000/auth/register' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "email": "user@example.com",
  "password": "your_password"
  }'

Для аутентификации и получения токена выполните POST запрос на http://127.0.0.1:8000/auth/jwt/login:

curl -X 'POST' \
  'http://127.0.0.1:8000/auth/jwt/login' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'grant_type=&username=username&password=password&scope=&client_id=&client_secret='

Пример ответа в случае успешного выполнения:

{
  "access_token": "token",
  "token_type": "bearer"
}

Далее используйте этот токен при остальных запросах к сервису - передавайте его в заголовках запросов.

Пример

Для создания нового пожертвования выполните POST запрос на http://127.0.0.1:8000/donation/, пример которого ниже:

curl -X 'POST' \
  'http://127.0.0.1:8000/donation/' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "comment": "От всей души",
  "full_amount": 450
  }'

Пример ответа в случае успешного выполнения HTTP 1.1 200 OK

{
  "comment": "От всей души",
  "full_amount": 450,
  "id": 2,
  "create_date": "2023-07-22T03:21:26.369602"
}

Автор проекта

Максим Цареградцев