[Python] Request POST não está funcionando local, mas no thunder client sim

Discussão em 'Python' iniciado por Stack, Fevereiro 12, 2025.

  1. Stack

    Stack Membro Participativo

    tenho API de cadastro e login, quando estava configurando o projeto incialmente consegui cadastrar, mas agora só condigo fazer login com os usuarios cadastrados, nn consigo mais cadastrar nenhum:

    Serviço Front-End ABAIXO (AuthService):

    export const API_URL = "http://127.0.0.1:8000";

    import { useRouter } from "next/navigation";

    export const signup = async (nome: string, email: string, senha: string) => { const router = useRouter();

    try { console.log("Enviando dados:", { nome, email, senha });

    const response = await fetch("http://127.0.0.1:8000/usuarios/cadastrar", {
    method: "POST",
    headers: {
    "Content-Type": "application/json",
    },
    body: JSON.stringify({ nome, email, senha }),
    });

    console.log("Status da resposta:", response.status);
    console.log("Cabeçalhos da resposta:", response.headers);

    const responseData = await response.json().catch(() => null);
    console.log("Dados da resposta:", responseData);

    if (!response.ok) {
    throw new Error("Erro ao criar conta");
    }

    localStorage.setItem("token", responseData.token);

    console.log("Cadastro bem-sucedido! Redirecionando...");
    router.push("/inicio");

    return responseData;


    } catch (error) { console.error("Erro ao cadastrar:", error); throw error; } };

    export const login = async (email: string, senha: string) => { const response = await fetch(${API_URL}/usuarios/login, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ email, senha }), });

    if (!response.ok) { const errorData = await response.json(); console.error(errorData); throw new Error("Credenciais inválidas"); }

    const data = await response.json(); localStorage.setItem("token", data.token); return data; };


    componente de cadastro abaixo:

    "use client";

    import React, { useState } from "react"; import { Container, TextField, Button, Typography, Box } from "@mui/material"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { signup } from "@/services/AuthService";

    const Cadastro: React.FC = () => { const [name, setName] = useState(""); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState("");

    const router = useRouter();

    const handleSignup = async (e: React.FormEvent) => { e.preventDefault(); console.log("Chamando signup com:", name, email, password); try { await signup(name, email, password); alert("Cadastro realizado com sucesso!"); router.push("/inicio"); } catch (error) { setError("Erro ao cadastrar. Verifique os dados."); } };

    return ( Cadastro

    {error && <Typography color="error">{error}</Typography>}

    <form onSubmit={handleSignup}>
    <TextField
    label="Nome"
    variant="outlined"
    fullWidth
    margin="normal"
    type="text"
    value={name}
    onChange={(e) => setName(e.target.value)}
    />

    <TextField
    label="Email"
    variant="outlined"
    fullWidth
    margin="normal"
    type="email"
    value={email}
    onChange={(e) => setEmail(e.target.value)}
    />
    <TextField
    label="Senha"
    type="password"
    variant="outlined"
    fullWidth
    margin="normal"
    value={password}
    onChange={(e) => setPassword(e.target.value)}
    />

    <Typography>
    Já tem cadastro? <Link href="/login">Fazer login</Link>
    </Typography>

    <Button type="submit" variant="contained" color="primary" fullWidth sx={{ mt: 2 }}>
    Cadastrar
    </Button>
    </form>
    </Box>
    </Container>


    ); };

    export default Cadastro;


    Rotas do backend ( FastApi - Python ) abaixo :

    from fastapi import APIRouter, HTTPException from app.services.usuario_service import UsuarioService from app.schemas.usuario import UsuarioSchema, LoginSchema from uuid import UUID

    router = APIRouter(prefix="/usuarios", tags=["Usuários"])

    @router.get("/") async def listar_usuarios(): return UsuarioService.listar_usuarios()

    @router.post("/login") async def login(usuario: LoginSchema): usuario_logado = UsuarioService.autenticar_usuario(usuario.email, usuario.senha) if not usuario_logado: raise HTTPException(status_code=401, detail="Credenciais inválidas") return {"message": "Login bem-sucedido", "user": usuario_logado}

    @router.post("/cadastrar") async def criar_usuario(usuario: UsuarioSchema): print("Recebendo dados no backend:", usuario)
    usuario_criado = UsuarioService.criar_usuario(usuario) if isinstance(usuario_criado, dict) and "mensagem" in usuario_criado: raise HTTPException(status_code=400, detail=usuario_criado["mensagem"]) return usuario_criado

    @router.put("/atualizar/{usuario_id}", response_model=UsuarioSchema) async def atualizar_usuario(usuario_id: UUID, usuario: UsuarioSchema): usuario_atualizado = UsuarioService.atualizar_usuario(usuario_id, usuario) if isinstance(usuario_atualizado, dict) and "mensagem" in usuario_atualizado: raise HTTPException(status_code=404, detail=usuario_atualizado["mensagem"]) return usuario_atualizado

    @router.delete("/deletar/{usuario_id}", status_code=204) async def excluir_usuario(usuario_id: UUID): sucesso = UsuarioService.excluir_usuario(usuario_id) if not sucesso: raise HTTPException(status_code=404, detail="Usuário não encontrado") return {"message": "Usuário excluído com sucesso"}


    OBS: O cors está pegando, pois consigo fazer login, mas quando quero cadstrar usuarios novos tanto em prod quanto em dev, nn consigo.

    o log do back nn me da nhm mensagem e nem o console.log

    NÃO SEI MAIS PRA ONDE IR >>>>>>>>>>>>>>>>>>>

    Continue reading...

Compartilhe esta Página