调用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块中打印完整的错误响应信息,比如:
这能判断是否是API密钥无效、参数错误等原因导致返回非预期数据。catch(function (error) { console.log('请求状态码:', error.response?.status); console.log('API返回错误:', error.response?.data); }) - 验证响应结构合法性:在循环前先判断
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
相关产品推荐
相关产品推荐

