Neste repositorio, contém os arquivos que desenvolvi estudando a linguagem Go para fazer uma API que retorna dados em JSON.
Criando um servidor de HTTP em Golang que serve dados em formato JSON. Essa API REST em Go, com operações de cadastrar, listar, modificar, e deletar recursos (o chamado CRUD). Estou começando do zero, aprendendendo os meus primeiros passos de desenvolvimento Web com a linguagem Golang.
Estou estudando para contruir essa API atravez de uma playlist do canal NBK Mundo Tech onde estou dando meus primeiros passos nesta linguagem que é usado por muita gente.
Na primeira aula, preparei a base da aplicação. Usando o http atravez do import "net/http". Também aprendi a imprimir na tela usando a rota "/".
Vamos fazer a refatorização do nosso código para uma organização melhor, fazendo com que cada funcionalidade se torne uma função.
Usando fmt.Println temos a resposta via terminal de que o servidor esta funcionando corretamente.
fmt.Println("Servidor rodando na porta 1317")
Fiz a refatoração do codigo, criei mais 3 funções que cada uma tem suas responsabilidades.
// Função que funciona como um Controller da aplicação
func rotaPrincipal(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Olá mundo!")
}
// Função de administração das rotas
func configurarRotas() {
http.HandleFunc("/", rotaPrincipal)
}
// Essa função recebe todas as configurações do servidor
func configurarServidor() {
configurarRotas()
// Escrevendo no terminal
fmt.Println("Servidor rodando na porta 1317")
// Adicionando a porta do servidor
http.ListenAndServe(":1337", nil)
}
E a função main ficou bem menor com as alterações, assim, facilitando o entendimento do códico.
func main() {
configurarServidor()
}
Na terceira aula, aprendi a fazer um struct onde foi criado a estrutura Livro, com os atributos de (id, titulo, autor).
type Livro struct {
Id int
Titulo string
Autor string
}
Para usar o json, precisamos importar de "encoding/json". Logo em seguida temos que criar uma lista para que possamos ter dados para manipular. Começamos criando a nossa lista
// Criando uma lista de livros
var Livros []Livro = []Livro {
Livro {
Id: 1,
Titulo: "O Guarani",
Autor: "José de Alencar",
},
Livro {
Id: 2,
Titulo: "Ponto de inflexão",
Autor: "Flávio Augusto",
},
}
Criei mais uma função para listar os livros, e chamei essa função dentro da função configurarRotas()
// função que recebe uma Requisição e uma Resposta
func listarLivros(w http.ResponseWriter, r *http.Request) {
encoder := json.NewEncoder(w)
encoder.Encode(Livros)
}
Para que essa função esteja funcionando, chamo ela nas funções que adminstra as rotas
func configurarRotas() {
http.HandleFunc("/", rotaPrincipal)
// Criando a rota para listar os livros
http.HandleFunc("/livros", listarLivros)
}
Acessando a url http://localhost:1337/livros, iremos ter o seguinte resultado no navegador.
[
{
"Id":1,
"Titulo": "O Guarani",
"Autor": "José de Alencar"
},
{
"Id":2,
"Titulo": "Ponto de inflexão",
"Autor": "Flávio Augusto"
}
]