Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] O spring não está fazendo a validação de dados adicionais

Quando eu faço essa requisição:

PUT: http://localhost:8080/pacientes
{
            "id": 1,
            "email": "mudeiemail@EMAIL.COM"
}

Retorna status 200, mas não atualiza nada, o que é o esperado. O problema é que retorna um status 200, não deveria retornar um erro 400? Eu não posso passar a propriedade email.

package med.voll.api.paciente;

import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import med.voll.api.endereco.EnderecoRecord;

public record UpdatePacienteDTO(
        @NotNull
        Long id,
        String nome,
        String telefone,
        @Valid
        EnderecoRecord endereco
) {
}

O spring boot não faz essa validação? Eu teria que fazer essa validação, no caso? Ou não seria uma boa prática fazer essa validação?

1 resposta
solução!

Oi Thiago!

No seu Record não tem o campo email, então o Spring simplesmente ignora. Todos os campos que são enviados no json mas que não existem na classe/Record que representa os dados chegando na requisição são ignorados.

Acho que nesse caso não faz sentido validar isso, pois se o email não pode ser atualizado basta não o declarar no record, da forma como foi feita no curso, pois assim mesmo que a pessoa tente forçar a atualização, enviando o campo no json, ela não vai conseguir, pois a API vai ignorar.

Bons estudos!