Skip to content

mayannaoliveira/api-go-mongodb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Udemy JavaScript Go MongoDB Docker Gin Framework Postman GitHub Studio3T VSCodium

API Go e MongoDB

Projetinho feito durante o curso Clean Architecture na prática: Go, MongoDB e Docker na Udemy. O intuito desse repositório é de estudar Go e MongoDB.

Important

Repositório criado somente para estudar a Criação de uma API com Go e MongoDB.

Conteúdo:

1. Configuração do ambiente

  • Instalação do Go.
  • Configuração variável ambiente.
  • Checar a versão do Go com comando go version;

Download and install Tutorial: Get started with Go

  • Para checar ser o go está rodando é simples:

    • Abra o terminal cmd.
    • Verifique a versão go version.
    • Crie um diretório mkdir hello e acese cd hello.
    • Insira um arquivo dentro chamado hello.go como abaixo:
    package main
    import "fmt"
    
    func main() {
        fmt.Println("Hello, World!")
    }
    • Execute utilizando o comando go run ..
    • Verifique se retornou Hello, World!.

2. IDE

  • Instalar a extenção do Go Go Team at Google e Docker Microsoft.
  • Adicionar em Arquivo > Preferências > Configurações as configuração no VS Code:
{
    "go.formatTool": "goimports",
    "go.lintTool": "golangci-lint",
    "go.useLanguageServer": true
}

3. Docker

  • Instalação do Docker . Checar Docker version com comando docker --version.

Note

A execução do projeto depende da criação do conteiner e que ele esteja executando.

4. Introdução ao módulo

  • Teste executado com old_main.go com o comando go run old_main.go.
  • Verificar se no localhost http://localhost:8000/ é possível visualizar a mensagem Olá Mundo!.

5. Criando API

  • Crie um novo arquivo main.go e adicione o código e execute no terminal go run main.
  • Criar um servidor HTTP com a rota / que retorna a mensagem Olá Mundo!:
  • Executea o comando go run main.go.
  • Verifique se no localhost http://localhost:8000/ é possível visualizar a mensagem Olá Mundo!.
  • Caso erro devido ao erro de porta, altere o comando para go run -p 8001 main.go e execute novamente.
  • Caso o Framework Gin não esteja instalado use o comando go get -u github.com/gin-gonic/gin.
  • Execute o comando go run main.go para verficar Olá,Mundo! na página localhost.

Projeto no Postman:

  • Baixe e instale o Postman.
  • Importe a coleção e ambiente Postman para sua workspace no Postman.

Note

As resquisições e o ambiente de teste foram salvos na pasta Postman para utilizar faça o import no Postman.

6. Adicionando o banco de dados

  • Verifique se o Docker está em execução.
  • Crie um conteiner Docker com o comando docker run -d -p 27017:27017 --name mongodb mongo:4.
  • Verifique com docker ps se a instalação foi realizada.
  • Baixar pacotes para o projeto: go mod tidy.
  • Verificar se foi gerado o arquivo go.mod em go-crud-api\go.mod.
  • Continuar a parte do código para criar uma task.

7. Criando uma Task

  • Criar novo repositório models e adicionar o arquivo task.go.
  • Adicionar uma struct Task dentro do arquivo task.go.
  • Adicionar um método CreateTask dentro do arquivo main.go.
  • Inserir tratamento de exceção para verificar a conexão com o banco de dados.
  • Criar o router para POST Createtask.
  • Instalar a ferramenta Studio 3T para visualizar as conexões do MongoDB.
  • Para criar a conexão no Studio 3T bastas clicar em Conect.
  • Inserir a url mongodb://localhost:27017 para estabelecer a conexão local.
  • Instalar o Postman para teste da API.
  • No Postman é nescessário criar um novo worspace.
  • Adicione uma requisiçao POST para testar tasks POST: http://localhost:8000/task.
  • Insira o JSON dentro do Body > raw:
{
    "title":"Estudando Go",
    "description":"Exemplo do projeto",
    "completed":true,
    "created_at":"2022-03-18T14:10:00Z",
    "duo_date":"2022-03-18T14:10:00Z"
}
  • Verifique se retornou o id similiar a esse:
{
    "id": "683a043f3b9c9b864c7a67a4"
}
  • Checar no Studio3T se os dados foram inseridos no MongoDB. Processo pode ser feito usando um JS db.getCollection("tasks").find({}).

8. Listando as tasks

  • Criar o bloco de listTask dentro do arquivo main.go.
  • Inserir tratamento de exceção para verificar a conexão com o banco de dados.
  • Inserir o router para listTask.
  • No Postman teste utilizando uma requisição GET: http://localhost:8000/tasks para listar todas as tasks.
  • Verificar se retorna a lista de tasks adicionadas.

