O HTTP (HyperText Transfer Protocol) é a linguagem que os computadores usam para conversar na internet. Quando você digita uma URL, seu navegador (Cliente) envia uma "mensagem" em HTTP para o servidor.
Para entender o que os computadores dizem uns aos outros, precisamos conhecer estes 5 verbos:
| Verbo | Ação | Analogia (O exemplo da Bicicleta 🚲) |
|---|---|---|
| GET | Buscar/Receber dados. | Você pede uma bicicleta para a loja. |
| POST | Enviar/Criar dados. | Você envia seus dados para cadastrar uma nova bicicleta. |
| PUT | Atualizar (Substituir tudo). | A loja troca sua bicicleta inteira por uma nova. |
| PATCH | Atualizar (Corrigir parte). | A loja envia apenas um pneu novo para consertar o furo. |
| DELETE | Remover dados. | Você joga a bicicleta no lixo (deleta do sistema). |
Endpoints são os destinos da sua requisição. Pense neles como as "pastas" ou "endereços" dentro do seu servidor.
graph TD
A[Navegador / Cliente] -- "GET /" --> B(Servidor: Home Page)
A -- "GET /about" --> C(Servidor: Sobre Mim)
A -- "GET /contact" --> D(Servidor: Contato)
B -- "Responde HTML" --> A
C -- "Responde HTML" --> A
D -- "Responde HTML" --> A
Reiniciar o servidor manualmente toda vez que você muda o código é cansativo. O Nodemon vigia seus arquivos e reinicia o servidor automaticamente.
1. Instalação Global (Executar uma única vez no PowerShell):
npm install -g nodemon
2. Como rodar seu projeto:
Em vez de node index.js, use:
nodemon index.js
Aqui está o código completo para criar múltiplas rotas e enviar HTML como resposta.
import express from "express";
const app = express();
const port = 3000;
// Rota Raiz (Home Page)
app.get("/", (req, res) => {
res.send("<h1>Página Inicial</h1><p>Bem-vindo ao meu servidor!</p>");
});
// Rota Sobre (About)
app.get("/about", (req, res) => {
res.send("<h1>Sobre Mim</h1><p>Sou um desenvolvedor aprendendo Node.js.</p>");
});
// Rota de Contato
app.get("/contact", (req, res) => {
res.send("<h1>Contato</h1><p>Telefone: +55 11 9999-9999</p>");
});
app.listen(port, () => {
console.log(`🚀 Servidor rodando na porta ${port}`);
});