Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Chamada diferente ao metodo TrataErros()

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 ?

1 resposta
solução!

Na aula 6, o professor ""segue"" a minha dica =D