ANÚNCIO

~/questoes/programacao

Em um CRUD REST, qual método deve ser implementado para atualizar parcialmente um recurso?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Para fixar

PATCH vs PUT: Atualizações Parciais em APIs REST

Conceito central

Em APIs REST, existem dois métodos para atualizar recursos: PUT é usado para substituir completamente um recurso (requer todos os campos), enquanto PATCH é usado para atualizar apenas os campos específicos que o cliente envia. Entender essa diferença é fundamental para criar APIs que funcionam corretamente e são fáceis de usar.

Por que essa resposta faz sentido

PATCH é o método correto para atualizações parciais porque ele modifica apenas os campos fornecidos na requisição, deixando os demais intactos. Isso é especialmente útil quando o cliente precisa atualizar apenas um ou dois campos sem precisar enviar o recurso completo novamente, reduzindo tráfego de rede e simplificando a lógica do cliente.

Armadilhas comuns

  • Confundir PUT com PATCH, achando que PUT serve para atualizações parciais quando na verdade requer o recurso completo.
  • Não enviar o corpo completo do recurso ao usar PUT, causando perda de dados em campos não enviados.
  • Usar POST ou DELETE para simular atualizações, ao invés de usar o verbo HTTP correto (PATCH ou PUT).

Entenda as alternativas

A

PUT é para atualização completa, não parcial. Quando você usa PUT, espera-se que todo o recurso seja fornecido na requisição. Se você enviar apenas alguns campos com PUT, pode perder dados dos campos que não foram enviados, dependendo de como o servidor foi implementado.

B

Deletar e recriar é uma abordagem muito ineficiente e nunca deve ser usada para simular atualização. Além de desperdiçar recursos, pode gerar problemas com IDs (um novo recurso recebe um ID diferente) e quebra a semântica correta das operações REST.

C

PATCH é exatamente o método designado pela especificação HTTP para atualizações parciais. Você envia apenas os campos que deseja mudar, e o servidor atualiza apenas esses campos, preservando o restante do recurso. Essa é a abordagem correta e eficiente.

D

POST é para criar novos recursos, não para atualizar. Além disso, enviar dados completos novamente não é necessário quando você precisa atualizar apenas alguns campos. Usar POST para atualização viola a semântica correta dos verbos HTTP em APIs REST.

Dica prática: Ao implementar um endpoint de atualização em Spring Boot, use @PatchMapping para parciais e @PutMapping para completas. Exemplo: @PatchMapping("/api/usuarios/{id}") recebe um DTO com campos opcionais e atualiza apenas os que foram preenchidos.

Revise pensando: Se você precisa atualizar apenas o email de um usuário mantendo nome, cpf e data de cadastro intactos, qual verbo HTTP você usaria e por quê?