No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Marcar Fotos de Gatos Favoritas con API en Java

20/25
Recursos

¿Cómo marcar una foto de gato como favorita usando CatAPI?

Marcando una imagen de gato como favorita, podemos desarrollar una aplicación más interactiva y personalizada utilizando CatAPI. En esta guía, exploraremos cómo implementar un método POST para realizar esta acción, aprovechando una API que permite a los desarrolladores trabajar fácilmente con imágenes de gatos.

¿Qué necesitas saber antes de empezar?

Antes de sumergirnos en el código, es esencial entender los elementos básicos necesarios para marcar una foto de gato como favorita mediante CatAPI:

  1. API Key: Es una clave única que se utiliza para autorizar las peticiones a la API. Se debe obtener al registrarse en el servicio.
  2. Documentación de CatAPI: Es fundamental revisar la documentación para entender cómo se estructura una petición POST para marcar una imagen como favorita.

¿Cómo hacer una petición POST en CatAPI?

Para realizar una petición POST y marcar una imagen como favorita, debes seguir estos pasos:

  1. Abrir 'Postman': Esta herramienta facilita la creación y prueba de peticiones HTTP.
  2. Crear Nueva Petición POST: Dirigirla al endpoint de favoritos en CatAPI.
  3. Añadir Cabeceras:
    • Content-Type: Debe ser application/json o application/xml según la documentación.
    • x-api-key: Incluye tu API Key para la autorización.
  4. Establecer el Body de la Petición: Aquí es donde especificas el image_id de la foto de gato que deseas marcar como favorita.

Ejemplo de código en Java

A continuación se muestra cómo implementar la lógica en un proyecto Java para realizar la petición:

try {
    // Establecer la URL de la API
    URL url = new URL("https://api.thecatapi.com/v1/favourites");

    // Abrir conexión y configurar la cabecera
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("POST");
    con.setRequestProperty("Content-Type", "application/json");
    con.setRequestProperty("x-api-key", gato.getApiKey());
    
    // Cuerpo de la petición
    String jsonInputString = "{\"image_id\": \"" + gato.getImageId() + "\"}";

    // Enviar la petición
    con.setDoOutput(true);
    try(OutputStream os = con.getOutputStream()) {
        byte[] input = jsonInputString.getBytes("utf-8");
        os.write(input, 0, input.length);
    }

    // Leer la respuesta
    try (BufferedReader br = new BufferedReader(
        new InputStreamReader(con.getInputStream(), "utf-8"))) {
        StringBuilder response = new StringBuilder();
        String responseLine = null;
        while ((responseLine = br.readLine()) != null) {
            response.append(responseLine.trim());
        }
        System.out.println(response.toString());
    }

    // Manejo de excepciones
} catch (IOException e) {
    e.printStackTrace();
}

¿Cómo verificar si la operación fue exitosa?

Una vez enviada la petición, Postman o tu aplicación en Java debería darte una respuesta indicando que la imagen se ha guardado como favorita correctamente. Generalmente, recibirás un mensaje de confirmación con un status de éxito.

Motivación para seguir adelante

Desarrollar capacidades para interactuar con APIs como CatAPI abre un sinfín de posibilidades para proyectos personales y profesionales, desde aplicaciones móviles hasta sistemas personalizados de gestión de imágenes. No dejes de explorar, probar y mejorar tus habilidades de programación. ¡El aprendizaje continuo te llevará lejos en el mundo del desarrollo!

Aportes 22

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Error alert!!!
//Codigo del profesor a reemplazar :
//DE ::
image = ImageIO.read(url);
ImageIcon fondoGato = new ImageIcon(image);
//A ::
HttpURLConnection httpcon = (HttpURLConnection) url.openConnection();
httpcon.addRequestProperty(“User-Agent”, “”);
BufferedImage bufferedImage = ImageIO.read(httpcon.getInputStream());
ImageIcon fondoGato = new ImageIcon(bufferedImage);

El profe ocultando el apiKey, pero en los videos anteriores se ve claramente XD

The Create (MediaType, String) method of the RequestBody type is deprecated.
El metodo Tcreate(MediaType, String) del tipo RequestBody está en obsoleto o en desuso.

Se pueden reemplazar las siguientes lineas:

MediaType mediaType = MediaType.parse("application/json");
 RequestBody body = RequestBody.create(mediaType, "{\n\t\"image_id\":\""+gato.getId()+"\"\n}");

por está linea y eliminar la falla de seguridad

RequestBody body = RequestBody.create("{\n\t\"image_id\": \""+gato.getId()+"\"\n}",null);

