Introdução ao Backend Moderno
Bem-vindo ao curso de Backend Completo com TypeScript! Nesta primeira aula, vamos entender o que é backend, como a web funciona e por que TypeScript é a escolha ideal para desenvolvimento de APIs modernas.
O que é Backend?
Quando você acessa um site ou aplicativo, existe uma divisão clara de responsabilidades:
- Frontend: A interface que você vê e interage (HTML, CSS, JavaScript no navegador)
- Backend: O servidor que processa dados, regras de negócio e armazena informações
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Cliente │ ──────▶ │ Backend │ ──────▶ │ Banco de │
│ (Browser) │ ◀────── │ (API) │ ◀────── │ Dados │
└─────────────┘ └─────────────┘ └─────────────┘
Responsabilidades do Backend
- Processar requisições HTTP - Receber e responder requests
- Lógica de negócio - Regras e validações da aplicação
- Acesso a dados - Comunicação com bancos de dados
- Autenticação e autorização - Controle de acesso
- Integrações - Comunicação com serviços externos
Como a Web Funciona
O Protocolo HTTP
HTTP (HyperText Transfer Protocol) é o protocolo de comunicação da web. Toda comunicação entre cliente e servidor segue esse padrão:
// Anatomia de uma requisição HTTP{ method: 'POST', // Método (GET, POST, PUT, DELETE, etc) url: '/api/users', // Endpoint headers: { // Metadados 'Content-Type': 'application/json', 'Authorization': 'Bearer token123' }, body: { // Dados (quando aplicável) name: 'João', email: 'joao@email.com' }}Métodos HTTP Principais
| Método | Uso | Exemplo |
|---|---|---|
| GET | Buscar dados | Listar usuários |
| POST | Criar dados | Cadastrar usuário |
| PUT | Atualizar (completo) | Atualizar todos os campos |
| PATCH | Atualizar (parcial) | Atualizar apenas o email |
| DELETE | Remover | Excluir usuário |
Status Codes
Os códigos de resposta indicam o resultado da operação:
// Respostas de sucesso (2xx)200 // OK - Requisição bem sucedida201 // Created - Recurso criado204 // No Content - Sucesso sem corpo de resposta // Erros do cliente (4xx)400 // Bad Request - Dados inválidos401 // Unauthorized - Não autenticado403 // Forbidden - Sem permissão404 // Not Found - Recurso não encontrado422 // Unprocessable Entity - Validação falhou // Erros do servidor (5xx)500 // Internal Server Error - Erro no servidor503 // Service Unavailable - Servidor indisponívelPor que TypeScript no Backend?
1. Segurança de Tipos
// JavaScript - Bug silenciosofunction processPayment(amount, userId) { // amount pode ser undefined, string, NaN... return amount * 1.1; // Pode retornar NaN} // TypeScript - Erro em tempo de desenvolvimentofunction processPayment(amount: number, userId: string): number { return amount * 1.1; // Garantido que é um número}2. Melhor Experiência de Desenvolvimento
- Autocompletar inteligente - A IDE sabe os tipos disponíveis
- Refatoração segura - Mudanças são propagadas automaticamente
- Documentação inline - Tipos servem como documentação
3. Menos Bugs em Produção
Estudos mostram que TypeScript pode prevenir até 15% dos bugs que chegariam à produção.
4. Escalabilidade
Em projetos grandes com múltiplos desenvolvedores, TypeScript:
- Facilita entender código de outros
- Previne alterações que quebram contratos
- Torna a manutenção mais segura
Node.js: JavaScript no Servidor
Node.js permite executar JavaScript/TypeScript fora do navegador:
// server.tsimport http from 'http'; const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ message: 'Hello from Node.js!' }));}); server.listen(3000, () => { console.log('Servidor rodando em http://localhost:3000');});Vantagens do Node.js
- Event Loop não-bloqueante - Alta performance para I/O
- JavaScript em toda stack - Mesma linguagem no front e back
- NPM - Maior ecossistema de pacotes do mundo
- Comunidade ativa - Muitos recursos e suporte
O que Vamos Construir
Ao longo deste curso, você vai construir uma API de E-commerce completa com:
- 🔐 Autenticação JWT
- 👥 Gestão de usuários com roles
- 📦 Catálogo de produtos e categorias
- 🛒 Carrinho de compras
- 💳 Processamento de pedidos
- 📧 Notificações por email
- 📊 Dashboard administrativo
- 🧪 Testes automatizados
- 🐳 Deploy com Docker
Próximos Passos
Na próxima aula, vamos configurar todo o ambiente de desenvolvimento com:
- Node.js e npm
- TypeScript
- ESLint e Prettier
- VS Code com extensões recomendadas
Prepare seu computador e vamos começar a codar! 🚀