我用相同的查询测试了8个营养API,只有2个返回了正确的数据。
Source: Dev.to
实验概述
上周我做了一个简单的实验:我向八个不同的营养 API 发送了完全相同的查询——“100 g 去皮鸡胸肉”——并将它们的响应与 USDA FoodData Central 数据库(美国营养数据的黄金标准)进行比较。
USDA 参考
| 营养素 | USDA 值 |
|---|---|
| 能量 | 165 kcal |
| 蛋白质 | 31.02 g |
| 总脂肪 | 3.57 g |
| 饱和脂肪 | 1.01 g |
| 胆固醇 | 85 mg |
结果
| API | 热量 | 蛋白质 | 脂肪 | 准确性 |
|---|---|---|---|---|
| API A | 165 | 31 g | 3.6 g | ✅ |
| API B | 239 | 27.3 g | 13.6 g | ❌ |
| API C | 165 | 31 g | 3.6 g | ✅ |
| API D | 195 | 29.5 g | 7.7 g | ❌ |
| API E | 172 | 26 g | 6.8 g | ❌ |
| API F | 148 | 31.5 g | 1.2 g | ❌ |
| API G | 165 | 30.9 g | 3.8 g | ⚠️ |
| Nutrition Tracker API | 165 | 31.02 g | 3.57 g | ✅ |
只有八个 API 中的三个返回了准确的数据,其中一个(API G)显示了轻微的四舍五入差异。
为什么某些 API 不准确
- 用户提交的数据未经过验证 – 像“鸡胸肉”这种带皮、带骨或用油烹调的记录可能会成为默认记录。
- 过时的 USDA 数据 – 有的 API 仍在使用 2015 年的 USDA 数据集;USDA 会定期更新数据库,旧值会变得陈旧。
- 变体不匹配 – “鸡胸肉”可以指生的或熟的、去皮或带皮、带骨或去骨、烤的或炸的等。有些 API 完全返回了错误的变体。
实际影响
- 每餐 50 kcal 误差 × 4 餐/天 = 200 kcal/天 → 1,400 kcal/周,约相当于半磅体重差异。
- 蛋白质报告错误(例如 27 g vs. 31 g)会影响临床剂量(例如 1.2 g 蛋白质/公斤体重)。
- 营养标签有法律要求;数据不准确可能导致 FDA 合规问题和法律责任。
确保数据准确
Nutrition Tracker API 中的每个食品项目都直接映射到 USDA FoodData Central 记录,消除歧义。
{
"data": {
"fdcId": 331960,
"description": "Chicken, breast, meat only, raw"
}
}
当你搜索 “chicken breast” 时,NLP 解析器会识别:
- 基础食物(鸡胸肉)
- 烹饪方式(如果有指定)
- 份量/数量(100 g、1 杯 等)
并返回精准的 USDA 匹配。
脂肪细分示例
{
"Fat": {
"value": 3.57,
"unit": "g",
"breakdown": {
"saturated": { "value": 1.01, "unit": "g" },
"monounsaturated": { "value": 1.24, "unit": "g" },
"polyunsaturated": { "value": 0.77, "unit": "g" },
"trans": { "value": 0.02, "unit": "g" },
"other": { "value": 0.53, "unit": "g", "note": "Includes phospholipids and minor fatty acids" }
}
}
}
1.01 + 1.24 + 0.77 + 0.02 + 0.53 = 3.57 g ✓ – 计算结果相符。
每个响应都包含 USDA FDC ID,您可以自行核实来源——没有黑箱。
如何自行验证
- 选择一种你熟悉的食物。
- 将相同的查询发送给多个营养 API。
- 将结果与 USDA FoodData Central 进行比较。
你很可能会看到相同的差异模式。
Test It Yourself
curl -X POST "https://nutrition-tracker-api.p.rapidapi.com/v1/calculate/natural" \
-H "X-RapidAPI-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "100g chicken breast"}'
将响应与 USDA FDC 记录进行比较。每个数值都应匹配。
链接
- 🔬 [在 USDA FoodData Central 验证]
- 🚀 [在 RapidAPI 上尝试 API]
- 📦 SDK(Python、JavaScript、Java)
如果您在任何营养 API 中发现数据不一致,请随时发表评论或提交 issue。我会修复它,或解释 USDA 的数值为何与预期不同。