Olá a todos.
Quando estava usando Spring Boot com Java, no eu consegui pegar a validação de nome de campo. Exemplo tenho uma classe
public class Carro{
String nome;
String cor;
}
e digamos que vou mandar uma requisição via Postman para cadastrar um novo carro e bando e requisição via Body da sequente forma
{
"nome" : "UNO",
"corrr": "VERMELHO"
}
Como meu mandei um campo que não existe no casso corrr o Kotlin não consegue fazer a conversão automática e lança um erro.Em java eu conseguia pegar esse erro e responder uma requisição falando que o campo corrr não existe .
Eu utilizava assim. Existe algo semelhante em Kotlin que possa fazer ?
@Override
protected ResponseEntity<Object> handleHttpMessageNotReadable(HttpMessageNotReadableException ex,
HttpHeaders headers, HttpStatus status, WebRequest request) {
Throwable rootCause = ExceptionUtils.getRootCause(ex);
if (rootCause instanceof InvalidFormatException) {
return handleInvalidFormat((InvalidFormatException) rootCause, headers, status, request);
} else if (rootCause instanceof PropertyBindingException) {
return handlePropertyBinding((PropertyBindingException) rootCause, headers, status, request);
} else if (rootCause instanceof MethodArgumentNotValidException) {
return handleMethodArgumentNotValid((MethodArgumentNotValidException) rootCause, headers, status, request);
}
ProblemType problemType = ProblemType.MENSAGEM_INCOMPREENSIVEL;
String detail = "O corpo da requisição está inválido. Verifique erro de sintaxe.";
Problem problem = createProblemBuilder(status, problemType, detail)
.userMessage(MSG_ERRO_GENERICA_USUARIO_FINAL)
.build();
return handleExceptionInternal(ex, problem, headers, status, request);
}
private ResponseEntity<Object> handlePropertyBinding(PropertyBindingException ex,
HttpHeaders headers, HttpStatus status, WebRequest request) {
String path = joinPath(ex.getPath());
ProblemType problemType = ProblemType.MENSAGEM_INCOMPREENSIVEL;
String detail = String.format("A propriedade '%s' não existe. "
+ "Corrija ou remova essa propriedade e tente novamente.", path);
Problem problem = createProblemBuilder(status, problemType, detail)
.userMessage(MSG_ERRO_GENERICA_USUARIO_FINAL)
.build();
return handleExceptionInternal(ex, problem, headers, status, request);
}
private String joinPath(List<Reference> references) {
return references.stream()
.map(ref -> ref.getFieldName())
.collect(Collectors.joining("."));
}