Na aula em que foi mostrado como receber dados via post, não estou conseguindo retornar o nome do curso. Percebi também que o retorno tem a data de criação e o ID apenas. Conseguiriam me ajudar, por favor?
O JSON que mando no Postman: { "titulo": "Duvida postman e HTML", "mensagem": "Texto da mensagem HTML", "nomeCurso": "HTML 5" }
O que a API retorna: {"id":4,"titulo":"Duvida postman e HTML","mensagem":"Texto da mensagem HTML","dataCriacao":"2021-02-17T01:25:04.3967158"}
Segue a classe: CursoRepository: public interface CursoRepository extends JpaRepository<Curso, Long>{
Curso findByNome(String nomeCurso);
}
-- TopicoController RestController @RequestMapping("/topicos") public class TopicosController {
@Autowired
private TopicoRepository topicoRepsitory;
@Autowired
private CursoRepository cursoRepository;
@GetMapping
public List<TopicoDto> lista(String nomeCurso){ //parametroURL da Query
// Topico topico = new Topico("Duvida", "Duvida com String", // new Curso("Spring", "Programação"));
if (nomeCurso == null) {
List<Topico> topicos = topicoRepsitory.findAll();
return TopicoDto.converter(topicos);
} else {
List<Topico> topicos = topicoRepsitory.findByCursoNome(nomeCurso);
return TopicoDto.converter(topicos);
}
}
@PostMapping
//ResponseEntity retornando codido 201 HTTP, CREATED.
public ResponseEntity<TopicoDto> cadastrar (@RequestBody TopicoForm form, UriComponentsBuilder uriBuilder) {
Topico topico = form.converter(cursoRepository);
topicoRepsitory.save(topico);
URI uri = uriBuilder.path("/topicos/{id}").buildAndExpand(topico.getId()).toUri();
return ResponseEntity.created(uri).body(new TopicoDto(topico));
}
}
--TopicoForm public class TopicoForm {
private String titulo;
private String mensagem;
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);
}
--Topico DTO public class TopicoDto { private Long id; private String titulo; private String mensagem; private LocalDateTime dataCriacao;
public TopicoDto(Topico topico) {
this.id = topico.getId();
this.setTitulo(topico.getTitulo());
this.mensagem = topico.getMensagem();
this.dataCriacao = topico.getDataCriacao();
}
public Long getId() {
return id;
}
public String getMensagem() {
return mensagem;
}
public LocalDateTime getDataCriacao() {
return dataCriacao;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public static List<TopicoDto> converter(List<Topico> topicos) {
//API Stream Java8+
return topicos.stream().map(TopicoDto::new).collect(Collectors.toList());
}