Um momento
Aula 22
Cursos / Como Criar uma API JSON em Golang - CRUD Simples
Problema da Barra e Formato JSON na Resposta

Nesta aula consertamos o problema de uma rota não ir para o local certo se tiver ou não uma barra no fim do caminho.

Também modificamos a função listaLivros para configurar o header de Content-Type com valor application/json.

Summary

Resumo da Aula: Resolvendo Problemas no Servidor

Nesta aula, foram abordados dois problemas relacionados à configuração do servidor e à resposta JSON.

Primeiro Problema: Barra no Endpoint

  • Contexto: A questão estava relacionada ao uso do "strict slash" nas rotas.
  • Solução: Ao criar o roteador, foi configurado para redirecionar requisições que incluíssem uma barra extra (/livros/) para a rota correta (/livros).
  • Resultado: Verificando no terminal, confirmou-se que a requisição estava sendo redirecionada corretamente.

Segundo Problema: Resposta como Texto em vez de JSON

  • Contexto: A resposta estava sendo enviada como texto simples em vez de JSON.
  • Solução: Foi necessário adicionar o header Content-Type: application/json na resposta.
    • Utilizou-se a função w.Header().Add(...) para configurar o header corretamente.
  • Resultado: A resposta agora retorna o header correto e a resposta aparece formatada como JSON no Postman.

Considerações Finais

  • O instrutor mencionou que a configuração do header seria necessária em cada função e que haveria maneiras de melhorar isso, mencionando o uso de middleware que será abordado em aulas futuras.
  • A aula concluiu a resolução dos problemas e preparou o terreno para o próximo conteúdo.

Até a próxima aula!

Video Transcript

Então vamos resolver o primeiro problema da barra. Vamos fazer o seguinte, na hora que a gente criar o roteado a gente vai chamar uma função e essa função vai fazer um negócio pra ele poder lidar com aquele problema da barra. Então vamos ir lá de volta para configurar o servidor. O servidor, na hora que você criar new router aqui, você fala ponto strict, flash, chama essa função com argumento true, tá? Eu só vou lá aqui e vamos ver no que dá. Eu não posso mesmo. Ai, o servidor, eu tinha matado. Agora com a barra funciona, sem a barra também funciona. Eu quero te mostrar o que está acontecendo. Vou de volta no editor de test lá na rota, lá na função listar livros. Vou dar um log, listar livros, vou imprimir no console para você ver. Dentro de listar livros, vou dar fmt, println, vou dar r, ponto, request, r, vamos ver aqui. Vou dar o postman de novo e vou observar o terminal. Olha aqui a gente está aqui, chama o get. O servidor está rodando na porta. Você note que barra livros, cadê a barra? A gente chamou com barra, mas ele foi lá e disse que a requisição foi no barra livros. Diz porque o que acontece é o seguinte, com a introdução do strict slash, cadê? O que acontece é o seguinte, se você bater lá na rota, barra livros, barra, ele vai rediracionar para o barra livros. Você vai barra livros, barra ele rediraciona para o barra livros e porque o barra livros, como o barra livros está definido, vai funcionar. Então esse é o primeiro problema, concertamos. Agora, o segundo problema é do application.json. A nossa resposta está vindo como texto, não está vindo como json. Então a gente precisa setar aquele header. Se lembra que a gente tinha feito isso muitas vezes? Sempre tinha que falar o header aqui, content type, application.json. Então eu quero fazer isso também. Eu vou tirar o meu log aqui e vou fazer o seguinte. Vou dizer na minha w.header, como é que a gente tinha antes? É, chamamos a função. Agora eu nem vou usar o set, vou te mostrar outro aqui, o add para poder senão header invade set. Content type, vai ser application.json. Está certo? Então com isso ele vai consertar esse problema. Vamos ver lá. Note que o header na minha resposta é plain texto plano. Vou dar o get de novo. Agora veio content type, application.json. E o corpo aqui, pretty, eu vou estar no pretty, está mais formatado aqui no postman. Esse aqui é o que vem, mas o postman faz a formatação para mostrar para visualizar melhor. Para poder consertar isso, eu tive que adicionar esse header aqui content type com valor, application.json, um listado de livros. Então a gente teria que adicionar esse aqui em cada função. Mas há uma maneira de a gente melhorar isso, refatorizar isso, mas eu vou te dizer isso depois. É através do middleware, mas espera aí até lá. Então com isso a gente fez o listado de livros, funcionando direitinho, e problemas. Então por 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: