Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

277
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda