You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用USDA FDC API时遇TypeError: response.data.foods不可迭代,求排查

排查USDA FDC API请求报错及响应数据不可读问题

我尝试使用JavaScript通过USDA FDC API获取食品数据,脚本如下:

"use strict"

const axios = require('axios')

axios.get("https://api.nal.usda.gov/fdc/v1/foods/search/", {
    params: {
        api_key: "<MY API_KEY>",
        query: "Apple"
    }
}).then(function(response) {

    for (const food of response.data['foods']) {
        console.log(food['fdsId'] + ": " + food['description'])
    }

}).catch(function (error) {
    console.log(error);
})

在Node环境运行后,收到错误提示:TypeError: response.data.foods is not iterable。尝试用console.log(response.data)查看响应数据,但Visual Studio Code控制台显示为不可读格式,恳请提供排查建议。


排查建议

  • 格式化输出响应数据:把console.log(response.data)替换为console.log(JSON.stringify(response.data, null, 2)),这样能在VS Code控制台看到格式化后的JSON结构,清晰确认foods字段是否存在、是否为数组类型。
  • 检查API请求状态与错误详情:在catch块中打印完整的错误响应信息,比如:
    catch(function (error) {
      console.log('请求状态码:', error.response?.status);
      console.log('API返回错误:', error.response?.data);
    })
    
    这能判断是否是API密钥无效、参数错误等原因导致返回非预期数据。
  • 验证响应结构合法性:在循环前先判断foods字段是否为数组,避免直接迭代非可迭代对象:
    .then(function(response) {
      const foods = response.data.foods;
      if (Array.isArray(foods)) {
        for (const food of foods) {
          console.log(food.fdsId + ": " + food.description);
        }
      } else {
        console.log('foods字段异常:', foods);
      }
    })
    
  • 确认请求参数完整性:检查是否遗漏API要求的必填参数,比如部分场景下需要指定dataType参数来限定返回数据类型,缺失可能导致响应结构不符合预期。

内容的提问来源于stack exchange,提问作者Christian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 07:30:57