9. Atualizando as tasks

  • Implementar o código com a função
  • Criar uma request no Postman PUT
  • Inserir o Body > Raw > JSON:
    {
        "id": "<<ID>>",
        "title": "<<TÍTULO>>",
        "description": "<<DESCRIÇÃO>>",
        "completed": <<TRUE/FALSE>>,
        "due_date": "<<DATETIME>>",
        "created_at": "<<DATETIME>>"
    }
  • Verificar se API foi atualizada rodando a API GET: http://localhost:8000/tasks
  • A API retorna mensagem de sucesso:
{
    "message": "Task atualizada com sucesso"
}
  • Verificar no Studio3T se os dados foram atualizados do MongoDB.
  • Processo pode ser feito usando um JS db.getCollection("tasks").find({}).

10. Deletando task

  • Inserir em main.go a função para apagar a task.
  • Inserir o router de apagar task.
  • No Postman criar um requet DELETE: http://localhost:8000/task/<<ID>> para deletar a task.
  • Verificar se a task foi apagada e se API retornou a mensagem de sucesso:
{
    "message": "Task deletada com sucesso"
}   
  • Verificar no Studio3T se os dados foram deletados do MongoDB.
  • Processo pode ser feito usando um JS db.getCollection("tasks").find({}).
  • Após a finalização do CRUD popule Tasks com os JS populando-tasks.js ou inserir-task.js.
  • Basta inserir os dados no MongoDB e checar com comando db.getCollection("tasks").find({}) ou db.tasks.find().pretty().

11. Adicionando Swagger na aplicação

  • Essa parte é para documentar a API é feita através da instalação de pacotes.
  • Acesse o terminal na pasta do projeto cd go-crud-api.
  • Instale os pacotes via terminal:
    • go get -u github.com/swaggo/gin-swagger.
    • go get -u github.com/swaggo/files.
    • go install github.com/swaggo/swag/cmd/swag@latest.
  • Fazer o import dos pacotes dentro do main.go.
    "go-crud-api-docs" 
	ginSwagger "github.com/swaggo/gin-swagger"
	swaggerFiles "github.com/swaggo/files"
  • Adiciona novo endpoint.

  • Criar uma pasta docs em go-crud-api/docs.

  • Inserir a documentação em cada função criada em main.go

    • func createTask inserir:
     // @Summary      Criando nova task
     // @Description  Cria uma nova task no banco de dados.
     // @Tags         tasks
     // @Accept       json
     // @Produce      json
     // @Param        task  body      models.Task  true  "Dados da Tarefa"
     // @Success      201   {object}  map[string]interface{}
     // @Failure      400   {object}  map[string]string
     // @Failure      500   {object}  map[string]string
     // @Router       /task [post]
    • func listTask inserir:
     // @Summary      Listar tasks
     // @Description  Lista todas as tasks no banco de dados.
     // @Tags         tasks
     // @Accept       json
     // @Produce      json
     // @Success      200   {array}   models.Task
     // @Failure      500   {object}  map[string]string
     // @Router       /tasks [get]
    • func updateTask inserir:
     // @Summary      Atualizando a task
     // @Description  Atualiza uma task no banco de dados.
     // @Tags         tasks
     // @Accept       json
     // @Produce      json
     // @Param        id    path      string      true  "ID da tarefa"
     // @Param        task  body      models.Task true  "Dados da Tarefa"
     // @Success      200   {object}  map[string]string
     // @Failure      400   {object}  map[string]string
     // @Failure      404   {object}  map[string]string
     // @Failure      500   {object}  map[string]string
     // @Router       /tasks/{id} [put]
    • func deleteTask inserir:
     // @Summary      Apagar a task
     // @Description  Apaga uma task no banco de dados.
     // @Tags         tasks
     // @Accept       json
     // @Produce      json
     // @Param        id    path      string      true  "ID da tarefa"
     // @Success      200   {object}  map[string]string
     // @Failure      400   {object}  map[string]string
     // @Failure      404   {object}  map[string]string
     // @Failure      500   {object}  map[string]string
     // @Router       /tasks/{id}     [delete] {delete}
  • No terminal execute swag --version para checar a versão.

  • Execute swag init para gerar todos os arquivos necessários a partir dos comentários da documentação.

  • Verifique se foram criados os arquivos docs.go, swagger.json, swagger.yaml em go-crud-api\docs.

  • Abrir no navegador o localhost http://localhost:8000/swagger/index.html.

  • Agora temos a visualização dos Swaggers.


Contribuidores
mayannaoliveira

Caso queira usar o repositório leia Contribuidores antes de fazer o fork.

Releases

No releases published

Packages

 
 
 

Contributors