API для благотворительного фонда QRKot с возможность создавать отчеты, используя google cloud platform.
Данный сервис создан для поддержки хвостатых. Пользователи могут внести пожертвование, сопроводив его комментарием или пожеланием. Администраторы сервиса создают проекты в помощь приютам для животных и другим заинтересованным. Проекты не целевые: распределение средств происходит автоматически в порядке создания проектов.
- Python 3.11
- FastAPI (веб-фреймворк для создания API)
- SQLAlchemy (библиотека для работы с реляционными СУБД с применением технологии ORM)
- Pydantic (библиотека для валидации и сериализации данных)
- Alembic (инструмент для миграции базы данных)
- Uvicorn (высокопроизводительный ASGI сервер)
- Aiogoogle (google cloud platform)
- Клонируйте репозиторий
git clone https://github.com/Rxyalxrd/QRkot_spreadsheets.git
- Создайте и активируйте виртуальное окружение
python3 -m venv env
-
Если у вас Linux/macOS
source env/bin/activate
-
Если у вас windows
source env/scripts/activate
- Обновите pip до последней версии
python3 -m pip install --upgrade pip
- Установите зависимости из файла 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, так что может быть интегрирован в вашу систему.
Запрос осуществляется посредством протокола 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"
}