Um momento
Aula 04
Cursos / Como Criar uma API JSON em Golang - CRUD Simples
Logando o Erro Fatal e Extensão do Navegador Para Visualizar JSON

Nesta aula nós usamos o método Fatal do pacote log para imprimir uma mensagem de erro e terminar a execução do servidor, caso haja erro na sua iniciação.

Se o seu navegador não mostrar uma resposta de JSON em um formato fácil de visualizar (com indentação, quebra de linha, etc), há extensões que podes instalar.

Certos navegadores já possuem a auto-formatação por padrão. Isso não acontece nessa aula por que o Content-Type da resposta de HTTP não está configurado para o formato JSON. Aprendemos a resolver esse problema na próxima aula.

Summary

Resumo da Aula de Go: API de JSON

Olá pessoal, estamos de volta com mais uma aula de Go, continuando o desenvolvimento da nossa API de JSON.

Rodando Servidores na Mesma Porta

  1. Tentativa de Executar Múltiplos Servidores: O instrutor tentou rodar dois servidores Go na mesma porta, 1337, utilizando o comando go run mei.go em duas abas do terminal. O resultado foi que o segundo servidor não conseguiu iniciar e o programa fechou sem uma mensagem clara de erro.

  2. Tratamento de Erros: Para consertar isso, foi realizada uma modificação no código para logar erros usando o pacote log. O método http.ListenAndServe() irá retornar um erro ao tentar rodar o servidor em uma porta já em uso. O código agora inclui a lógica para verificar e logar esse erro.

  3. Resultado: Ao reexecutar o código, o erro agora é logado corretamente no terminal, informando que o endereço está em uso e o programa termina com um status de erro.

Visualização de Resposta JSON

  1. Teste de Endpoint: O instrutor acessou o endpoint localhost:1337/livros e observou que a resposta JSON estava correta, mas a visualização não era amigável devido à falta de indentação.

  2. Extensões do Navegador: Para melhorar a visualização do JSON, ele sugeriu a instalação de uma extensão chamada JSON-Vil para Firefox, que formata automaticamente o JSON com indentação e quebras de linha. Uma extensão similar está disponível no Chrome.

  3. Problema com o Content Type: Foi descoberto que a extensão não funcionava porque a resposta não tinha o cabeçalho Content-Type configurado como application/json. O cabeçalho atual estava definido como text/plain.

Próximos Passos

  • O instrutor planeja corrigir o cabeçalho de resposta na próxima aula para que o JSON seja processado corretamente pelas extensões de formatação.

Até mais!

Video Transcript

Olá pessoal, estamos de volta com mais uma aula de Go. Vamos continuar a nossa API de JSON. Então antes de continuar o nosso desenvolvimento, vamos ver algumas coisas aqui. Primeiro vamos tentar fazer o seguinte, vou aqui no terminal e vou tentar rodar dois servidores ao mesmo tempo na mesma porta. Vamos ver o que vai acontecer. Eu estou aqui na pasta, o projeto, vou dizer Go Run, mei em.go. Isso vai rodar o servidão na porta 1337, né? Vou abrir o nova aba e vou fazer Go Run, tá? Mei em.go, a mesma coisa. Note que o que aconteceu aqui, o servidor está rodando aqui na primeira aba, no lado esquerdo, mas a aba do lado direito, a gente tentou rodar e... O que é que aconteceu? Fechou o programa de uma vez, não teve nenhuma mensagem de erro, então vamos consertar isso. Voltando no nosso código aqui, lá embaixo aqui na função mei que chama configurar servidor, que chama o http.lessenandserve. Esse método aqui, na verdade, retorna um erro se algo der errado quando ele tentar criar, né? Rodar esse servidor de http. Então, nós vamos fazer o seguinte, se tiver erro, isso aqui vai ser, vai retornar algo que não é new, tá? Então, vamos fazer o seguinte, vamos logar o erro, tá? Eu vou usar o pacote log, tá? E o método vai ser fatal, tá? Pra logar que foi um erro fatal mesmo. E vou passar como argumento essa parte aqui, que na verdade vai retornar o erro se der erro, né? Então, lá em cima, vamos ver se a gente... vamos importar o log. Aqui, eu disunio a nova entrada, log. Tá? E vamos ver no que dá agora. Vamos no terminal. Nem precisa desligar o outro servidor, eu posso rodar aqui de novo, compilar e rodar. E você vê agora que mostra um erro, né? Ele fala que o endereço está em uso, né? E isso ele não pode rodar o servidor na porta 1337, porque já está rodando. E ele sai do programa com os status, né? Número 1, que é o de um erro, né? Tá bom? Então, eu servi o detalhe do log fatal, né? Pra logar os problemas, né? Em vários métodos, você pode dar uma olhada na documentação do pacote log pra ver os outros métodos. Então, vamos continuar. Vamos agora aqui de volta ao nosso navegador. Vou dar localhost 1337. Bem-vindo, vou dar o barra Livros aqui. Então, note aqui que essa resposta de JSON, né? O matos JSON. Tá correto, né? Mas pra nós que estão desenvolvendo, é meio difícil de visualizar se não tiver indentação, né? Se não tiver quebro de linhas e tal. Como eu já disse anteriormente, tem uma extensão pro seu navegador, que a extensão vai pegar e formatar esse JSON em uma maneira boa de visualizar. Valdicionar a indentação, quebra de linhas e assim por diante. Então, eu estou mostrando aqui o nome de uma dessas extensões que pode fazer isso. Número meu navegador aqui, que é o Firefox, tem essa extensão JSON-Vil, tá? E eu vou estalar aqui. Pronto, ok, entendi. Agora eu vou lá de volta e rodar a ver se a extensão funciona. Cadê? Deixa eu abrir a nova, tentar novamente. Barra Livros. Cadê a extensão que tá funcionando? Vamos ver aqui. Extensões. Descambio. Deveria funcionar, né? Automaticamente. Deixa eu abrir uma nova janela aqui. Isso não é a janela. Então, parece que essa extensão só funciona se tem o ponto JSON no arquivo, mas é muito estranho. Deveria funcionar automaticamente. Tem a extensão do Chrome que funciona automaticamente. Tem outros aqui também. Então, se você usar Chrome, tem também essa JSON-Vil. Tá, que é o mesmo nome. E ele automaticamente mostra isso. Talvez seja, isso está acontecendo, porque... Talvez seja porque minha resposta não tem o application JSON nos headers. Então, deixa eu visualizar o header aqui na rede. No Get Livros aqui, eu tô na aba rede, o network da DevTools do Firefox. Uma coisa no Chrome. Deixa eu ver aqui. Então, é isso. Header, response. Tá, então o problema aqui, que eu não tava formatando, é devido ao Content Type aqui, que tá setado como Textplane. Então, nós temos que mudar isso pra retornar o application barra JSON. Então, vamos fazer isso na próxima aula. Até mais.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: