首页 > 解决方案 > 获取返回“未定义”的 API

问题描述

我目前正在学习如何使用 API,但在从 API 获取数据时遇到了一些麻烦。下面的代码成功获得响应,但实际上并没有从服务器获取任何数据。我该如何解决这个问题?

const onClick = () => {
fetch(
  `https://collectionapi.metmuseum.org/public/collection/v1/objects/45734`
)
  .then(res => {
    if (res.ok) {
      console.log(res)
      console.log('SUCESSS')
    } else {
      console.log("Not Successful")
    }
  })
  .then(data => {
    if (data) {
      console.log(data)
    } else {
      console.log("undefined data")
    }
  })
  .catch(error => console.log('ERROR'))

console.log(results);

}

标签: javascriptapifetch-api

解决方案


Promise.then方法可以以某种方式链接,每个链接的then方法都将接收前一个方法的返回值。在您的情况下,第一个不返回任何值,使第二个不接收任何值,也称为未定义。

由于您的代码调用返回 json 内容的 url,您应该在登录成功后返回res.json().

这将读取响应主体的流并将其解析为 json,使用 promise。


推荐阅读