Pular para o conteúdo principal
DevTools by Decussi
  • Ferramentas
  • Dados
  • Segurança
  • Rede
  • Texto
  • Data
  • Web
  • Dev
  • SEO
  • Brasil
Ferramentas
DevTools

Ferramentas para desenvolvedores, em português. Sem cadastro e sem instalação.

Criado e mantido por Decussi

Ferramentas

  • Todas as ferramentas
  • Dados
  • Segurança
  • Rede
  • Texto
  • Data
  • Web
  • Dev
  • SEO
  • Brasil

Referência

  • Consulta rápida
  • Guias
  • Códigos HTTP
  • Cron
  • Checagens de SEO

Desenvolvedores

  • API e devs
  • llms.txt
  • ai.txt
  • Sitemap

Newsletter

Receba novidades e novas ferramentas no seu email.

Sugira uma ferramenta

Tem uma ideia? Envie sua sugestão.

  1. Início
  2. /Guias
  3. /Comparações

PUT vs PATCH: qual usar para atualizar um recurso

Os dois atualizam um recurso, mas com semânticas diferentes — e escolher errado costuma apagar campos que ninguém pediu para apagar.

Comparação direta

PUTPATCH
SignificadoSubstitui o recurso inteiroAplica alterações parciais
CorpoA representação completaSó os campos que mudam
Campos ausentesSão removidos ou zeradosPermanecem como estavam
IdempotenteSimNão necessariamente
Pode criar o recursoSim, na URL informadaNão

O erro que apaga campos

O engano mais comum é enviar um objeto parcial com PUT. Como o PUT substitui o recurso inteiro, tudo que não veio no corpo deveria ser removido — e APIs que implementam a semântica corretamente fazem isso.

http
# ✗ PUT com corpo parcial: o telefone é apagado
PUT /usuarios/7
{ "nome": "Ana" }

# ✓ PUT com o recurso completo
PUT /usuarios/7
{ "nome": "Ana", "email": "ana@exemplo.com", "telefone": "11999998888" }

# ✓ PATCH para alterar só um campo
PATCH /usuarios/7
{ "nome": "Ana" }

Idempotência na prática

PUT é idempotente: repetir a mesma requisição dez vezes deixa o recurso no mesmo estado da primeira. Isso permite que um cliente reenvie com segurança depois de um erro de rede.

PATCH pode não ser. Um patch que diz 'some 1 ao contador' muda o resultado a cada repetição. Um patch que diz 'defina o nome como Ana' é idempotente. A semântica depende do formato adotado.

Como decidir

  • O cliente tem o recurso inteiro e quer gravá-lo: PUT
  • O cliente quer alterar um ou dois campos: PATCH
  • A operação precisa ser segura para reenviar após timeout: PUT
  • O formulário edita o objeto completo: PUT casa melhor com a tela
  • Na dúvida, PATCH: ele nunca apaga o que você não mencionou

Perguntas frequentes

Qual status devolver em uma atualização bem-sucedida?
200 com o recurso atualizado no corpo, ou 204 sem corpo. Use 201 apenas quando o PUT criou um recurso que ainda não existia, e devolva o header Location.
PATCH precisa de um formato específico?
As RFCs definem JSON Patch (application/json-patch+json) e JSON Merge Patch (application/merge-patch+json). Na prática, a maioria das APIs aceita um JSON parcial simples, o que equivale ao merge patch.

Resolva na prática

  • Cliente HTTP
  • Códigos de status HTTP
  • curl para código

Guias relacionados

  • 301 vs 302: qual redirecionamento usar e o impacto no SEO