7 - Criando o Endpoint para Cadastrar Produtos

Chegamos a um dos momentos mais importantes e aguardados do nosso treinamento: a criação do endpoint para cadastrar dados na nossa API. Nesta aula, vamos aprender a receber informações enviadas pelo cliente através do corpo da requisição e salvá-las no nosso banco de dados em memória.

Passo 1: Atualizando o arquivo main.go

Abra o seu arquivo main.go e adicione a função cadastrarProduto, além de registrar a nova rota POST /produtos dentro da função principal. Nossa função de cadastro ficará assim:

// Função para cadastrar um novo produto
func cadastrarProduto(c *gin.Context) {
	// Referência do struct Produto
	var novoProduto Produto

	// Extrair informações do JSON e atribuir na referência novoProduto
	if err := c.ShouldBindJSON(&novoProduto); err != nil {
		c.JSON(http.StatusBadRequest, gin.H{"erro": err.Error()})
		return
	}

	// Gerar o UUID
	novoProduto.Codigo = uuid.New().String()

	// Adicionar o novoProduto a lista
	produtos = append(produtos, novoProduto)

	// Retorno do endpoint ao cadastrar um novo produto
	c.JSON(http.StatusCreated, novoProduto)
}

E na função principal, iremos adicionar um novo endpoint:

// Função principal
func main() {

	// Roteador
	r := gin.Default()

	// Rotas
	r.GET("/", helloWorld)
	r.GET("/produtos", listarProdutos)
	r.POST("/produtos", cadastrarProduto)

	// Configurar o servidor
	r.Run(":8080")

}

Passo 2: Como testar a criação de dados?

Como o navegador web comum só consegue realizar requisições do tipo GET diretamente pela barra de endereços, para testar nossa rota de cadastro POST, você precisará usar um cliente HTTP externo de sua preferência, como o Thunder Client (extensão do próprio VSCode), o Postman ou o Insomnia.

Para simular o cadastro, configure o seu cliente HTTP com as seguintes definições:

  • Método: POST
  • URL: http://localhost:8080/produtos
  • Tipo de Corpo (Body): Escolha o formato JSON e envie o seguinte objeto contendo apenas o nome, categoria e valor:
{
  "nome": "iPhone 18",
  "categoria": "Telefonia",
  "valor": 9400
}

Ao clicar em enviar, você verá que o servidor retornará o status 201 Created junto com o aluno totalmente processado, contendo seu ID exclusivo gerado por UUID.

E o teste mais legal de todos: depois de fazer o cadastro pelo cliente HTTP, abra novamente seu navegador comum na URL http://localhost:8080/produtos. Note que a listagem que antes estava vazia ([]), agora exibirá o estudante que você acabou de salvar!