{"id":21872705,"url":"https://github.com/isaqueveras/crud-api-json-golang","last_synced_at":"2026-05-11T16:09:21.606Z","repository":{"id":110555681,"uuid":"359556495","full_name":"isaqueveras/crud-api-json-golang","owner":"isaqueveras","description":"Creating an API with json in the golang language. A simple CRUD","archived":false,"fork":false,"pushed_at":"2021-04-19T19:44:07.000Z","size":3,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-26T17:14:57.776Z","etag":null,"topics":["api","backend","golang","json"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/isaqueveras.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-19T18:15:51.000Z","updated_at":"2021-05-24T16:38:43.000Z","dependencies_parsed_at":"2023-03-26T02:18:21.636Z","dependency_job_id":null,"html_url":"https://github.com/isaqueveras/crud-api-json-golang","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaqueveras%2Fcrud-api-json-golang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaqueveras%2Fcrud-api-json-golang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaqueveras%2Fcrud-api-json-golang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaqueveras%2Fcrud-api-json-golang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/isaqueveras","download_url":"https://codeload.github.com/isaqueveras/crud-api-json-golang/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244880550,"owners_count":20525511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","backend","golang","json"],"created_at":"2024-11-28T06:22:25.641Z","updated_at":"2026-05-11T16:09:21.573Z","avatar_url":"https://github.com/isaqueveras.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Criando uma simples API usando a linguagem Golang\nNeste repositorio, contém os arquivos que desenvolvi estudando a linguagem Go para fazer uma API que retorna dados em JSON.\n\nCriando 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.\n\n### Por onde estou estudando?\nEstou 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.\n\n#### 1° Aula\nNa 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 _\"/\"_.\n\n### 2° Aula\nVamos fazer a refatorização do nosso código para uma organização melhor, fazendo com que cada funcionalidade se torne uma função.\n\nUsando _fmt.Println_ temos a resposta via terminal de que o servidor esta funcionando corretamente.\n```go\nfmt.Println(\"Servidor rodando na porta 1317\")\n```\nFiz a refatoração do codigo, criei mais 3 funções que cada uma tem suas responsabilidades.\n\n```go\n// Função que funciona como um Controller da aplicação \nfunc rotaPrincipal(w http.ResponseWriter, r *http.Request) {\n  fmt.Fprintf(w, \"Olá mundo!\")\n}\n\n// Função de administração das rotas\nfunc configurarRotas() {\n  http.HandleFunc(\"/\", rotaPrincipal)\n}\n\n// Essa função recebe todas as configurações do servidor\nfunc configurarServidor() {\n  configurarRotas()\n\n  // Escrevendo no terminal\n  fmt.Println(\"Servidor rodando na porta 1317\")\n  \n  // Adicionando a porta do servidor\n  http.ListenAndServe(\":1337\", nil) \n}\n```\nE a função _main_ ficou bem menor com as alterações, assim, facilitando o entendimento do códico.\n\n```go\nfunc main() {\n  configurarServidor()\n}\n```\n\n#### 3° Aula\nNa terceira aula, aprendi a fazer um _struct_ onde foi criado a estrutura _Livro_, com os atributos de (id, titulo, autor).\n\n```go\ntype Livro struct {\n  Id int\n  Titulo string\n  Autor string\n}\n```\n\nPara usar o json, precisamos importar de _\"encoding/json\"_. \nLogo em seguida temos que criar uma lista para que possamos ter dados para manipular. Começamos criando a nossa lista\n\n```go\n// Criando uma lista de livros\nvar Livros []Livro = []Livro {\n  Livro {\n    Id: 1,\n    Titulo: \"O Guarani\",\n    Autor: \"José de Alencar\",\n  },\n  Livro {\n    Id: 2,\n    Titulo: \"Ponto de inflexão\",\n    Autor: \"Flávio Augusto\",\n  },\n}\n```\n\nCriei mais uma função para listar os livros, e chamei essa função dentro da função _configurarRotas()_\n\n```go\n// função que recebe uma Requisição e uma Resposta\nfunc listarLivros(w http.ResponseWriter, r *http.Request) {\n  encoder := json.NewEncoder(w)\n  encoder.Encode(Livros)\t\n}\n```\n\nPara que essa função esteja funcionando, chamo ela nas funções que adminstra as rotas\n\n```go\nfunc configurarRotas() {\n  http.HandleFunc(\"/\", rotaPrincipal)\n\n  // Criando a rota para listar os livros\n  http.HandleFunc(\"/livros\", listarLivros)\n}\n```\n\nAcessando a url http://localhost:1337/livros, iremos ter o seguinte resultado no navegador.\n\n```json\n[\n  {\n    \"Id\":1,\n    \"Titulo\": \"O Guarani\",\n    \"Autor\": \"José de Alencar\"\n  },\n  {\n    \"Id\":2,\n    \"Titulo\": \"Ponto de inflexão\",\n    \"Autor\": \"Flávio Augusto\"\n  }\n]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisaqueveras%2Fcrud-api-json-golang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisaqueveras%2Fcrud-api-json-golang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisaqueveras%2Fcrud-api-json-golang/lists"}