nord vpnnord vpn
Ad

Untitled

mail@pastecode.io avatar
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");
        }
    }

nord vpnnord vpn
Ad