Capítulo 20: Projeto Final - API de Brawlers (Parte 2) 🌵⭐
Chegamos ao último capítulo! Vamos finalizar nossa API adicionando a capacidade de cadastrar novos Brawlers usando o método POST.
📖 Adicionando Dados (POST)
Até agora só lemos dados. Para enviar novos dados para o servidor, usamos o método POST. O Express precisa do middleware express.json() para entender esses dados.
📖 Exemplo Guiado: Cadastro de Novo Brawler
Vamos adicionar a rota POST ao nosso arquivo.
- Crie o arquivo
brawlers_completo.jsna pastasrc/:
const express = require('express');
const app = express();
app.use(express.json());
const brawlers = [
{ id: 1, nome: "Shelly", classe: "Destruidora" },
{ id: 2, nome: "Colt", classe: "Tiro Preciso" }
];
// Listar todos
app.get('/brawlers', (req, res) => {
res.json(brawlers);
});
// Cadastrar novo
app.post('/brawlers', (req, res) => {
const novoBrawler = req.body;
// Gerando um ID simples
novoBrawler.id = brawlers.length + 1;
// Adicionando na lista
brawlers.push(novoBrawler);
res.status(201).send(`Brawler ${novoBrawler.nome} cadastrado com sucesso!`);
});
app.listen(3000, () => {
console.log("API Completa rodando em http://localhost:3000");
});🕹️ Como Executar e Testar no VS Code
Para testar o POST, você não pode usar apenas o navegador (que só faz GET por padrão).
- Rode o servidor:
node brawlers_completo.js - Use a extensão Thunder Client no VS Code ou o comando
curlno terminal:
curl -X POST -H "Content-Type: application/json" -d '{"nome":"Leon","classe":"Assassino"}' http://localhost:3000/brawlers📊 Ilustração Visual: Fluxo do POST
Veja como o dado entra na nossa lista:
graph LR A["Cliente: JSON"] -->|POST| B[🛡️ express.json] B -->|req.body| C[Array brawlers]
🛠️ Prática Obrigatória 1: Verificação de Nome
Na rota POST, adicione uma verificação: se o usuário tentar cadastrar um Brawler sem o campo nome, responda com erro (status 400) e a mensagem “O nome do Brawler e obrigatorio!“.
🔑 Gabarito de Código
Prática 1: Rota POST com validação
app.post('/brawlers', (req, res) => {
const novoBrawler = req.body;
if (!novoBrawler.nome) {
return res.status(400).send("O nome do Brawler e obrigatorio!");
}
novoBrawler.id = brawlers.length + 1;
brawlers.push(novoBrawler);
res.status(201).send(`Brawler ${novoBrawler.nome} cadastrado com sucesso!`);
});📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
(Siga o padrão estabelecido no Guia)
Parabéns por concluir o curso de JavaScript com Node.js! Você agora sabe criar APIs reais!