Node.js e Express na Prática | Aprenda PUT e DELETE Criando uma API REST Completa
Depois de aprender como criar rotas GET e POST, chegou o momento de concluir a primeira etapa da construção de uma API REST utilizando Node.js e Express.
Nesta aula vamos aprender duas operações fundamentais presentes em praticamente qualquer sistema profissional: atualizar informações (PUT) e remover registros (DELETE).
Embora neste projeto utilizemos apenas um array em memória, toda a lógica apresentada é exatamente a mesma utilizada quando trabalhamos com bancos de dados como MySQL, PostgreSQL, SQL Server ou MongoDB.
O objetivo desta aula não é apenas decorar comandos, mas compreender como uma API recebe uma requisição, identifica um registro específico, altera seus dados, remove informações e retorna uma resposta adequada para o cliente.
Assista ao vídeo desta aula
📺 Live completa
📺 Vídeo anterior (GET e POST)
O que é o método PUT?
Imagine um sistema de cadastro de alunos.
Você possui um aluno já cadastrado:
{
id: 3,
nome: "Ana Clara",
curso: "ADM Noite"
}
Agora imagine que ela mudou de turma.
Ao invés de criar um novo cadastro, precisamos apenas atualizar as informações existentes.
É exatamente essa a função do método PUT.
Ele permite alterar um recurso já existente.
Na prática, a requisição fica parecida com esta:
PUT /alunos/3
Observe que o ID faz parte da própria URL.
Isso acontece porque precisamos informar exatamente qual registro será alterado.
O que é o método DELETE?
O método DELETE possui um funcionamento muito semelhante.
A diferença é que agora queremos remover um registro.
Exemplo:
DELETE /alunos/3
Novamente o ID informa qual aluno será removido.
Sem essa informação, a API não saberia qual registro excluir.
Por que utilizamos parâmetros na URL?
Nesta aula utilizamos:
/alunos/:id
Esse trecho indica que existe um parâmetro chamado id.
Quando o usuário faz uma requisição como:
/alunos/3
O Express captura automaticamente esse valor através de:
req.params.id
Como parâmetros da URL chegam como texto (string), também aprendemos a converter esse valor para número:
const id = Number(req.params.id);
Essa conversão evita diversos problemas durante as comparações.
Criando uma API REST passo a passo
Para simplificar o aprendizado, construímos um pequeno banco de dados em memória utilizando um vetor de objetos.
let alunos = [
{
id: 1,
nome: "Marcos",
curso: "Desenvolvimento de Sistemas"
},
{
id: 2,
nome: "Maria",
curso: "Informática"
}
];
Embora os dados desapareçam quando o servidor é reiniciado, essa abordagem permite focar exclusivamente na lógica da API antes de introduzir um banco de dados real.
Middleware express.json()
Antes de trabalhar com requisições POST e PUT foi necessário configurar um middleware muito importante:
app.use(express.json());
Esse middleware permite que o Express interprete automaticamente os dados enviados em formato JSON.
Sem ele:
- req.body ficará vazio;
- os dados enviados pelo cliente não poderão ser lidos;
- a API não conseguirá atualizar ou cadastrar informações.
Essa é uma das configurações obrigatórias em praticamente qualquer projeto Express.
Revisando rapidamente o método POST
Antes de criar o PUT, fizemos uma breve revisão do método POST.
Nele recebemos um objeto através de:
req.body
Depois adicionamos esse objeto ao vetor utilizando:
alunos.push(novoAluno);
Essa revisão facilita o entendimento do funcionamento do PUT, já que ambos recebem informações através do corpo da requisição.
Localizando um aluno utilizando find()
Para atualizar um registro, primeiro precisamos encontrá-lo.
Foi exatamente para isso que utilizamos o método:
find()
Exemplo:
const aluno = alunos.find(
aluno => aluno.id === id
);
O método percorre o vetor procurando o primeiro objeto cujo ID seja igual ao informado.
Quando encontra, retorna o objeto completo.
Caso contrário retorna:
undefined
Atualizando os dados do objeto
Depois que localizamos o objeto, basta alterar suas propriedades.
aluno.nome = req.body.nome;
aluno.curso = req.body.curso;
Observe que não estamos criando um novo objeto.
Estamos modificando o objeto existente.
É exatamente assim que funciona um UPDATE em um banco de dados.
Retornando respostas HTTP
Sempre que uma operação é realizada, é importante informar ao cliente se tudo ocorreu corretamente.
Nesta aula utilizamos respostas como:
res.status(200).json({
mensagem: "Aluno atualizado com sucesso"
});
Caso o aluno não exista:
res.status(404).json({
mensagem: "Aluno não encontrado"
});
Esses códigos fazem parte do padrão HTTP utilizado por APIs em todo o mundo.
Removendo registros com DELETE
Após concluir o PUT, criamos a rota DELETE.
O primeiro passo foi localizar a posição do aluno dentro do vetor.
Para isso utilizamos:
findIndex()
Exemplo:
const index = alunos.findIndex(
aluno => aluno.id === id
);
A diferença entre find() e findIndex() é importante.
find()
Retorna o objeto.
findIndex()
Retorna apenas a posição do objeto dentro do vetor.
Excluindo utilizando splice()
Depois de localizar o índice, utilizamos:
splice(index, 1);
O primeiro parâmetro indica a posição.
O segundo informa quantos elementos serão removidos.
Neste caso:
1
significa remover apenas um aluno.
Tratando erros antes da exclusão
Durante a aula também verificamos se o aluno realmente existia.
if(index === -1){
return res.status(404).json({
mensagem:"Aluno não encontrado"
});
}
Essa validação impede que a API tente remover registros inexistentes.
É uma prática utilizada em qualquer aplicação profissional.
Testando tudo no Thunder Client
Ao longo da aula todas as rotas foram testadas utilizando o Thunder Client.
Foi possível acompanhar:
- cadastro de alunos;
- consulta utilizando GET;
- atualização utilizando PUT;
- exclusão utilizando DELETE;
- respostas HTTP;
- mensagens JSON retornadas pela API.
Esse processo é extremamente importante para validar o funcionamento da aplicação antes da integração com o Front-end.
Um erro real durante a aula
Durante a implementação também ocorreu um pequeno erro de lógica.
Ao invés de simplesmente corrigir e seguir em frente, aproveitamos a situação para mostrar como funciona o processo de depuração.
Essa é uma das partes mais importantes para quem está começando.
Todo desenvolvedor passa muito mais tempo investigando erros do que escrevendo código.
Aprender a identificar problemas faz parte da profissão.
O que vem nas próximas aulas?
Agora que já conhecemos os quatro principais métodos HTTP:
- GET
- POST
- PUT
- DELETE
estamos preparados para avançar para projetos maiores.
Nas próximas aulas da série veremos assuntos como:
- persistência de dados em arquivos JSON;
- integração com bancos de dados;
- MySQL;
- PostgreSQL;
- autenticação;
- APIs profissionais;
- arquitetura de projetos Express.
Cada novo conteúdo aproveitará exatamente a base construída nesta sequência de aulas.
Conclusão
Os métodos PUT e DELETE fazem parte do dia a dia de qualquer desenvolvedor Back-end.
Sempre que um sistema precisa atualizar ou remover informações, essas operações entram em ação.
Ao compreender como localizar registros, utilizar parâmetros na URL, manipular objetos JavaScript e retornar respostas HTTP adequadas, você passa a entender o funcionamento interno de praticamente todas as APIs REST modernas.
Embora nesta aula tenhamos utilizado apenas um vetor em memória, toda a lógica apresentada será reaproveitada quando migrarmos para bancos de dados reais como MySQL e PostgreSQL, tornando essa uma das etapas mais importantes para quem deseja aprender desenvolvimento Back-end com JavaScript.
O que você aprendeu nesta aula
- ✅ Node.js
- ✅ Express
- ✅ API REST
- ✅ Método GET
- ✅ Método POST
- ✅ Método PUT
- ✅ Método DELETE
- ✅ req.params
- ✅ req.body
- ✅ express.json()
- ✅ Middleware
- ✅ Objetos JavaScript
- ✅ Arrays
- ✅ find()
- ✅ findIndex()
- ✅ splice()
- ✅ Status Code 200
- ✅ Status Code 201
- ✅ Status Code 404
- ✅ Thunder Client
- ✅ Atualização de Objetos
- ✅ Exclusão de Dados
- ✅ JavaScript Back-end


