无法使用fetch()从carquery API中获取API。

问题描述 投票:0回答:1

我试图使用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)
}

这是邮递员给我的回复enter image description here

reactjs
1个回答
0
投票

在你所提供的错误中,有一个缺失的安培符在 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)
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.