Bom dia instrutores... O professor ensina que quandoo chamarmos qualquer metodo de ApiService.js, ao recebermos a resposta/retorno deste(s) metodo(s), devemos realizar uma outra chamada a ApiService [apartir de app.js] validando a resposta da requisição, desta vez, chamando o metodo TrataErros(requisicao):
>>>>>>> arquivo App.js
escutadorDeSubmit = autor => {
ApiService.CriaAutor(JSON.stringify(autor))
.then(res => ApiService.TrataErros(res))
A minha dúvida, é se ao invés de fazer assim... Eu posso utilizar esta outra forma p/ chamar o metodo TrataErros():
const ApiService = {
ListaAutores: () =>{
return fetch('http://localhost:8000/api/autor')
.then(res => ApiService.TrataErros(res));
},
CriaAutor: autor =>{
return fetch('http://localhost:8000/api/autor', {method: 'POST', headers: {'content-type': 'application/json'}, body: autor})
.then(res => ApiService.TrataErros(res));
},
ListaNomes: () =>{
return fetch('http://localhost:8000/api/autor/nome')
.then(res => ApiService.TrataErros(res));
},
ListaLivros: () =>{
return fetch('http://localhost:8000/api/autor/livro')
.then(res => ApiService.TrataErros(res));
},
RemoveAutor: id =>{
return fetch(`http://localhost:8000/api/autor/${id}`, {method: 'DELETE', Headers: {'content-type': 'application/json'}})
.then(res => ApiService.TrataErros(res));
},
TrataErros: respostaDaRequisicao => {
if(!respostaDaRequisicao.ok){
throw new Error(respostaDaRequisicao.responseText);
}
return respostaDaRequisicao.json();
}
}
Assim, em app.js, eu diminuiria uma chamada e melhor ainda, já receberia a resposta da requisição na certeza de que a mesma já foi verificada e se caso hajam erros na mesma, recebo-a em catch:
escutadorDeSubmit = novoAutor => {
ApiService.CriaAutor(JSON.stringify(novoAutor))
.then(resposta => {
if(resposta.message === "success"){//uma validacao extra
this.setState({autores : [...this.state.autores, resposta.data]});//resposta.data contem meu objeto autor
PopUp.exibeMensagem('success', "Autor adicionado com sucesso");
}
})
.catch(erro => {
console.log(erro);
PopUp.exibeMensagem('error', 'Erro na inclusão do novo dado no sistema!')
});
}
É isso.. Fazendo assim o código, eu quebro algum paradigma/padrão ou outro ?