0
respostas

Dúvida sobre uso de PATCH vs PUT e Spring Security retornando Method Not Allowed

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.