reactjs - 无法使用 fetch() 从 carquery API 获取 API
问题描述
我正在尝试使用获取请求从 carquery API 获取数据,但是我收到一个错误
获取https://www.carqueryapi.com/api/0.3/?callback=?cmd=getModels&make=ford&year=2005&sold_in_us=1&body=SUV net::ERR_FAILED
Uncaught (in promise) TypeError: Failed to fetch
const fetchItems = async () =>{
// const data = await fetch('https://jsonplaceholder.typicode.com/photos?_limit=5')
const data = await fetch('https://www.carqueryapi.com/api/0.3/?callback=?&cmd=getModels&make=ford&year=2005&sold_in_us=1&body=SUV')
const items = await data.json()
console.log(items)
setItems(items)
}
解决方案
在您包含的错误中,cmd
查询参数之前缺少一个&符号(尽管您共享的代码有它,所以请仔细检查 URL)。当您不将代码包装在try...catch
. 如果没有捕获,错误的真实细节将被掩盖。
似乎 API 没有返回格式正确的 JSON 作为响应,因此您可以将项目作为纯文本获取,修剪掉有问题的字符,slice
然后手动解析字符串。
const fetchItems = async () => {
const url = 'https://www.carqueryapi.com/api/0.3/?callback=?&cmd=getModels&make=ford&year=2005&sold_in_us=1&body=SUV'
const headers = {
headers : {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
}
try {
const data = await fetch(url, headers)
const items = await data.text()
console.log(JSON.parse(items.slice(2, -2)))
} catch(err) {
console.log(err)
}
}