我正在制作一个react应用程序,它按标题搜索一本书并返回结果。
它大部分工作正常,但对于搜索的某些标题(例如“你好”),由于缺少参数,它无法获得结果。
特别是,缺少“金额”值,即使我filter=paid-ebooks
在获取 api 时添加参数,它也可以为我获取非销售电子书。使用projection=full
也无济于事。
例如,当我调用 api 时
https://www.googleapis.com/books/v1/volumes?printType=books&filter=paid-ebooks&key=${APIKEY}
并在 reactjs 中使用书籍数组中获取的数据:
this.props.books.map((book, index) => {
return (
<CardItem
key={index}
title={book.volumeInfo.title}
authors={book.volumeInfo.authors ?
book.volumeInfo.authors.join(', ') :
"Not provided"}
price={book.saleInfo.listPrice.amount}
publisher={book.volumeInfo.publisher}
addToCart={() =>
this.props.addItem(this.props.books[index])}
/>
)
})
它得到的结果之一是这样的:
"saleInfo": {
"country": "TR",
"saleability": "NOT_FOR_SALE",
"isEbook": false
}
虽然它应该是这样,但预期的是:
"saleInfo": {
"country": "TR",
"saleability": "FOR_SALE",
"isEbook": true,
"listPrice": {
"amount": 17.23,
"currencyCode": "TRY"
}
并尝试使用此 api 答案进行搜索会引发错误:
TypeError: Cannot read property 'amount' of undefined
price={book.saleInfo.listPrice.amount}
正如您在react代码中看到的authors
,这个问题也出现在作者参数上,我在代码中已经绕过了。但我不能对amount
. 这是 Google Books API 中的已知错误还是有办法防止这种情况发生?我不明白为什么它仍然向我返回即使有filter=paid-ebooks
参数也不出售的电子书。