FastAPI

Для работы с документами нам нужен python, рассмотрим один из фреймворков: FastAPI. Работать будем в Visual Studio Code с расширением Python.

Установка и запуск

Создаем папку в домашнем каталоге с названием проекта.

Примечание

Название и расположение можно выбирать свои, однако внимательно переименовывайте дальше по инструкции проекты

Создана папка /home/rexam/trading_app и открыта в Visual Studio Code. Подключено виртульное окружение venv для установки библиотек

vs01api

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

venv

Для установки всех библиотек пропишем команду:

pip install fastapi[all]

Далее создадим файл main.py и в него вставим код ниже

# подключаем фреймворк FastAPI
from fastapi import FastAPI

# создаем наше приложение. Слово app можно заменить налюбое другое
app = FastAPI()

# прописываем метод get: при загрузке сайта на главной странице / пользователь получит
@app.get("/")
# эту функцию, которая просто выводит текст
def get_check_work():
    return "Фреймворк FastAPI успешно установлен!"

Для запуск в терминале напишем

uvicorn main:app --reload
hello

Эндпоинты, Параметры URL и Запроса

Изменим код

from fastapi import FastAPI

app = FastAPI(
    # зададим название приложения
    title="Trading App"
)

# словарь пользователей
fake_users = [
    {"id": 1, "role": "admin", "name": "Bob"},
    {"id": 2, "role": "investor", "name": "John"},
    {"id": 3, "role": "trader", "name": "Matt"},
]

# получаем пользователя по его id
@app.get("/users/{user_id}")
def get_user(user_id: int):
    return [user for user in fake_users if user.get("id") == user_id]
get_id

Добавим функцию

# словарь сделок
fake_trades = [
    {"id": 1, "user_id": 1, "currency": "BTC", "side": "buy", "price": 123, "amount": 2.12},
    {"id": 2, "user_id": 1, "currency": "BTC", "side": "sell", "price": 125, "amount": 2.12},
]

# получаем по одной сделке (лимит), начиная с нулевой (офсет)
@app.get("/trades")
def get_trades(limit: int = 1, offset: int = 0):
    return fake_trades[offset:][:limit]
get_trade

И еще одну

# словарт пользователей для редактирования
fake_users2 = [
    {"id": 1, "role": "admin", "name": "Bob"},
    {"id": 2, "role": "investor", "name": "John"},
    {"id": 3, "role": "trader", "name": "Matt"},
]

#  запостим изменение имени у заданного по id пользователя
@app.post("/users/{user_id}")
def change_user_name(user_id: int, new_name: str):
    current_user = list(filter(lambda user: user.get("id") == user_id, fake_users2))[0]
    current_user["name"] = new_name
    return {"status": 200, "data": current_user}
post_name