@R0Zi

Как связать Frontend с Backend FastAPI?

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

import flet as ft
import flet.fastapi as flet_fastapi

app = FastAPI()


async def root_main(page: ft.Page):
    page.add(ft.Text("This is root app!"))


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

    return HTMLResponse(content=html_content, status_code=200)

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

if __name__ == "__main__":
    import uvicorn
    app.mount('/', flet_fastapi.app(root_main))
    uvicorn.run(app, host="0.0.0.0", port=25022)


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <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>
</body>
</html>


Не могу понять как при заходе в MiniApp показать по корню само приложение и в нем получить данные которые получаются за счет @app.get("/data") и @app.post("/get_data")
  • Вопрос задан
  • 128 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы