【问题标题】:Json Response Empty - Spotify APIJson 响应为空 - Spotify API
【发布时间】:2021-03-07 09:04:30
【问题描述】:
search(term) {
        //Spotify.getAccessToken() will RETURN accessToken from previous method.
        const accessToken = Spotify.getAccessToken();
        
        //Remember to RETURN the fetch
        return fetch(`https://api.spotify.com/v1/search?type=track&q=${term}`, {
            headers: {
                'Authorization': `Bearer ${accessToken}`
            }
        })
        .then(response => {
            if (response.ok) {
                console.log(response);
                return response.json;
            };
            throw new Error('Request failed!');
        }, networkError => {
            console.log(networkError.message);
        })
        .then(jsonResponse => {
            if (!jsonResponse.tracks) {
                return [];
            };
            return jsonResponse.tracks.items.map(track => ({
                    id: track.id, 
                    name: track.name,
                    artists: track.artists[0].name,
                    album: track.album.name,
                    uri: track.uri

            }));
        });
    }

在这种方法中,当我发送 GET 请求时,控制台会记录初始响应,但是当我检查响应的实际内容时,它是空的并且不包含任何轨道。然而,当我键入端点 url(在 fetch() 中指定)时,我可以在浏览器中看到结果。几个小时以来,我一直在努力寻找解决方案,但我看不出我做错了什么。

谢谢。

【问题讨论】:

    标签: javascript spotify


    【解决方案1】:

    在 promise 上链接一个 .catch 并控制错误,哦,顺便说一句,你应该返回一个 response.json() 就像那里的一个函数,而不仅仅是 response.json

    【讨论】:

    • 该死,这么简单的解决方案解决了一个耗费我数小时时间的问题哈哈。谢谢你。 .catch() 是什么意思 - 如果我之前抛出一个新错误,为什么有必要?
    • 捕获是为了捕获抛出的错误,对这个 Promise 的捕获将描述你抛出或从 Promise 中抛出的任何错误。它们不是必需的,但会为您提供一些有关解决承诺时发生的错误的信息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 2021-06-24
    • 2015-11-24
    • 1970-01-01
    相关资源
    最近更新 更多