Não sei ao certo mas nenhuma temporada aparece:
Não sei ao certo mas nenhuma temporada aparece:
Verifiquei digitação e acredito que o endpoint está sem erro de digitação.
O retorno do http://localhost:8080/series/2/temporadas/todas é um array vazio e o http://localhost:8080/series/2/temporadas/ da erro 404
Olá Guilherme!
Pelo que você descreveu e pela imagem que você compartilhou, parece que o seletor de temporadas não está exibindo as temporadas disponíveis. Vamos verificar alguns pontos que podem estar causando esse problema:
Verifique a URL no Controller:
Certifique-se de que a URL /temporadas/todas
está corretamente configurada no seu SerieController.java
. O código deve estar assim:
@GetMapping("/{id}/temporadas/todas")
public List<EpisodioDTO> obterTodasTemporadas(@PathVariable Long id){
return servico.obterTodasTemporadas(id);
}
Verifique o método no Service:
Certifique-se de que o método obterTodasTemporadas
no SerieService
está implementado corretamente e que ele está retornando os episódios. O código deve estar assim:
public List<EpisodioDTO> obterTodasTemporadas(Long id) {
Optional<Serie> serie = repositorio.findById(id);
if (serie.isPresent()) {
Serie s = serie.get();
return s.getEpisodios().stream()
.map(e -> new EpisodioDTO(e.getTemporada(), e.getNumeroEpisodio(), e.getTitulo()))
.collect(Collectors.toList());
}
return null;
}
Verifique o Front-end:
Certifique-se de que o front-end está fazendo a requisição correta para a URL /temporadas/todas
. Você pode verificar isso no console do navegador (pressionando F12 e indo para a aba "Network") para ver se a requisição está sendo feita e se está retornando os dados esperados.
Verifique o DTO:
Certifique-se de que o EpisodioDTO
está corretamente definido:
public record EpisodioDTO(Integer temporada, Integer numeroEpisodio, String titulo) {
}
Verifique o JavaScript: Certifique-se de que o JavaScript no front-end está tratando a resposta corretamente e populando o seletor de temporadas. Algo como:
fetch('/series/temporadas/todas')
.then(response => response.json())
.then(data => {
const seletor = document.getElementById('seletor-temporada');
data.forEach(temporada => {
const option = document.createElement('option');
option.value = temporada.temporada;
option.text = `Temporada ${temporada.temporada}`;
seletor.appendChild(option);
});
});
Espero que essas dicas ajudem a resolver o problema. Verifique cada um desses pontos e veja se alguma coisa está faltando ou configurada incorretamente.
Espero ter ajudado e bons estudos!
Olá!
Eu sei que provavelmente o erro está na minha cara mas não consigo enxergar kkkkkkkkk, minhas classes e metodos estão assim (https://github.com/guimaraesguii/Screen-Match/tree/fix-erro-404):
Controller:
@GetMapping("/{id}/temporadas/todas")
public List<EpisodioDTO> obterTodasTemporadas(@PathVariable Long id){
return service.obterTodasTemporadas(id);
}
Service:
public List<EpisodioDTO> obterTodasTemporadas(Long id) {
Optional<Serie> serie = repositorio.findById(id);
if (serie.isPresent()) {
Serie s = serie.get();
return s.getEpisodios().stream()
.map(e -> new EpisodioDTO(e.getTemporada(), e.getNumeroEpisodio(), e.getTitulo()))
.collect(Collectors.toList());
}
return null;
}
DTO:
public record EpisodioDTO(Integer temporada,
Integer numeroEpisodio,
String titulo) {
}
JavaScript:
getDados(`/series/${serieId}/temporadas/todas`)
.then(data => {
const temporadasUnicas = [...new Set(data.map(temporada => temporada.temporada))];
listaTemporadas.innerHTML = ''; // Limpa as opções existentes
const optionDefault = document.createElement('option');
optionDefault.value = '';
optionDefault.textContent = 'Selecione a temporada'
listaTemporadas.appendChild(optionDefault);
temporadasUnicas.forEach(temporada => {
const option = document.createElement('option');
option.value = temporada;
option.textContent = temporada;
listaTemporadas.appendChild(option);
});