为什么我从Marvel API收到InvalidCredentials错误?

时间:2018-05-30 12:11:00

标签: reactjs api create-react-app

我正在使用create-react-app和Marvel to Marvel API构建一个简单的应用程序。该应用只需要显示一个字符列表。这是我第一次尝试这样做,所以我对环境文件不是很熟悉。

我在.env中有一个/src文件,其中包含这两个密钥而不是其他内容:

REACT_APP_PUBLIC_KEY='publicKey' REACT_APP_PRIVATE_KEY='privateKey'

同样在/src我有/config/config.js。然后将config.js导入App.jsconfig.js看起来像这样:

const marvelURL = 'https://gateway.marvel.com/v1/public/',
      apiKey = `apikey=${process.env.REACT_APP_PUBLIC_API_KEY}`;

const getCharacters = (options) => {
const {
    offset,
    name,
    exactMatch,
    sortName,
    limit,
} = Object.assign({
    offset: 0,
    name: '',
    exactMatch: false,
    limit: 20,
}, options);

let url = `${marvelURL}characters?${apiKey}&offset=${offset}&orderBy=${sortName}name&limit=${limit}`;

if (name) {
    if (exactMatch) {
        url += `&name=${name}`;
    } else {
        url += `&nameStartsWith=${name}`;
    }
}

return fetch(url)
.then(res => res.json())
.then((resObj) => {
    try {
        if (resObj.code === 200) {
            if (offset > resObj.data.total) {
                throw new Error('This page does not exist.');
            } else {
                const pages = Math.floor(resObj.data.total / limit);
                return {
                    characters: resObj.data.results,
                    maxPage: resObj.data.total % limit > 0 ? pages + 1 : pages,
                };
            }
        } else {
            throw new Error(`Bad response from API. Status code ${resObj.code}.`);
        }
    } catch (e) {
        console.error(e);
        return {
            characters: [],
            maxPage: 0,
        };
    }
});
}

export { getCharacters };

0 个答案:

没有答案