express nodejs
JavaScript

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

Leave a Reply

Your email address will not be published. Required fields are marked *