Untitled
unknown
plain_text
2 months ago
3.6 kB
1
Indexable
Never
@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"); } }