如何在axios中进行api链调用?

问题描述 投票:0回答:1

我是一个新手,我需要得到所有艺人的结果,然后每个艺人都有封面、专辑和艺人信息的api url.所以有人能告诉我,在这个api调用中,我如何做一个连锁请求。

    "result": [
        {
            "id_artist": 70170,
            "artist": "Ameritz Karaoke Crew",
            "cover": "https://api.happi.dev//v1/music/cover/70170/artist",
            "api_artist": "https://api.happi.dev/v1/music/artists/70170",
            "api_albums": "https://api.happi.dev/v1/music/artists/70170/albums"
        },
javascript api axios chain
1个回答
0
投票

我的目的是创建一个函数,从你的结果中获取项目,并填充 cover, api_artistapi_albums 属性和各自的数据。

所以这里 populateArtistWithApiData 需要 artist 对象,进行必要的请求并填充该对象。

Promise.all 允许我等待所有艺术家的所有请求完成后再解析填充艺术家的数组。

function populateArtistWithApiData(artist) {
  return new Promise((resolve, reject) => {
    Promise
      .all([
        axios.get(artist.cover),
        axios.get(artist.api_artist),
        axios.get(artist.api_albums),
      ])
      .then(([cover, api_artist, api_albums]) => {
        artist.cover = cover;
        artist.api_artist = api_artist;
        artist.api_albums = api_albums;

        resolve(artist);
      });
  });
}

Promise.all(result.map((artist) => populateArtistWithApiData(artist))).then(
  (populatedArtists) => {
    // There you have the same `artist` objects as before with the properties `cover`,
    // `api_artist`, `api_albums` populated with the data
  }
);
© www.soinside.com 2019 - 2024. All rights reserved.