Aula 35
Usando o Query, mas Ops Tem Problema de nil (Debugando Golang / MySQL)
Nesta aula lidamos com o erro emitido pela chamada de db.Query
. Logamos a requisição e ajustamos o código de estado da resposta para http.StatusInternalServerError
, que é a constante para o valor 500.
No meio do caminho nos deparamos com um problema de referência à variável db
.
Summary
Resumo do Transcrição
Na transcrição, é discutido o uso de um método chamado write header
do ResponsWriter
para enviar respostas HTTP, especificamente lidando com o status de erro 500 (Internal Server Error). O autor sugere consultar a documentação de pacotes HTTP para encontrar as constantes de status.
O passo a passo inclui:
- Retorno em caso de erro: Retornar imediatamente quando um erro é detectado, sem continuar o processamento.
- Log de Erros: A sugestão de registrar erros internamente sem causar um "fatal crash" no servidor. O uso de comandos como
print
ouprintln
é mencionado. - Teste do Código: O autor realiza testes na aplicação, utilizando o Postman para verificar a resposta da API. Ao encontrar um erro do tipo "panic", aprofundam-se nas linhas do código e se verifica que o problema está relacionado a um banco de dados (
DB
) indefinido. - Debugging: A dificuldade com o tipo de dados do
DB
é identificada como uma possível fonte de erro e a intenção é resolver isso na próxima aula.
O tom geral é informativo, guiando ouvintes sobre práticas de programação em Go, tratamento de erros, e depuração de código.
Video Transcript
Para a gente poder mandar a resposta, a gente pode fazer o W, o nome do W é o ResponsWriter,
escritor de resposta.
Tem esse método chamado write header e pode passar o código.
Tem essa constância do modo HTTP, no caso do internal server error 500 pode ser status
internal server error.
Se você não lembrar disso, vai na documentação do HTTP packages.
HTTP, cadê?
HTTP, no índice, qual era o status, no internal server error está aqui.
Então ele mostra aqui que tem a sua constância, as constantes e tem várias e esse aqui.
O interval server error 500.
Voltando a editor de texto.
Vamos dar o return aqui para poder retornar sem continuar porque não tem sentido continuar
se deu esse problema aqui.
Talvez você queira também logar para o seu uso interno para poder saber que deu problema
aqui.
Não seja fatal porque a gente não quer matar o servidor.
Vamos ver se tem outro tipo de log aqui na documentação.
A documentação vai no packages, log, você procura.
Log, está aqui.
Tem fatal, não quero fatal.
Tem o print.
Panic, Mônico.
Até o tipo log, se você tiver o seu próprio logador, qualquer maneira vamos ver se print.
Print, printf, println, adicionando a nova linha, vou usar println mesmo.
Vamos ver aqui.
Log, println.
With the error select, ponto error.
Se quiser adicionar mais um detalhe, lista a livros.
Lista a livros.
Vou mudar com o cartenas, mas a descrição do error.
Só para dizer que o error correu a listar a livros.
Como a gente pode testar isso?
Vamos ver aqui.
Talvez se eu matar o servidor, mas vamos ver se funciona mais de tudo.
Go run, registro declarar, não usar.
Está aqui, fmt, println, registro.
Vamos lá no postman, get value.
Deu uns problemazinhos aqui.
The way of runtime, a catheter panic serving.
E endereço de memória em valor, new pointer de reference.
Onde aqui foi?
The main.go, linha 47, no stack trace aqui.
Deve um problema aqui, deve ser provavelmente devido ao DB que talvez esteja indefinido.
Estou da fmt, println, DB aqui, na linha 47.
Terminamos de registrar de novo.
Contro C, o run main, outro go, lá no postman, faz esse de novo.
Vou ver o log aqui onde estava.
O DB está new, então é o problema que a gente vai resolver.
O DB está new, ou não.
E agora?
E agora, né?
A gente tinha definido, não configurava anécdotes como antes aqui, mas parece que está indefinido.
Se eu tivesse dado o fmt aqui, println dentro da função, configurava anécdotes.
Vamos ver o que dá.
Vamos fazer o DB bugando aqui, prática.
Nessmatch type, regulamos isso.
Ok, deixa eu tirar isso.
E...
Deus me missmatch type, porque não sabe combinar as trinques com o ponteiro para DB para dar o println.
Aqui.
Postman.
Vamos ver o que deu aqui.
Então, aqui, direto desse negócio todo aqui.
Mas quando deu no outro local, ele está new.
Então, vamos ver isso na próxima aula, tá? Até mais.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: