4
respostas

Erro API

Olá,

Testo o H2 console e os dados estão inseridos na tabela, porém quando subo a aplicação e testo localhost:8080/topicos ele me retorna nulo...o que pode estar acontecendo?

4 respostas

Oi Carolina,

Posta aqui o codigo da classe TopicosCntroller e da classe TopicosDto.

package br.com.alura.forum.controller;

import br.com.alura.forum.modelo.Curso;
import br.com.alura.forum.modelo.Topico;
import br.com.alura.forum.repository.TopicosRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

@RestController
public class TopicosController {

    @Autowired
    private TopicosRepository topicosRepository;

    @RequestMapping("/topicos")
    public List<TopicosDto> lista() {

        List<Topico> topicos = topicosRepository.findAll();
        return TopicosDto.converter(topicos);
    }

}
package br.com.alura.forum.controller;

import br.com.alura.forum.modelo.Topico;

import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;

public class TopicosDto {

    private Long id;
    private String titulo;
    private String mensagem;
    private LocalDateTime dataCriacao;

    public TopicosDto(Topico topico) {
        this.id = id;
        this.titulo = titulo;
        this.mensagem = mensagem;
        this.dataCriacao = dataCriacao;
    }

    public static List<TopicosDto> converter(List<Topico> topicos) {
        return topicos.stream().map(TopicosDto::new).collect(Collectors.toList());
    }

    public Long getId() {
        return id;
    }

    public String getTitulo() {
        return titulo;
    }

    public String getMensagem() {
        return mensagem;
    }

    public LocalDateTime getDataCriacao() {
        return dataCriacao;
    }
}

Tem um erro no seu construtor:

public TopicosDto(Topico topico) {
    this.id = id;
    this.titulo = titulo;
    this.mensagem = mensagem;
    this.dataCriacao = dataCriacao;
}

Ele deveria estar assim:

public TopicosDto(Topico topico) {
    this.id = topico.getId();
    this.titulo = topico.getTitulo();
    this.mensagem = topico.getMensagem();
    this.dataCriacao = topico.getDataCriacao();
}

poxa era isso :/ muito obrigada :D