Meu código está idêntico ao do professor, e mesmo assim, quando disparo um cadastro que não contém os campos obrigatórios ele da ERROR 500 ao invés do 400, não sei o que pode ser, já reescrevi tudo o que podia, segue abaixo como está o meu código (estou fazendo outro tipo de sistema de cadastro por isso alguns campos são diferentes):
package com.sistemacadastro.api.infra;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class TratadorDeErros {
@ExceptionHandler(EntityNotFoundException.class)
public ResponseEntity tratarErro404() {
return ResponseEntity.notFound().build();
}
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity tratarErro400() {
return ResponseEntity.badRequest().build();
}
}
package com.sistemacadastro.api.domain.usuario;
import com.sistemacadastro.api.domain.endereco.DadosEndereco;
import jakarta.validation.Valid;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
public record DadosCadastroUsuario(
@NotBlank
String nome,
@NotBlank
String email,
@NotBlank
@Pattern(regexp = "\\d{11}")
String cpf,
@NotBlank
@Pattern(regexp = "\\d{11}")
String celular,
@NotNull
@Valid
DadosEndereco endereco) {
}
a parte do código do tratarErro400 está da maneira inicial ainda, mas já deveria mostrar erro 400 no Insomnia, já recarreguei a maven pra ver se era problema no plugin, e já até reinseri o código da dependency no arquivo pom.xml e mesmo assim, continua retornando código 500. Algo estranho que aconteceu também, foi que a primeira vez eu fiz um teste com os campos no JSON assim:
{
"nome": "",
"email": "",
"cpf": "",
"celular" : "",
"endereco": {
"cep": "12345678",
"uf": "SP",
"cidade": "São Paulo",
"bairro": "bairro",
"logradouro": "rua 2"
}
}
ele foi salvo no banco de dados (lembrando que os campos estão marcados como @NotBlank no DadosUsuarioCadastro)
campo da dependency no arquivo pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>