Javascript 我正在尝试使用从一个axios get请求中提取的数据向Google Books API发出一系列axios get请求
我在MongoDB上有一个数据库,其中包含有关书籍的信息。在react中,我向该数据库发出一个axios get请求,并检索一个包含20个对象的数组。我用该数组的值更新state。我的目标是通过该数组进行映射,并使用数组中每个项目的isbn编号,向GoogleBooksAPI发出get请求。我想将我数据库中的isbn号与谷歌数据库中的isbn号进行匹配,以检索每本书的封面图像。但是,当我发出第二个axios请求时,有时会成功,但有时会出现以下错误: createError.js:17未捕获(承诺中)错误:请求失败,状态代码403位于createError(createError.js:17)处,状态代码403位于XMLHttpRequest.handleLoad处的结算(结算.js:19) 我尝试使用本文中的解决方案: 我想我的问题与此类似:Javascript 我正在尝试使用从一个axios get请求中提取的数据向Google Books API发出一系列axios get请求,javascript,mongodb,express,axios,Javascript,Mongodb,Express,Axios,我在MongoDB上有一个数据库,其中包含有关书籍的信息。在react中,我向该数据库发出一个axios get请求,并检索一个包含20个对象的数组。我用该数组的值更新state。我的目标是通过该数组进行映射,并使用数组中每个项目的isbn编号,向GoogleBooksAPI发出get请求。我想将我数据库中的isbn号与谷歌数据库中的isbn号进行匹配,以检索每本书的封面图像。但是,当我发出第二个axios请求时,有时会成功,但有时会出现以下错误: createError.js:17未捕获(承诺
类图书列表扩展组件{
建造师(道具){
超级(道具);
此.state={
数据:[],
谷歌缩略图:[]
};
this.showBooks=this.showBooks.bind(this);
}
展览品(){
让url=“”;
if(process.env.NODE_env==“生产”){
url=process.env.DB_url;
}否则{
url=”http://localhost:8080/books";
}
get(url)。然后(res=>{
//console.log(res.data);
让bookData=res.data;
this.setState({data:bookData});
console.log(bookData);
bookData.map(项目=>{
如果(item.isbns.length>0){
设url2=`https://www.googleapis.com/books/v1/volumes?q=isbn:${item.isbns[0].isbn13}`;
返回axios.get(url2)。然后(结果=>{
控制台日志(结果);
});
}
});
});
}
render(){
返回(
{this.state.data.map(项=>{
返回(
);
})}
看到我们所有的书了吗
);
}
}
导出默认书目;
您可以尝试一次只运行一个文件吗。可能是这样的,谷歌正在限制你的请求,因为你在不到一天的时间内提出了20个请求time@ShubhamJain你知道我有什么办法可以做到吗?一次只调用一个文件,或者延迟每个请求之间的时间量?不太确定。您可以检查API文档是否支持批量请求API,否则可以尝试超时。
class Booklist extends Component {
constructor(props) {
super(props);
this.state = {
data: [],
googleThumbnail: []
};
this.showBooks = this.showBooks.bind(this);
}
showBooks() {
let url = "";
if (process.env.NODE_ENV === "production") {
url = process.env.DB_URL;
} else {
url = "http://localhost:8080/books";
}
axios.get(url).then(res => {
// console.log(res.data);
let bookData = res.data;
this.setState({ data: bookData });
console.log(bookData);
bookData.map(item => {
if (item.isbns.length > 0) {
let url2 = `https://www.googleapis.com/books/v1/volumes?q=isbn:${item.isbns[0].isbn13}`;
return axios.get(url2).then(result => {
console.log(result);
});
}
});
});
}
render() {
return (
<div>
{this.state.data.map(item => {
return (
<Book
key={item._id}
title={item.title}
author={item.author}
description={item.description}
// src={this.state.googleThumbnail}
></Book>
);
})}
<button className="btn btn-primary btn-lg" onClick={this.showBooks}>
See All Our Books
</button>
</div>
);
}
}
export default Booklist;