🚀 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:
- Qual projeto você escolheu fazer (E-commerce ou Rede Social)?
- Escreva a lista de rotas (pelo menos ) que o seu projeto terá, dizendo o método HTTP e o que cada uma faz.
- 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)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 19 Go_UltronP1) e clique em Commit to main. - 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):
- Escolhi fazer o projeto de E-commerce.
- Rotas:
POST /register- Cadastra um novo cliente.POST /login- Faz login e devolve o token.GET /produtos- Lista todos os produtos da loja.
- 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!