Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

276
Vistas
¿Cómo consumir un punto final de API que requiere datos de otro punto final de API (dog.ceo)?

cómo consumir de una api con 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/{breed_name}/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é, ¿cómo puedo unirme para enviar el nombre de la raza del perro a la segunda api para consumirlo?

¿Y cómo puedo unir el arreglo de las imágenes con el arreglo de arriba?

debería ser algo como esto

 { "breed": "Hound", "subBreeds": [ "subBreedA", "subBreedB", "subBreedC" ], "images":[ {"url":"http://some.url.com"}, {"url":"http://some.other.url"} ] }

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

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Lo dividiría en funciones separadas para que pueda concentrarse en una parte a la vez. Luego, combínelos para obtener todos los datos que desee. De esta forma, también puedes reutilizar cada función en caso de que quieras usar los datos de una manera diferente:

Parque infantil TS

 // dog.ceo API async function fetchDogApiResult (apiPath) { const response = await fetch(`https://dog.ceo/api/${apiPath}`); if (!response.ok) throw new Error(`Response not OK (${response.status})`); const data = await response.json(); if (data.status !== 'success') throw new Error('Response not successful'); return data.message; } async function fetchBreeds () { return fetchDogApiResult('breeds/list/all'); } async function fetchSubBreeds (breed) { return fetchDogApiResult(`breed/${breed}/list`); } async function fetchImages (breed, subBreed) { return fetchDogApiResult(`breed/${breed}${subBreed ? `/${subBreed}` : ''}/images`); } async function fetchDogData () { const breeds = await fetchBreeds(); return Promise.all(Object.entries(breeds).map(async ([breed, subBreeds]) => ({ breed, subBreeds, images: (await fetchImages(breed)).map(url => ({url})), }))); } (async () => { const dogData = await fetchDogData(); console.log(JSON.stringify(dogData)); })();

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar async/await para llamar a la segunda API en la segunda then en la primera API, después de obtener datos de la segunda API, puede usar for loop para ellos. como esto

 var url_1 = 'https://dog.ceo/api/breeds/list/all'; fetch(url_1) .then( response => response.json()) .then(async data => { const breeds = data.message; const resUrl2 = await fetch(url_2) const dataUrl2 = await resUrl2.json() var arr = []; for (var b in breeds) { arr.push({ breed : b, subBreeds : [ breeds[b][0] ], images : [{ url: '' }] }) } const images = dataUrl2.message; var arr_images = []; for (var i in images) { arr_images.push({ images : [{ url: images[i] }] }) } })
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda