Skip to content

onlytesting-user/api-golab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API Golab Tutoriais

Uma API RESTful em Go simples, que fornece endpoints básicos para criar, atualizar, deletar e listar produtos, utilizando um banco de dados PostgreSQL executado dentro de uma imagem Docker (assim como o back-end). Um arquivo docker-compose.yml foi incluído para facilitar a construção e execução de ambos os contêineres.

Esta API é baseada no vídeo "Como criar uma REST API completa do zero com GO | Golang tutorial - iniciante" do canal Go Lab Tutoriais, com algumas alterações, adições e adaptações próprias.

Link do vídeo: https://youtu.be/3p4mpId_ZU8

Conteúdo:

  1. Pré-requisitos
    1. Go
    2. Git
    3. Editor de Código
    4. Swag
    5. PostgreSQL ou Docker
    6. pgAdmin ou DBeaver
    7. Postman
  2. Versões Estáveis
  3. Extensões Recomendadas do VS Code
  4. Executando a Aplicação
  5. Endpoints
    1. Inserir um Novo Produto
    2. Deletar um Produto por Id
    3. Obter todos os Produtos
    4. Obter um Produto por Id
    5. Atualizar um Produto por Id
  6. Documentação Oficial

Pré-requisitos

Para utilizar as funcionalidades deste programa, é necessário possuir as ferramentas listadas abaixo. Cada uma desempenha um papel essencial no desenvolvimento, execução e manutenção da aplicação.


1. Go

Linguagem de programação criada pela Google e base fundamental deste projeto. A API foi desenvolvida com a versão 1.25.1, mas qualquer versão a partir da 1.18 é suficiente para compilar e executar corretamente o código, garantindo compatibilidade com todas as dependências.


2. Git

Sistema de controle de versões distribuído utilizado para clonar o repositório e acompanhar o histórico de desenvolvimento do projeto.


Ferramenta usada para escrever e editar o código-fonte do programa. Embora qualquer editor de texto funcione, recomenda-se utilizar um editor moderno com recursos como:

  • auto-completar código,

  • destaque de sintaxe,

  • integração com depuradores e extensões.


O Visual Studio Code é a melhor escolha para quem busca portabilidade, praticidade e ampla personalização. Para quem deseja recursos avançados de análise e depuração específicos para Go, o GoLand é uma alternativa mais profissional.


4. Swag

Ferramenta que gera automaticamente a documentação Swagger/OpenAPI a partir dos comentários do código Go. Ela interpreta as anotações nas funções (controllers) e cria arquivos que permitem visualizar e interagir com os endpoints da API via navegador.

  • Instalação:

    go install github.com/swaggo/swag/cmd/swag@latest
  • Comando principal:

    swag init -g cmd/main.go

Sistema de gerenciamento de banco de dados relacional (SGBD) que permite armazenar, manipular e consultar dados por meio da linguagem SQL. É amplamente utilizado devido à sua eficiência, confiabilidade e suporte a grandes volumes de dados. Além disso, é gratuito e de código aberto (licença PostgreSQL License).


💡 Como alternativa, é possível utilizar um contêiner Docker com a imagem oficial do PostgreSQL configurada para conexão com a aplicação. Nesse caso, é interessante utilizar o site Docker Hub. Abaixo está o link para a imagem do Postgres:


Ferramenta gráfica oficial para gerenciamento de bancos de dados PostgreSQL. Permite escrever e executar consultas SQL, monitorar desempenho, gerenciar usuários e permissões, criar backups, configurar replicação e muito mais.

Como alternativa, pode-se utilizar o DBeaver, que oferece suporte não apenas ao PostgreSQL, mas também a diversos outros SGBDs (relacionais e NoSQL).



Ferramenta gráfica para testes e validação de endpoints de APIs. Permite enviar requisições HTTP (GET, POST, PUT, DELETE etc.), inspecionar respostas, testar autenticação e automatizar coleções de testes. Pode ser utilizada como aplicativo independente ou integrada ao VS Code por meio da extensão oficial.




💡 Dica

Para um ambiente de desenvolvimento limpo e reproduzível, recomenda-se utilizar Docker Compose para orquestrar o container da aplicação Go e o container PostgreSQL, mantendo as variáveis de ambiente centralizadas em um arquivo .env.


Versões Estáveis

  • Go: 1.18+
  • Git: 2.13+
  • VS Code: 1.80+
  • PostgreSQL: 12+
  • Docker: 20.10+
  • pgAdmin 4: 6.21+
  • DBeaver: 8.0+
  • Postman: 9.0+

Extensões recomendadas do VS Code:

Por ser um editor de código leve e modular, o VS Code depende de extensões para oferecer suporte completo ao desenvolvimento em Go, incluindo compilação, depuração e recursos de produtividade.


Extensão oficial mantida pelo time do Go. Ela adiciona suporte nativo à linguagem, permitindo:

  • Compilação e execução de programas Go diretamente no editor
  • IntelliSense com autocompletar inteligente e sugestões contextuais
  • Destaque semântico de sintaxe (Semantic Syntax Highlighting)
  • Refatoração e formatação automática de código
  • Navegação entre definições e referências
  • Análise estática de código e diagnósticos em tempo real

Essa extensão é essencial para qualquer desenvolvedor que utilize o VS Code como ambiente principal de desenvolvimento Go.



Executando a aplicação:

“Antes de iniciar, é necessário clonar o repositório do projeto para o seu ambiente local.”

git clone https://github.com/onlytesting-user/api-golab

Em seguida, acesse o diretório do projeto e, na raiz, execute o comando abaixo para construir todos os contêineres necessários e iniciar a aplicação:

docker compose up -d

Após a execução bem-sucedida, a API estará disponível localmente. Você poderá acessá-la através de ferramentas como o Postman ou diretamente pelo navegador (para endpoints GET).

# GetProducts

http://localhost:8000/products


# GetProductByID
# substitua {productID} por um valor numérico válido (ex: 1, 2, 3...)

http://localhost:8000/product/{productID}

Para visualizar a documentação interativa da API (Swagger UI), acesse no navegador:

http://localhost:8000/swagger/index.html

A interface do Swagger permite explorar os endpoints disponíveis, enviar requisições de teste e visualizar exemplos de resposta diretamente pelo navegador.


Endpoints

Endpoints Swagger


1. Inserir um novo produto

POST /product

Insere um novo produto na base de dados, sendo o ID um dado auto-incremental cuja passagem no Request Body não é necessária.

Corpo da requisição:

{
  "price": 150,
  "product_name": "Headphones"
}

Exemplo de corpo da resposta:

{
  "id_product": 18,
  "product_name": "Headphones",
  "price": 150
}

O campo id_product corresponde ao identificador único do produto no banco.

Respostas:

Código Descrição
201 Created
400 Bad Request
500 Internal Server Error

2. Deletar um produto por ID

DELETE /product/{productID}

Deleta um produto existente no banco de dados com base em seu ID.

Parâmetro:

  • id (integer): O identificador do produto.

Exemplo de corpo da resposta:

Ex: /product/18

{
  "Message": "Product deleted successfully"
}

Respostas:

Código Descrição
200 OK
400 Bad Request
500 Internal Server Error

3. Obter todos os produtos

GET /products

Retorna uma lista de todos os produtos já cadastrados na base de dados.

Exemplo de corpo da resposta:

[
  {
    "id_product": 1,
    "product_name": "Keyboard",
    "price": 50
  },
  {
    "id_product": 2,
    "product_name": "Monitor",
    "price": 300
  },
  {
    "id_product": 3,
    "product_name": "Cabinet",
    "price": 150
  }
]

Respostas:

Código Descrição
200 OK
500 Internal Server Error

4. Obter um produto por ID

GET /product/{productID}

Obtém os detalhes de um produto em específico cadastrado no banco de dados com base em seu ID.

Parâmetro:

  • id (integer): O identificador do produto.

Exemplo de corpo da resposta:

Ex: /product/5

{
  "id_product": 5,
  "product_name": "Smartphone",
  "price": 1100
}

Respostas:

Código Descrição
200 OK
400 Bad Request
404 Not Found
500 Internal Server Error

5. Atualizar um produto por ID

PUT /product/{productID}

Atualiza os dados de um produto existente no banco de dados com base em seu ID.

Parâmetro:

  • id (integer): O identificador do produto.

Corpo da requisição:

{
  "price": 15,
  "product_name": "Mouse"
}

Exemplo de corpo da resposta:

Ex: /product/8

{
  "id_product": 8,
  "product_name": "Mouse",
  "price": 15
}

Respostas:

Código Descrição
200 OK
400 Bad Request
500 Internal Server Error


Documentação Oficial:


Go Swagger Postgres Docker Postman Visual Studio Code Git

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published