我正在使用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.js
。 config.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 };