Untitled
unknown
plain_text
2 years ago
3.6 kB
11
Indexable
@GetMapping("/api-call")
public ResponseEntity<String> makeAPICall() {
RestTemplate restTemplate = new RestTemplate();
try {
// Realiza la solicitud GET a la API
String jsonResponse = restTemplate.getForObject(apiUrl, String.class);
// Analiza la respuesta JSON para obtener el campo 'data'
ObjectMapper objectMapper = new ObjectMapper();
JsonNode root = objectMapper.readTree(jsonResponse);
JsonNode charactersNode = root.get("data").get("results");
if (charactersNode != null) {
for (JsonNode characterNode : charactersNode) {
String descripcionOriginal = characterNode.get("description").asText();
int longitudMaxima = 255;
String descripcionTruncada = truncarCadena(descripcionOriginal, longitudMaxima);
MarvelCharacter character = new MarvelCharacter();
character.setName(characterNode.get("name").asText());
character.setDescription(descripcionTruncada);
character.setImage(characterNode.get("thumbnail").get("path").asText() + "."
+ characterNode.get("thumbnail").get("extension").asText());
marvelService.saveCharacter(character);
JsonNode comicsNode = characterNode.get("comics").get("items");
JsonNode seriesNode = characterNode.get("series").get("items");
for (JsonNode comicNode : comicsNode) {
String comicName = comicNode.get("name").asText();
// Crea la instancia de Comic y ComicCharacterAssociation
Comic comic = new Comic();
comic.setName(comicName);
ComicCharacterAssociation comicCharacterAssociation = new ComicCharacterAssociation();
comicCharacterAssociation.setCharacter(character);
comicCharacterAssociation.setComic(comic);
// Guarda el cómic y la relación
comicRepository.save(comic);
comicCharacterAssociationRepository.save(comicCharacterAssociation);
}
for (JsonNode serieNode : seriesNode) {
String seriesName = serieNode.get("name").asText();
// Crea la instancia de Series y SeriesCharacterAssociation
Series series = new Series();
series.setName(seriesName);
SeriesCharacterAssociation seriesCharacterAssociation = new SeriesCharacterAssociation();
seriesCharacterAssociation.setCharacter(character);
seriesCharacterAssociation.setSeries(series);
// Guarda la serie y la relación
seriesRepository.save(series);
seriesCharacterAssociationRepository.save(seriesCharacterAssociation);
}
}
return ResponseEntity.ok("Datos de personajes guardados en base de datos");
} else {
return ((BodyBuilder) ResponseEntity.notFound()).body("El campo 'data' no se encontró");
}
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error al llamar a la API");
}
}Editor is loading...