Primeiro não aparece a opção para criar um tópico no fórun deste curso: SPRING BOOT API REST: CONSTRUA UMA API.
Segundo gostaria de saber o pq do meu teste não estar parecido com o da aula. Abaixo o meu teste.
Agora o teste da aula:
Primeiro não aparece a opção para criar um tópico no fórun deste curso: SPRING BOOT API REST: CONSTRUA UMA API.
Segundo gostaria de saber o pq do meu teste não estar parecido com o da aula. Abaixo o meu teste.
Agora o teste da aula:
TopicoForm.java
package br.com.alura.forum.controller.form;
import org.hibernate.validator.constraints.Length;
import br.com.alura.forum.modelo.Curso;
import br.com.alura.forum.modelo.Topico;
import br.com.alura.forum.repositiry.CursoRepository;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
public class TopicoForm {
@NotNull @NotEmpty @Length(min = 5)
private String titulo;
@NotNull @NotEmpty @Length (min = 5)
private String mensagem;
@NotNull @NotEmpty
private String nomeCurso;
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getMensagem() {
return mensagem;
}
public void setMensagem(String mensagem) {
this.mensagem = mensagem;
}
public String getNomeCurso() {
return nomeCurso;
}
public void setNomeCurso(String nomeCurso) {
this.nomeCurso = nomeCurso;
}
public Topico converter(CursoRepository cursoRepository) {
Curso curso = cursoRepository.findByNome(nomeCurso);
return new Topico (titulo, mensagem, curso);
}
}
ErroDeValidacaoHandler
package br.com.alura.forum.config.validacao;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.http.HttpStatus;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class ErroDeValidacaoHandler {
@Autowired
private MessageSource messageSource;
@ResponseStatus(code = HttpStatus.BAD_REQUEST)
@ExceptionHandler(MethodArgumentNotValidException.class)
public List<ErroDeFormularioDto> handle(MethodArgumentNotValidException exception) {
List <ErroDeFormularioDto> dto = new ArrayList<> ();
List<FieldError> fieldErrors = exception.getBindingResult().getFieldErrors();
fieldErrors.forEach(e -> {
String mensagem = messageSource.getMessage(e, LocaleContextHolder.getLocale());
ErroDeFormularioDto erro = new ErroDeFormularioDto (e.getField(), mensagem);
});
return dto;
}
}
ErroDeFormularioDto
package br.com.alura.forum.config.validacao;
public class ErroDeFormularioDto {
String campo;
String erro;
public ErroDeFormularioDto(String campo, String erro) {
this.campo = campo;
this.erro = erro;
}
public String getCampo() {
return campo;
}
public String getErro() {
return erro;
}
}
Olá Getúlio! Tudo bem?
Não aparece a opção de criar tópicos no curso que você mencionou porque ele foi regravado, então os novos tópicos devem ser criados na nova versão do curso: https://cursos.alura.com.br/course/spring-boot-3-desenvolva-api-rest-java
Sobre o resultado do Postman, verifica por favor se você adicionou @Valid
antes do Topico, no seu método Post, na classe Controller. É essa anotação que chama a validação com o Bean Validation. Se não for isso e quiser compartilhar o seu código no Github pra eu testar, fique à vontade.
Qualquer dúvida, estou à disposição! :)
Abraços e bons estudos!