FastAPI, Flet, Mount. Backend + Frontend

Как я могу получить данные Telegram API, а затем работать с ними во внешнем интерфейсе Flet? Запрос на получение данных «read_root()» -> Вернуть данные «send_name(request: Request)» -> Работать с ними на фронтенде

import asyncio
from contextlib import asynccontextmanager

import requests
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse, RedirectResponse

import flet as ft
import flet.fastapi as flet_fastapi

import api
import gui


@asynccontextmanager
async def lifespan(app: FastAPI):
    await flet_fastapi.app_manager.start()
    yield
    await flet_fastapi.app_manager.shutdown()


app = FastAPI(lifespan=lifespan)


datt = {}

async def root_main(page: ft.Page):

    page.add(ft.Text("This is root app!"))
    #  Get data -> work on the front end

@app.post("/get_data")
async def send_name(request: Request):
    data = await request.json()
    print(data)

@app.get("/data")
async def read_root():
    print(3234)
    with open("index_data.html", "r") as file:
        html_content = file.read()

    return HTMLResponse(content=html_content, status_code=200)


if __name__ == "__main__":
    import uvicorn

    app.mount('/', flet_fastapi.app(root_main))
    uvicorn.run(app, host="0.0.0.0", port=25022)

HTML

<script src="https://telegram.org/js/telegram-web-app.js"></script>
<script>
    let tg = window.Telegram.WebApp;

    let user_id = tg.initDataUnsafe.user.username;
    let colorScheme = tg.colorScheme;

    // Отправка name и colorScheme на сервер FastAPI
    fetch('/get_data', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
            user_id: user_id,
            colorScheme: colorScheme
        })
    })
    .then(response => response.json())
    .then(data => {
        console.log('Success:', data);
    })
    .catch((error) => {
        console.error('Error:', error);
    });

    // Вызов метода close()

</script>

Ответы (0 шт):