Tratamento de erros da API
This commit is contained in:
parent
ced73e840b
commit
282b2ea1c9
0
src/assets/utils/apiHandler.jsx
Normal file
0
src/assets/utils/apiHandler.jsx
Normal file
@ -3,12 +3,14 @@ import React, { useState } from 'react';
|
|||||||
// Importamos os dois novos componentes que criamos
|
// Importamos os dois novos componentes que criamos
|
||||||
import DoctorList from '../components/doctors/DoctorList';
|
import DoctorList from '../components/doctors/DoctorList';
|
||||||
import DoctorForm from '../components/doctors/DoctorForm';
|
import DoctorForm from '../components/doctors/DoctorForm';
|
||||||
|
import handleApiResponse from '../assets/utils/apiHandler';
|
||||||
|
|
||||||
function DoctorCadastroManager( ) {
|
function DoctorCadastroManager( ) {
|
||||||
// Este estado vai controlar qual "tela" mostrar: 'list' (lista) ou 'form' (formulário)
|
// Este estado vai controlar qual "tela" mostrar: 'list' (lista) ou 'form' (formulário)
|
||||||
const [view, setView] = useState('form');
|
const [view, setView] = useState('form');
|
||||||
|
const [errorMessage, setErrorMessage] = useState("");
|
||||||
|
const [fieldErrors, setFieldErrors] = useState({});
|
||||||
|
|
||||||
|
|
||||||
var myHeaders = new Headers();
|
var myHeaders = new Headers();
|
||||||
myHeaders.append("Content-Type", "application/json");
|
myHeaders.append("Content-Type", "application/json");
|
||||||
|
|
||||||
@ -29,8 +31,14 @@ function DoctorCadastroManager( ) {
|
|||||||
|
|
||||||
fetch("https://mock.apidog.com/m1/1053378-0-default/pacientes", requestOptions)
|
fetch("https://mock.apidog.com/m1/1053378-0-default/pacientes", requestOptions)
|
||||||
.then(response => response.text())
|
.then(response => response.text())
|
||||||
|
.then(handleApiResponse)
|
||||||
.then(result => console.log(result))
|
.then(result => console.log(result))
|
||||||
.catch(error => console.log('error', error));
|
// .catch(error => console.log('error', error));
|
||||||
|
.catch((error) => {
|
||||||
|
console.log('error', error)
|
||||||
|
setErrorMessage(error.message || "Erro desconhecido");
|
||||||
|
setFieldErrors(error.details || {});
|
||||||
|
});
|
||||||
|
|
||||||
alert(`Médico "${patientData.nome}" salvo com sucesso!`); //altere isso para integração com backend
|
alert(`Médico "${patientData.nome}" salvo com sucesso!`); //altere isso para integração com backend
|
||||||
// Após salvar, voltamos para a tela de lista
|
// Após salvar, voltamos para a tela de lista
|
||||||
@ -39,11 +47,31 @@ function DoctorCadastroManager( ) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
{/* Mensagens de erro específicas */}
|
||||||
|
{Object.keys(fieldErrors).length > 0 && (
|
||||||
|
<div style={{ color: "darkred", marginBottom: "1rem" }}>
|
||||||
|
{Object.entries(fieldErrors).map(([campo, mensagens]) => (
|
||||||
|
<div key={campo}>
|
||||||
|
<strong>{campo}:</strong>
|
||||||
|
<ul>
|
||||||
|
{mensagens.map((msg, idx) => (
|
||||||
|
<li key={idx}>{msg}</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
<div className="page-heading">
|
<div className="page-heading">
|
||||||
<h3>Cadastro de Médicos</h3>
|
<h3>Cadastro de Médicos</h3>
|
||||||
</div>
|
</div>
|
||||||
<div className="page-content">
|
<div className="page-content">
|
||||||
<section className="row">
|
<section className="row">
|
||||||
|
{errorMessage && (
|
||||||
|
<div style={{ color: "red", marginBottom: "1rem" }}>
|
||||||
|
{errorMessage}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
<div className="col-12">
|
<div className="col-12">
|
||||||
{/* Aqui está a lógica principal: */}
|
{/* Aqui está a lógica principal: */}
|
||||||
{/* Se a view for 'list', mostramos a lista com o botão. */}
|
{/* Se a view for 'list', mostramos a lista com o botão. */}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user