9 - Criando o Endpoint para Remover Produtos (DELETE)

Chegamos à aula que fecha o ciclo básico de operações da nossa API (o famoso CRUD: Criar, Ler, Atualizar e Deletar). Nesta aula, vamos implementar o método DELETE para remover um estudante específico da nossa lista utilizando uma técnica muito inteligente de corte de fatias no Go.

Passo 1: Atualizando o arquivo main.go

Abra o seu arquivo main.go e insira a nova função removerProduto, mapeando a rota DELETE /produtos/{codigo} na função principal. Veja abaixo a estrutura da função de remoção:

// Função para remover um produto específico
func removerProduto(c *gin.Context) {
	// Extrair o código do produto via URL
	codigo := c.Param("codigo")

	// Laço de repetição para localizar o produto na lista e remover
	for indice, produto := range produtos {
		// Condicional
		if produto.Codigo == codigo {

			produtos = append(produtos[:indice], produtos[indice+1:]...)

			c.JSON(http.StatusOK, gin.H{"mensagem": "Produto removido."})
			return
		}
	}

	// Retorno do endpoint caso o produto não seja encontrado
	c.JSON(http.StatusNotFound, gin.H{"mensagem": "Produto não encontrado."})
}

Agora podemos atualizar a função principal:

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

	// Roteador
	r := gin.Default()

	// Rotas
	r.GET("/", helloWorld)
	r.GET("/produtos", listarProdutos)
	r.POST("/produtos", cadastrarProduto)
	r.PUT("/produtos/:codigo", alterarProduto)
	r.DELETE("/produtos/:codigo", removerProduto)

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

}

Passo 2: Testando a Exclusão de Dados

Abra o seu cliente HTTP (Postman ou Thunder Client) para fazer a validação completa:

  1. Cadastre um produto novo usando o método POST e copie o campo codigo que retornou na resposta.
  2. Consulte a listagem no navegador ou via GET /produtos para ter certeza de que ele está salvo.
  3. No seu cliente HTTP, altere o método para DELETE e configure a URL colando o código no final (ex: http://localhost:8080/produtos/COLE_O_CODIGO_AQUI). Clique em enviar.