营养数据类型

Google Health API 提供了用于跟踪用户食物摄入量和营养信息的数据类型。借助这些类型,您可以记录饮食、引用食品数据库中的食品,以及跟踪营养素含量。

支持的数据类型

表格:Google Health API 营养数据类型
数据类型
  dataType
  filter 参数
记录
类型
可用的
操作
范围 网络钩子
支持
支持真正的零
美食
  food
  food
食品 list、get .nutrition.readonly
.nutrition.writeonly
食物计量单位
  food-measurement-unit
  food_measurement_unit
食品 list、get .nutrition.readonly
.nutrition.writeonly
营养记录
  nutrition-log
  nutrition_log
示例 list、get、reconcile、rollup、dailyRollup、create、update、batchDelete .nutrition.readonly
.nutrition.writeonly

营养记录

营养日志表示用户记录的食物。您可以根据食物类型,通过以下两种方式创建营养记录:

  1. 已识别的食物:设置 food 字段以引用现有的 Food 资源。系统会根据引用的食物自动填充 nutrientsenergyenergyFromFattotalCarbohydratetotalFatfoodDisplayName 字段。这是首选方法。

  2. 匿名食品:手动设置 foodDisplayName 字段,并为 nutrientsenergyenergyFromFattotalCarbohydratetotalFat 提供值。根据匿名食物创建的营养记录在创建后无法修改。

创建包含匿名食物的营养日志

如需创建营养日志条目,请向 nutrition-log 数据点端点发送 POST 请求。

请求

POST https://health.googleapis.com/v4/users/me/dataTypes/nutrition-log/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "nutritionLog": {
    "interval": {
      "startTime": "2026-06-16T18:00:00Z",
      "endTime": "2026-06-16T18:30:00Z"
    },
    "foodDisplayName": "Grilled Chicken Breast",
    "mealType": "DINNER",
    "energy": {
      "kcal": 165
    },
    "totalCarbohydrate": {
      "grams": 0
    },
    "totalFat": {
      "grams": 3.6
    },
    "nutrients": [
      {
        "nutrient": "PROTEIN",
        "quantity": {
          "grams": 31
        }
      },
      {
        "nutrient": "SODIUM",
        "quantity": {
          "grams": 0.074
        }
      }
    ],
    "serving": {
      "amount": 1.0
    }
  }
}

响应

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/nutrition-log/dataPoints/data-point-id",
    "dataSource": {
      "recordingMethod": "UNKNOWN",
      "application": {
        "googleWebClientId": "google-web-client-id"
      },
      "platform": "GOOGLE_WEB_API"
    },
    "nutritionLog": {
      "interval": {
        "startTime": "2026-06-16T18:00:00Z",
        "startUtcOffset": "0s",
        "endTime": "2026-06-16T18:30:00Z",
        "endUtcOffset": "0s",
        "civilStartTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 18
          }
        },
        "civilEndTime": {
          "date": {
            "year": 2026,
            "month": 6,
            "day": 16
          },
          "time": {
            "hours": 18,
            "minutes": 30
          }
        }
      },
      "energy": {
        "kcal": 165
      },
      "totalCarbohydrate": {
        "grams": 0
      },
      "totalFat": {
        "grams": 3.6
      },
      "nutrients": [
        {
          "quantity": {
            "grams": 31
          },
          "nutrient": "PROTEIN"
        },
        {
          "quantity": {
            "grams": 0.074
          },
          "nutrient": "SODIUM"
        }
      ],
      "mealType": "DINNER",
      "serving": {
        "amount": 1
      },
      "foodDisplayName": "Grilled Chicken Breast"
    }
  }
}

创建包含已识别食物的营养日志

如需记录食品数据库中的食品,请设置 food 字段以引用 Food 资源。该 API 会自动填充营养信息字段。

请求

POST https://health.googleapis.com/v4/users/me/dataTypes/nutrition-log/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "nutritionLog": {
    "interval": {
      "startTime": "2026-06-16T12:00:00Z",
      "endTime": "2026-06-16T12:30:00Z"
    },
    "food": "users/me/dataTypes/food/dataPoints/food-id",
    "mealType": "LUNCH",
    "serving": {
      "amount": 1.0
    }
  }
}

删除营养记录

如需删除一个或多个营养记录条目,请向 batchDelete 端点发送 POST 请求,其中包含要移除的条目的资源名称。

请求

POST https://health.googleapis.com/v4/users/me/dataTypes/nutrition-log/dataPoints:batchDelete
Authorization: Bearer access-token
Content-Type: application/json

{
  "names": [
    "users/me/dataTypes/nutrition-log/dataPoints/data-point-id"
  ]
}

NutritionLog 字段

如需查看字段和说明的完整列表,请参阅参考文档

EnergyQuantity

表示以千卡 (kcal) 为单位测量的能量。如需了解详情,请参阅 EnergyQuantity

{
  "kcal": 165
}

WeightQuantity

表示以克为单位的重量测量值。如需了解详情,请参阅 WeightQuantity

{
  "grams": 27.3
}

NutrientQuantity

表示特定营养素及其测量量。如需了解详情,请参阅 NutrientQuantity

{
  "nutrient": "PROTEIN",
  "quantity": {
    "grams": 31
  }
}

营养价值

如需查看支持的营养类型的完整列表,请参阅营养

服务

表示营养日志条目的食用信息。如需了解详情,请参阅提供服务

{
  "amount": 1.5
}

MealType 值

如需查看支持的餐点类型的完整列表,请参阅 MealType

食品

Food 是一种只读数据类型,表示食品数据库中的食品项。使用 listget 操作可浏览可用的食物并检索其营养信息。

列出食物

如需列出食物,请向 food 数据点端点发送 GET 请求:

GET https://health.googleapis.com/v4/users/me/dataTypes/food/dataPoints
Authorization: Bearer access-token
Accept: application/json

食物测量单位

Food Measurement Unit 是一种只读数据类型,表示用于食物份量的计量单位(例如“杯”“汤匙”或“块”)。

列出可用的测量单位

如需列出可用的测量单位,请执行以下操作:

GET https://health.googleapis.com/v4/users/me/dataTypes/food-measurement-unit/dataPoints
Authorization: Bearer access-token
Accept: application/json

指南

  • 尽可能使用已识别的食物。该 API 会自动填充营养字段,从而减少错误并确保与食品数据库保持一致。
  • 根据匿名食物创建的营养记录在创建后无法更新。 如果您需要更正匿名饮食记录,请将其删除并创建新的饮食记录。
  • nutrients 数组中的所有营养素含量均以克为计量单位。
  • energyenergyFromFat 字段使用千卡 (kcal) 作为计量单位。