Eliminarias la alerta Warnings y el aviso de deprecated. (Y)

Un consejo que tal vez llegue un poco tarde. Pueden evitar el tener que cortar los corchetes del JSON si en vez de convertir a la clase Gatos, convierten la respuesta de la API a un arreglo de esta misma clase de la siguiente forma:

//Cortando los corchetes (esto lo comentamos o lo borramos por que ya no se ocupara)
//elJson = elJson.substring(1, elJson.length());
//elJson = elJson.substring(0, elJson.length()-1);

//Antes esto estaba asi
// Gatos gatos = gson.fromJson(elJson, Gatos[].class);

/*
 Lo unico que hice fue agregar los corchetes a la parte que decia Gatos.class
 de esta forma haces que la libreria Gson espere un array de esa clase y no solo un objeto
 finalmente habras notado que puse [0] al final de esta linea, eso es para tomar el 1er elemento del array
*/

Gatos gatos = gson.fromJson(elJson, Gatos[].class)[0];

Listo! Genial 😃

![](

2022 y funcionando perfecto , ahora por la pagina muestra ya todo el proceso de postman paso por paso .

Este es el mismo video de “Mostrar favoritos”, que se encuentra dos videos más adelante

Estudiantes, actualicé el proyecto en mi repositorio aplicando mejores prácticas

Si alguien lo esta haciendo con thedogapi tenga en cuenta que debe solicitar un apikey para esta api, no sirve la misma del catapi. A mi me generó ese problema.
Solo debes buscar thedogapi en el navegador y eliges la opcion que dice Signup for an API key. Allí te la envían al correo.

chales despues del minuto 6:52 ya no entendi que hace

Hubiera sido bueno que explicaras como lidiar con los errores, para que la app no se cierre siempre que hay un error.

![](https://static.platzi.com/media/user_upload/image-b38e675d-e9ce-4695-a957-3b2859eb13ae.jpg) Así me quedó el código en el método: Favoritos: ```js public static void favoritoGato(GatosModel gatosModel){ try { OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\r\n \"image_id\": \""+ gatosModel.getId()+"\"\r\n}"); Request request = new Request.Builder() .url("https://api.thecatapi.com/v1/favourites") .method("POST", body) .addHeader("Content-Type", "application/json") .addHeader("x-api-key", gatosModel.getAPI_KEY()) .build(); Response response = client.newCall(request).execute(); } catch (IOException e) { System.out.println("Error: "+e); } } ``` public static void favoritoGato(GatosModel gatosModel){ try { OkHttpClient client = new OkHttpClient(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = RequestBody.create(mediaType, "{\r\n \\"image\_id\\": \\""+ gatosModel.getId()+"\\"\r\n}"); Request request = new Request.Builder() .url("https://api.thecatapi.com/v1/favourites") .method("POST", body) .addHeader("Content-Type", "application/json") .addHeader("x-api-key", gatosModel.getAPI\_KEY()) .build(); Response response = client.newCall(request).execute(); } catch (IOException e) { System.out.println("Error: "+e); } }
![](https://static.platzi.com/media/user_upload/image-e6d98165-2517-40d6-81e4-bda2e72b5077.jpg) Feliz, porque hasta ahora, todo corre, todo compila, sin errores, y la verdad, cuando había un bug, toca investigar, lo bueno es que la comunidad de java apoya mucho mediante foros en línea, entre diferentes aportes y usos de librerías, justo estaba realizando pruebas con Gson y con ObjectMapper, son similares
Pesima explicacion isque tapanado esa clave perdimos mas explicacion
Quien sabe si santiago leera estos comentarios lo mas probable es que no pero de serlo asi , solo tomarse los comentarios a forma reflexiva y en futuros cursos mejorar la manera de enseñar.

Creo que ya no funciona la API para marcar favorito, cuando envio la peticion en Postman me sale error 404:

{
    "message": "404 - please consult the documentation for correct url to call. https://docs.thecatapi.com/"
}

En postman puedes tener variables de entorno para no estar copiando y pegando todo el tiempo el ApiKey o Tokens …

Genial

Entonces cada vez que utilicemos una API debemos estar al tanto de sus funcionalidades por medio de la lectura de su documentación, así podremos aprovecharla al máximo. Muchas gracias por la clase instructor Santiago.

Excelente explicación, muy buena

Excelente aprendiendo a usar API’s por primera vez, ya veo que funcionan al igual que practica mente todo en el software como una función que decides que usar y que no. Con tener la documentación en mano puede implementar lo que necesites.

a que se refiere con decir que esta quemada la APIKEY ??? la apikey ya sirve???