es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo consumir un punto de conexión de API que requiere datos de otro punto de conexión de API (dog.ceo)?

Cómo consumir una API usando otra API.

var url_1 = 'https://dog.ceo/api/breeds/list/all';

fetch(url_1)
     .then(response => response.json())
     .then(data => {
const breeds = data.message;
var arr = [];

for (var b in breeds) {
      arr.push({
           breed : b,
           subBreeds : [
             breeds[b][0]
           ],
          images : [{
            url: ''
          }]
      })
  }

También tengo esta otra API, de donde extraigo las imágenes de cada raza de perro, pero aquí necesitas la variable que sería el nombre de la raza del perro.

var url_2 = 'https://dog.ceo/api/breed/{nombre_raza}/images';

fetch(url_2)
   .then(response => response.json())
   .then(data => {
      const images = data.message;
      var arr_images = [];  

   for (var i in images) {
        arr_images.push({
          images : [{
            url: images[i]
          }]    
        })
    }

Entonces, lo que no sé es cómo puedo juntar para enviar el nombre de la raza del perro a la segunda API para consumirla.

Y cómo puedo unir el arreglo de las imágenes con el arreglo anterior.

Debería ser algo así:

{ "breed": "Hound", 
  "subBreeds": [ 
    "subRazaA", 
    "subRazaB", 
    "subRazaC" 
   ], 
  "images":[
     {"url":"http://alguna.url.com"},
     {"url":"http://alguna.otra.url"}
   ]
}

Espero haber sido claro, gracias por tu ayuda, estaré muy agradecido.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para consumir de una API con otra API, puedes utilizar los datos que recibes de la primera llamada API y utilizarlos como parámetro para la segunda llamada API. En este caso, puedes iterar a través del arreglo de razas y por cada raza, hacer una solicitud a la segunda API pasando el nombre de la raza como parámetro.

    Aquí tienes un ejemplo de cómo hacerlo:

    fetch(url_1)
      .then(response => response.json())
      .then(data => {
        const breeds = data.message;
        var arr = [];
    
        for (var b in breeds) {
    
          // Hacer una solicitud a la segunda API por cada raza
          fetch(`https://dog.ceo/api/breed/${b}/images`)
            .then(response => response.json())
            .then(imgData => {
    
              var breedImages = [];
    
              // Recorrer las imágenes y crear un arreglo de objetos de imágenes
              for (var i in imgData.message) {
                breedImages.push({
                  url: imgData.message[i]
                });
              }
    
              // Agregar el objeto de raza al arreglo arr
              arr.push({
                breed: b,
                subBreeds: breeds[b],
                images: breedImages
              });
            });
        }
      });
    

    En este ejemplo, utilizamos la API fetch para realizar la solicitud inicial a la primera API y obtener una lista de todas las razas. Para cada raza, hacemos una solicitud a la segunda API utilizando interpolación de cadenas para agregar el nombre de la raza a la URL.

    Una vez que obtenemos la respuesta de la segunda API, recorremos las imágenes y creamos un arreglo de objetos de imágenes, luego agregamos el objeto de raza al arreglo arr. El resultado final será un arreglo de objetos de razas, cada uno con sus respectivas sub-razas e imágenes.

Comments are closed.