ANÚNCIO

~/questoes/programacao

Em uma API RESTful, qual método HTTP deve ser usado para atualizar um recurso existente?

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

Métodos HTTP para Atualizar Recursos em APIs RESTful

Conceito central

Em uma API RESTful, os métodos HTTP definem qual ação será realizada com um recurso. Para atualizar dados existentes, devemos usar PUT ou PATCH, que são métodos específicos para modificação, enquanto POST é para criar novos registros e GET apenas para consultar.

Por que essa resposta faz sentido

PUT e PATCH são os métodos HTTP corretos para atualizar recursos existentes. PUT substitui o recurso inteiro, enquanto PATCH atualiza apenas partes dele. Ambos informam claramente que a intenção é modificar algo que já existe, seguindo os padrões REST.

Armadilhas comuns

  • Confundir POST com atualização: POST sempre cria novos registros, nunca atualiza existentes
  • Usar GET para modificar dados: isso quebra a semântica HTTP e causa problemas de cache e segurança
  • Não diferenciar PUT e PATCH: ambos atualizam, mas PUT substitui tudo e PATCH é parcial. No Laravel, ambos são válidos dependendo do caso de uso

Entenda as alternativas

A

PUT e PATCH são os métodos apropriados. PUT envia o recurso completo para substituição, enquanto PATCH permite enviar apenas os campos que mudaram. Essa distinção é importante para otimizar o tráfego de dados e deixar claro qual tipo de atualização está sendo feita.

B

POST é usado para criar novos recursos, não para atualizar existentes. Usar POST em um recurso já criado criaria duplicatas ou causaria confusão sobre a intenção da requisição. A semântica HTTP seria violada.

C

DELETE remove um recurso completamente. Remover e recriar não é uma atualização, é uma operação destrutiva desnecessária que perderia referências externas e causaria problemas de integridade de dados.

D

GET só recupera dados, não modifica nada. Modificar dados com GET violaria o princípio fundamental de que requisições GET devem ser seguras e idempotentes (não causarem efeitos colaterais).

Dica prática: Ao implementar rotas no Laravel, use `Route::put()` ou `Route::patch()` nos seus resource routes. Por exemplo, `Route::patch('/usuarios/{id}', 'UsuarioController@update')` deixa claro que está atualizando um usuário específico, seguindo as convenções REST.

Revise pensando: Se você quer atualizar apenas o email de um usuário sem enviar todas as outras informações dele, qual método HTTP é mais apropriado: PUT ou PATCH? Por quê?