我试图使用fetch请求从carquery API中获取数据,但我收到了一个错误信息
获取 https:/www.carqueryapi.comapi0.3?callback=?cmd=getModels&make=ford&year=2005&sold_in_us=1&body=SUV。 net::ERR_FAILED
未捕获(在承诺中)TypeError。取出失败
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)
}
}