Estou implementando a camada de usuários em uma API REST com Spring Boot + Spring Security, seguindo boas práticas de arquitetura e REST.
Tenho um endpoint para atualização parcial do perfil do usuário, onde apenas alguns campos podem ser alterados (ex: nome e email) ou qualquer outro dado que o usuário deseja alterar:
PATCH /user/{id}
O controller está assim:
@PatchMapping("/{id}")
public UserProfileResponseDTO updateProfileUser(
@PathVariable UUID id,
@RequestBody @Valid UserUpdateProfileDTO dto
) {
return service.updateProfile(id, dto);
}
Porém, ao chamar esse endpoint, recebo:
HttpRequestMethodNotSupportedException: Request method 'PATCH' is not supported
Suspeito que o problema esteja na configuração do Spring Security, possivelmente bloqueando o método HTTP PATCH.
Minhas dúvidas são:
O uso de PATCH está correto para atualização parcial de um recurso (ex: atualizar apenas nome e email do usuário)?
Esse erro de Method Not Allowed pode ser causado pelo Spring Security não liberar o método PATCH explicitamente?
Seria correto trocar para PUT mesmo enviando apenas campos parciais, ou isso violaria a semântica REST?
Qual é a forma recomendada de liberar PATCH corretamente no Spring Security?
Contexto importante:
Estou evitando sobrescrever o recurso inteiro (por isso não quero PUT)
O update é feito carregando a entidade do banco e alterando apenas os campos enviados
O foco é seguir boas práticas REST e decisões arquiteturais corretas, não apenas “fazer funcionar”
Agradeço se puderem confirmar a abordagem correta e o ajuste recomendado no Spring Security.