Um momento
Aula 03
Cursos / Como Criar uma API JSON em Golang - CRUD Simples
Como Criar uma Rota para Listar Livros - Aprenda Golang CRUD

Nesta aula nós aprendemos a definir uma rota para obter todos os livros da coleção.

Nós definimos uma estrutura para representar um livro.

Como ainda não temos um banco de dados, nós criamos uma fatia do tipo Livro e definimos dados de amostra.

Aprendemos a criar, através do pacote json, um codificador de JSON que grava os dados para a resposta de HTTP. Há um método para codificar uma estrutura de Golang para convertê-la ao formato JSON.

Summary

Resumo do Transcript

Olá pessoal! Neste vídeo, vamos criar uma estrutura (struct) para representar um livro e desenvolver uma rota para listar livros em um servidor.

Criando a Estrutura do Livro

  1. Definição do struct:

    • Criamos um novo tipo chamado livro com os campos:
      • ID: tipo definido como desejado (e.g., int, string).
      • Título: tipo string com post trim.
      • Autor: tipo string com trim.
  2. Lista de Livros:

    • Definimos uma variável chamada livros que armazenará nossos livros em memória, em vez de usar um banco de dados.
    • Adicionamos exemplos de livros:
      • ID 1: "O Livro" - Autor: "Zadia Alenca"
      • ID 2: "Outro Livro" - Autor: "Viriato Correia"
      • ID 3: "Dom Casmurro" - Autor: "Machado de Assis"

Criando a Rota para Listar Livros

  1. Configuração da Rota:

    • Criamos uma nova rota (/livros) que irá listar todos os livros.
    • Definimos uma função chamada listarLivros, que usa dois argumentos: response writer e request.
  2. Codificação para JSON:

    • Importamos o pacote encoding/json.
    • Usamos um encoder para transformar a lista de livros em uma string JSON que será enviada ao cliente.
    • O encoder é criado com json.NewEncoder(w) e usamos encoder.Encode(livros) para enviar os livros formatados em JSON como resposta.
  3. Testando a Rota:

    • Após compilar e iniciar o servidor, acessamos localhost/livros.
    • A resposta é exibida em formato JSON.

Conclusão

  • Resumimos que:
    • Criamos um struct chamado livro com ID, título e autor.
    • Implementamos uma lista de livros em memória.
    • Adicionamos uma rota para listar os livros e enviá-los como JSON ao cliente.

Até a próxima aula!

Video Transcript

