Um momento
Aula 38
Cursos / Como Criar uma API JSON em Golang - CRUD Simples
Como Testar os Erros Que Podem Acontecer - Aula de API Golang e MySQL

Nesta aula testamos os erros que podem acontecer na função de listarLivros.

Pode haver um erro na consulta ao banco de dados com o db.Query.

Também pode haver um erro na hora de atribuir os valores de um registro à uma struct de Golang com o Rows.Scan.

Summary

Resumo da Aula de GoLun

Data: [Data da aula não mencionada]
Tema: Testando erros na função listar-libros da API JotaSunkredi

Principais Tópicos

  1. Introdução

    • Continuação da aula sobre a API JotaSunkredi.
  2. Teste de Erros na Função listar-libros

    • O foco da aula é testar os erros que podem ocorrer na função listar-libros.
  3. Primeiro Erro: Erro de Sintaxe em Consulta SQL

    • Um exemplo de erro de sintaxe: SELECT 2.
    • Espera-se que a aplicação retorne 500 Internal Server Error e forneça mensagem de erro.
    • O log do erro indica a falha na consulta SQL.
  4. Segundo Erro: Problemas na Função Scan

    • Problemas podem surgir ao escanear registros se um argumento estiver ausente.
    • Exemplo: não fornecer o terceiro argumento na consulta que tem três colunas resultará em erro.
    • A aplicação irá retornar uma lista vazia (200 OK) para o cliente, mas registrará o erro no log.
  5. Logs de Erros

    • O terminal mostrará mensagens indicando problemas na execução da função quando os erros ocorrem.
  6. Correção de Erros

    • O instrutor corrige o erro de scan, garantindo que todos os argumentos necessários sejam fornecidos.
    • O erro de fechamento de registros (close) é apresentado como um exercício para o aluno.

Conclusão

  • A aula trouxe a prática de testar e tratar erros comuns na API, incentivando o entendimento sobre o fluxo de erro e a importância de logs.
  • A próxima aula será agendada e o instrutor se despede.

Fim da Aula

Video Transcript

Olá pessoal, estamos de volta com mais uma aula de GoLun. A API JotaSunkredi simples vamos continuar. Nesta aula vamos testar os erros que podem acontecer na função listar-libros. Então vamos lá, voltando aqui ao código fonte no meu editor de testa. Função listar-libros. Primeiro erro que pode acontecer quando ele fizer a consulta aqui pode ter esse erro. Como testar isso? Uma maneira de testar isso é dessa maneira aqui. Talvez você tenha escrito uma consulta com erro de sintaxe. Por exemplo, eu digito Select 2, isso não é válido. Então ele vai dar erro aqui. A gente espera que ele fale listar-libros, né? Deixa eu até dizer erro select para ser mais específico. A descrição do erro vai aparecer na tela. Note que nesse caso o usuário, o cliente vai receber uma resposta com o código 500 internal server error, tá? E não vai receber uma lista. Vamos testar, eu vou salvar o código. De volta ao terminal, go run main.go e vamos lá no postman, no meu cliente de REST aqui, no bar livros get, vou mandar. Note que o status 500 internal server error e nada na resposta aqui no conteúdo. Vamos no terminal. Note aqui que deu log listar-libros, erro select e a mensagem do erro select ponto error que ela funciona, retorna a string aqui com o nome, com a descrição do erro. Olha aqui, erro 1.064. Você tem um erro no de sintaxe no seu SQL, né? Check o manual, se eu quero, se eu quero. Então ele diz o que tem um erro aqui na consulta que a gente tem. Então testamos o erro, funciona corretamente. Vou ditar control C para interroper o servidor. Voltando no editor de texto, tá certo? Testamos essa parte aqui do erro, tudo certo. Vamos para o próximo erro. O próximo erro que pode acontecer é aqui na parte do scan. Talvez tenha problema quando ele escanear os errors lá do registro. Uma maneira de poder produzir esse erro é produzir esse, por exemplo, note que o nosso select tem três colunas e eu esqueço de botar aqui nos argumentos a terceira, o terceiro argumento para o título. Ele vai dar erro. A gente vai ver que o console imprima, listar livros, erro de scan e a descrição do erro. E o que vai acontecer aqui é ele vai dar o continue na repetição for. Nesse caso, ele vai pular, né? Esse livro, porque deu problema a escanear. Como todos os livros vai ter problema, porque eu pus para todos os livros aqui, ele vai pular todos os elementos do registro e no final vai retornar, se lembra a fatia de livros, né? No caso de Jason vai ser uma array sem nenhum elemento no final. Note que nesse caso não há resposta de 500. Ele vai mandar uma resposta para o cliente, mas o problema é só a gente que vai ver internamente através do log. O cliente não vai saber que teve erro. Então vamos testar isso. Eu já fiz a besteira aqui, tirei o terceiro argumento, vamos no terminal, rodar o servidor, volto lá no seu cliente de rest e faça o pedido e ligar o livro. Note que recebemos como resposta uma lista vazia com 200 ok. Então do ponto de vista do cliente não houve nenhum problema. A gente pensa que não há nenhum livro, mas olhando lá no terminal, note que teve quatro logs. Quatro logs porque tem quatro registros? Se eu te mostrar aqui o meu MySQL tem quatro registros, por isso que deu quatro logs. Então para cada registro, como eu omitir o terceiro argumento lá para o scan, ele dá erro. Lista livro, erro de scan, esperava que você tenha, esperava três argumentos de destino no scan, não dois. Então esse é o erro que aconteceu, então está funcionando direitinho do jeito que a gente programou. Voltando o editor de texto aqui, eu vou reverter esse erro para corrigir, agora vai dar tudo certo com três argumentos que corresponde lá ao select três colunas. Pronto, então esse erro aqui está testado e funciona corretamente. Vamos ver se tem mais um erro aqui. Tem esse erro de registro close, como será que a gente pode testar esse erro? Bem, eu vou deixar como exercício para você pensar se quiser fazer para testar esse erro. Então para essa aula é só e até a próxima. Tchau.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: