🚀 Capítulo 19: A Era de Ultron P1 (Tema: Vingadores)

NOTE

Este capítulo inicia o projeto final do curso de Backend. Planeje a estrutura da sua API para que ela seja robusta e não saia do controle!


1. 🎯 Objetivo da Aula

Planejar e iniciar a construção do projeto prático final do curso de Backend com Go e Gin, aplicando os conceitos de rotas, banco de dados (GORM) e autenticação (JWT).

2. 🏢 O Cenário Prático (Seu Desafio)

No filme Vingadores: Era de Ultron, Tony Stark tenta criar um sistema de inteligência artificial ultra avançado para proteger o planeta Terra. Ele junta as mentes mais brilhantes, conecta os servidores e começa a construir a base do sistema. Porém, como ele fez tudo com pressa e sem os devidos cuidados, o sistema (Ultron) acabou saindo do controle!

Chegou a hora do seu Projeto Final do curso de Go e Gin!

  • Você vai construir uma API completa para um sistema real (Sugerimos um mini e-commerce de produtos ou uma rede social de desenvolvedores).
  • Nesta Parte , vamos fazer o trabalho do Arquiteto: planejar as tabelas do banco de dados, organizar as pastas do projeto e criar as primeiras rotas de Cadastro e Login! Seu desafio é construir uma base sólida!

🧠 Fundamentos: A Teoria Traduzida

Para o nosso projeto de E-commerce, precisaremos de duas entidades principais no banco de dados:

👤 1. Usuário (User):

Precisa ter nome, e-mail e senha.

type Usuario struct {
    gorm.Model
    Nome  string `json:"nome" binding:"required"`
    Email string `json:"email" binding:"required" gorm:"unique"`
    Senha string `json:"senha" binding:"required"`
}

🛍️ 2. Produto (Product):

Precisa ter nome, preço e a URL da imagem.

type Produto struct {
    gorm.Model
    Nome  string  `json:"nome" binding:"required"`
    Preco float64 `json:"preco" binding:"required"`
    Imagem string `json:"imagem"`
}

4. 📖 Exemplo Guiado: As Rotas do Sistema

O nosso projeto terá as seguintes rotas organizadas:

Rotas Públicas (Qualquer um acessa):

  • POST /register: Para criar uma conta nova.
  • POST /login: Para digitar e-mail e senha e receber o Token JWT.
  • GET /produtos: Para qualquer um poder ver a lista de produtos da loja.

Rotas Protegidas (Só quem tem o Token JWT acessa):

  • POST /produtos: Apenas administradores logados podem cadastrar produtos novos.
  • DELETE /produtos/:id: Apenas administradores logados podem deletar produtos.

5. 🛠️ Prática Obrigatória: O Seu Plano

Preencha o planejamento do seu projeto final respondendo:

  1. Qual projeto você escolheu fazer (E-commerce ou Rede Social)?
  2. Escreva a lista de rotas (pelo menos ) que o seu projeto terá, dizendo o método HTTP e o que cada uma faz.
  3. Qual dessas rotas obrigatoriamente precisará passar pelo Middleware de Autenticação JWT para proteger os dados?

7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 19 Go_UltronP1) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

spec_backend_com_golang_e_gin/
├── capitulos/
│   └── capitulo_19_ultron_p1.md

💡 Checkpoint de Lógica

Em Go, para não salvarmos a senha do usuário em texto limpo no banco de dados (o que seria um crime de segurança!), os programadores usam a biblioteca golang.org/x/crypto/bcrypt para criptografar a senha antes de salvar!

10. 🔥 Desafio de Fixação

Tente desenhar em um papel o diagrama de pastas que você usaria para organizar esse projeto final (Dica: use as pastas models, controllers e middlewares).

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática Obrigatória (Exemplo de resposta esperada):

  1. Escolhi fazer o projeto de E-commerce.
  2. Rotas:
    • POST /register - Cadastra um novo cliente.
    • POST /login - Faz login e devolve o token.
    • GET /produtos - Lista todos os produtos da loja.
  3. A rota de cadastrar um produto novo (POST /produtos) precisará de proteção JWT para que um invasor não saia cadastrando produtos falsos na nossa loja!

Capitulo Anterior | Proximo Capitulo