SilvioLima commited on
Commit
cdd26db
·
1 Parent(s): a7f7feb

Back e Front

Browse files
Files changed (1) hide show
  1. app.py +18 -35
app.py CHANGED
@@ -1,13 +1,8 @@
1
  import gradio as gr
2
- import requests
3
  from fastapi import FastAPI
4
  from pydantic import BaseModel
5
  from typing import Optional
6
 
7
- # URL do nosso backend FastAPI.
8
- # Usamos 127.0.0.1 (localhost) porque ambos os processos rodarão na mesma máquina/container.
9
- BACKEND_URL = "http://127.0.0.1:8000"
10
-
11
  # --- Backend FastAPI ---
12
  app = FastAPI()
13
 
@@ -28,44 +23,28 @@ def read_hello(name: str):
28
  def create_api_item(item: Item):
29
  return item
30
 
31
- # --- Frontend Gradio ---
32
- def get_root_message():
33
- """Chama o endpoint GET / via HTTP"""
34
- try:
35
- response = requests.get(f"{BACKEND_URL}/")
36
- response.raise_for_status() # Lança um erro para códigos de status 4xx/5xx
37
- return response.json().get("message", "Resposta inesperada da API.")
38
- except Exception as e:
39
- return f"Erro ao chamar a API: {e}"
40
-
41
- def get_hello_message(name):
42
- """Chama o endpoint GET /hello/{name} via HTTP"""
43
  if not name:
44
  return "Por favor, insira um nome."
45
- try:
46
- response = requests.get(f"{BACKEND_URL}/hello/{name}")
47
- response.raise_for_status()
48
- return response.json().get("message", "Resposta inesperada da API.")
49
- except Exception as e:
50
- return f"Erro ao chamar a API: {e}"
51
 
52
- def create_item(name, description, price):
53
- """Chama o endpoint POST /items/ via HTTP"""
54
  if not name or price is None:
55
  return "Nome e Preço são campos obrigatórios."
56
 
57
- item_data = {
 
58
  "name": name,
59
  "description": description,
60
  "price": price
61
- }
62
-
63
- try:
64
- response = requests.post(f"{BACKEND_URL}/items/", json=item_data)
65
- response.raise_for_status()
66
- return response.json()
67
- except Exception as e:
68
- return f"Erro ao chamar a API: {e}"
69
 
70
  # --- Interface Gradio ---
71
  with gr.Blocks(title="FastAPI + Gradio Integrado") as demo:
@@ -80,7 +59,11 @@ with gr.Blocks(title="FastAPI + Gradio Integrado") as demo:
80
  placeholder="Clique no botão para ver a mensagem...",
81
  lines=3
82
  )
83
- btn_root.click(fn=get_root_message, inputs=None, outputs=output_root)
 
 
 
 
84
 
85
  with gr.Tab("👋 Saudação com Nome"):
86
  gr.Markdown("### Endpoint: GET /hello/{name}")
 
1
  import gradio as gr
 
2
  from fastapi import FastAPI
3
  from pydantic import BaseModel
4
  from typing import Optional
5
 
 
 
 
 
6
  # --- Backend FastAPI ---
7
  app = FastAPI()
8
 
 
23
  def create_api_item(item: Item):
24
  return item
25
 
26
+ # --- Funções de Lógica (agora chamadas diretamente) ---
27
+ def get_hello_message(name: str):
28
+ """Chama a lógica do backend diretamente."""
 
 
 
 
 
 
 
 
 
29
  if not name:
30
  return "Por favor, insira um nome."
31
+ # Chamada direta à função do backend
32
+ response = read_hello(name)
33
+ return response.get("message", "Resposta inesperada.")
 
 
 
34
 
35
+ def create_item(name: str, description: str, price: float):
36
+ """Chama a lógica do backend diretamente."""
37
  if not name or price is None:
38
  return "Nome e Preço são campos obrigatórios."
39
 
40
+ # Cria uma instância do modelo Pydantic, como o backend espera
41
+ item_model = Item(
42
  "name": name,
43
  "description": description,
44
  "price": price
45
+ )
46
+ # Chamada direta à função do backend
47
+ return create_api_item(item_model)
 
 
 
 
 
48
 
49
  # --- Interface Gradio ---
50
  with gr.Blocks(title="FastAPI + Gradio Integrado") as demo:
 
59
  placeholder="Clique no botão para ver a mensagem...",
60
  lines=3
61
  )
62
+ # Para a rota raiz, podemos simplesmente chamar a função do backend diretamente no click
63
+ btn_root.click(
64
+ fn=lambda: read_root().get("message", "Resposta inesperada."),
65
+ inputs=None,
66
+ outputs=output_root)
67
 
68
  with gr.Tab("👋 Saudação com Nome"):
69
  gr.Markdown("### Endpoint: GET /hello/{name}")