Olá pessoal, estamos de volta, vamos criar um struct para poder representar o livro. Então vamos aqui em cima, depois de import, eu vou criar um novo tipo, type, livro, que vai ser um struct. Abre chaves. Então vamos ter o ID. Vamos ter o título do livro e o autor. Então o ID você pode escolher qualquer tipo, um point, o título, o post trim e o autor trim, tá? Então nós temos struct para reversar o livro. Agora vamos aqui criar uma rota. Na verdade vamos criar uma lista de livros e exemplos, como esse curso a gente não vai começar com banco de dados, vamos supor que os bancos de dados, os records estão dentro de uma variável chamada livros, tá? Então vamos criar essa variável aqui. Vamos chamar var, livros. Ora o livro vai ser o tipo, pedaço de livro, tá? E eu vou fazer o patio, o pedaço de livro aqui. E vamos criar exemplos de livro, fazer uns três, tá? Então fazer um livro aqui e dê um título. Vamos ver aqui o var ali. Vê outro aqui, autor. Zadia, alenca. Só para ver se não deu erro aqui, eu vou dar o compilador. Deu erro na linha 18, porque eu escrevi a vírgula. Sem erro. Tá, então vamos escrever os outros, só fazer outros livros da mesma maneira, eu vou só duplicar essa parte aqui. Id2, outro livro, Azusa, Autor, Viriato, Correia. Você pode pôr o livro que você quiser aí, só pôr uns exemplos. E eu vou criar mais um, id3, Dom, Casmurro, Machado de Assis. Então vamos imaginar que esses livros estão de bancos de idade em um local e a gente pode só se referir a essa variável de livros aqui para poder obter cada livro, essa lista de livros, como a gente não tem bancos de idade ainda, vamos supor que está aqui, tá? Nossos dados aqui falsos. Temos a struct para representar cada livro. Tá bom? Agora com isso vamos aqui embaixo, vamos criar aqui uma nova rota, no função configurar rotas, lembra? É chamado pelos revidores, vou adicionar HTTP, render o funk e para essa rota vai ser no barra Livros, para listar todos os livros, essa rota vai ser a rota para a lista de todos os livros e vamos criar uma função para pegar todos os livros, então vou chamar a lista Livros. Vamos fazer a função aqui em cima, funk listar livros, como sempre, dois argumentos, essa é uma função de render, de dar, primeiro vai ser o wp, response writer, segundo vai ser o r, estrela, hp, request. Então vamos testar aqui o que fazer, então nós vamos listar todos os livros basicamente para fazer o que? Vamos pegar essa variável Livros e mandar lá para o cliente, vamos fazer isso aqui, a gente pode se referir ao Livros, bem legal, mas como é que me manda isso? Então a gente vai ter que transformar essa lista de structs em um string em formato JSON. A gente vai precisar usar o pacote encoding barra JSON, então vamos lá em cima no import, vou adicionar encoding barra JSON. Agora aqui no listar livros a gente vai fazer o seguinte, a gente primeiro tem que fazer o encoder, antes da gente continuar deixa eu te mostrar como pegar referências de todas essas bibliotecas, eu vou aqui no navegador, vamos lá no golang, no site tá, golang-vr aqui, então na documentação você vai aqui nos pacotes cadê? Linguagem está alando, parece que não tem, começando, parece que o site português não tem os pacotes, deixa eu ver o site inglês, golang.org packages, não sei porque o site português não tem pacotes lá, então golang.org, pacotes packages, tá aqui os pacotes vamos ver o encoder em port de JSON, tá aqui o encoder barra JSON, então isso mostra as moções disponíveis, então você vê que, fã que fã que fã que não sei o que, a gente vai precisar do encoder tá, para codificar o nosso objeto, o nosso struct em uma string format JSON, então vamos clicar aqui, então encoder não sei o que, então tem as funções, métodos, new encoder é isso que a gente vai usar, new encoder retorna o novo codificador que pode escrever pro W, é isso que a gente quer, então a gente vai chamar o pacotes JSON, ponto new encoder, passa com um argumento W, e vai receber esse ponteiro pro encoder, e a gente pode usar isso para poder chamar lá, mandar resposta, chamar essa função aqui encode, senão a estrutura encoder tem como método encode, porque tem a hora da que isso aqui, e esse encode vai mandar escreve JSON pro stream, seguido de um caractere nova ali, não sei o que, então vamos lá, você vai falar JSON, ponto new encoder, passa o W com o argumento, legal, isso vai retornar uma variável que vai ser o encoder, vou chamar encoder dois pontos igual pra variável, legal, agora com encoder vou fazer o seguinte, encoder, ponto encode, o que a gente quer encoder, os livros, vamos ver o que dá, voltando aqui para terminar o servidor, control C, compila de novo, vai lá no navegador, localhost, agora vou dizer barra livros, e essa é a resposta, tá, uma forma de JSON, a stream, sem nenhum espaço em branco, por isso que é meio difícil de ler, mas se o navegador tiver uma extensão para melhorar a exibição do JSON, normalmente JSON view, Chrome, essas coisas, você pode usar para visualizar melhor, senão acho que tem o ID, título, autor, tudo daquilo que a gente tinha escrito lá na nossa lista, fatias de estrutura, tá, em alguns exemplos online você também pode ver que ele faz tudo isso aqui em uma mesma linha, tanto faz, mas escreve e separar para você entender o que está acontecendo, então você pode também fazer isso aqui, sem precisar criar variável, opa, eu prefiro essa maneira para visualizar melhor como a gente está começando, que acontece, né, para finalizar vamos revisar o que a gente fez, então nós criamos um struct chamado livro, para poder ter o ID, título e autor, para responder a tal esse livro, como a gente não tem banco de dados, vamos fazer uma espécie de banco de dados na memória, na hora de rodar o programa runtime, criamos essa lista, né, fatias, fati livro, livro, livro literal aqui, struct literal, uns exemplos aqui, e lá na configurar rotas adicionamos uma nova, nova render, né, nova rota para o barra livros, e vai bater lá no lista de livros que a gente faz o seguinte para poder enviar resposta ao servidor, primeiro nós criamos um encoder codificador de JSON, JSON vem do pacote encoder encoder em barra de JSON, é só chamar o JSON a ponto new encoder com o W como argumento, isso vai gerar um encoder, esse encoder nós temos o método encoder, a gente passa aquilo que a gente quer, que seja codificado no formato JSON, e ele vai automaticamente enviar como resposta para o cliente, é um preço aulas só, e até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: