Tengo el siguiente inconveniente, al cargar cualquier API me muestra los resultados correctamente pero al cargar la de Gutendex, no me arroja ningún resultado según POSTMAN se demora la consulta entre 11 a 13 seg. no se si por esa razón la descarte la consulta, aunque se supone que el código de la clase API es asíncrono. mi código solo para probar que traiga el string de la API es el siguiente: Clase Principal:
package com.alura.literalura.principal;
import com.alura.literalura.models.DatosLibro;
import com.alura.literalura.services.ConsumoAPI;
import com.alura.literalura.services.ConvierteDatos;
import java.util.Scanner;
public class Principal {
private Scanner teclado = new Scanner(System.in);
private ConsumoAPI consumoApi = new ConsumoAPI();
private ConvierteDatos conversor = new ConvierteDatos();
// private static final String URL_BASE ="https://swapi.dev/api/films/1/";
// private static final String URL_BASE = "https://gutendex.com/books/?search=Great%20Expectations";
private static final String URL_BASE = "https://stephen-king-api.onrender.com/api/books";
public void muestraElMenu(){
var opcion = -1;
while (opcion != 0){
var menu= """
1 - Buscar Libro por titulo
2 - Listar libros registrados
3 - Listar autores registrados
4 - Listar autores vivos en un determinado año
5 - Listar libros por idioma
0 - Salir
""";
System.out.println(menu);
opcion = teclado.nextInt();
switch (opcion){
case 1:
buscarLibroPorTitulo();
break;
case 0:
System.out.println("Saliendo del programa");
break;
default:
System.out.println("Opción inválida");
}
}
}
private void getDatosLibro() {
//System.out.println("Escribe el nombre del libro que deseas buscar");
//var nombreLibro = teclado.nextLine();
var json = consumoApi.obtenerDatos(URL_BASE);
System.out.println(json + "resultados devueltos");
//return conversor.obtenerDatos(json, DatosLibro.class);
}
private void buscarLibroPorTitulo() {
getDatosLibro();
}
}
Clase ConsumoApi
package com.alura.literalura.services;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ConsumoAPI {
public String obtenerDatos(String url){
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.build();
try {
HttpResponse<String> response = client
.send(request, HttpResponse.BodyHandlers.ofString());
String json = response.body();
return json;
} catch (IOException | InterruptedException e) {
throw new RuntimeException(e);
}
}
}
Clase LiteraluraApplication
package com.alura.literalura;
import com.alura.literalura.principal.Principal;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication()
public class LiteraluraApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(LiteraluraApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
Principal principal = new Principal();
principal.muestraElMenu();
}
}
Ya probe con otras API y los resultados los traer normal, pero con Gutendex no, y veo que esa API demora mucho en devolver las respuestas. como puedo solucionar ese problema.