Google Health API 提供了用于跟踪用户营养和饮水量的数据类型。这些类型可让您记录饮食、引用食物数据库中的食物、跟踪营养素数量以及记录液体摄入量。
支持的数据类型
| 数据类型 | 可用的 操作 |
范围 |
|---|---|---|
|
食品
|
list、get | .nutrition.readonly.nutrition.writeonly |
|
食物计量单位
dataType:
food-measurement-unit过滤条件参数: food_measurement_unit
记录类型: 饮食
兼容的设备
|
list、get | .nutrition.readonly.nutrition.writeonly |
|
饮水量记录
|
list、get、reconcile、rollup、dailyRollup、create、update、batchDelete | .nutrition.readonly.nutrition.writeonly |
|
营养记录
dataType:
nutrition-log过滤条件参数: nutrition_log
记录类型: 练习
兼容的设备
|
list、get、reconcile、rollup、dailyRollup、create、update、batchDelete | .nutrition.readonly.nutrition.writeonly |
营养记录
营养日志表示用户记录的食物。创建营养日志的方式有两种,具体取决于食物类型:
已识别的食物:将
food字段设置为引用现有的 Food 资源。nutrients、energy、energyFromFat、totalCarbohydrate、totalFat和foodDisplayName字段会根据所引用的食物自动填充。这是首选方法。匿名食物:手动设置
foodDisplayName字段,并为nutrients、energy、energyFromFat、totalCarbohydrate和totalFat提供值。从匿名食物创建的营养日志在创建后无法修改。
创建包含匿名食物的营养日志
如需创建饮食记录条目,请向 nutrition-log
dataPoints 端点发送 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,
"foodMeasurementUnit": "users/me/dataTypes/food-measurement-unit/dataPoints/food-measurement-unit-id"
}
}
}响应
{
"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-16T12:00:00Z",
"startUtcOffset": "0s",
"endTime": "2026-06-16T12:30:00Z",
"endUtcOffset": "0s",
"civilStartTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 12
}
},
"civilEndTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 12,
"minutes": 30
}
}
},
"energy": {
"kcal": 95
},
"energyFromFat": {
"kcal": 3
},
"totalCarbohydrate": {
"grams": 25
},
"totalFat": {
"grams": 0.3
},
"nutrients": [
{
"quantity": {
"grams": 4.4,
"userProvidedUnit": "GRAM"
},
"nutrient": "DIETARY_FIBER"
},
{
"quantity": {
"grams": 19,
"userProvidedUnit": "GRAM"
},
"nutrient": "SUGAR"
},
{
"quantity": {
"grams": 0.5,
"userProvidedUnit": "GRAM"
},
"nutrient": "PROTEIN"
}
],
"mealType": "LUNCH",
"serving": {
"amount": 1,
"foodMeasurementUnit": "users/me/dataTypes/food-measurement-unit/dataPoints/food-measurement-unit-id"
},
"food": "users/user-id/dataTypes/food/dataPoints/food-id",
"foodDisplayName": "Apple"
}
}
}删除营养记录
如需删除一个或多个营养日志条目,请向 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。
能量
表示能量测量值,以千卡 (kcal) 为单位。如需了解详情,请参阅 EnergyQuantity。
{
"kcal": 165
}
重量
表示体重测量值,以克为单位。如需了解详情,请参阅 WeightQuantity。
{
"grams": 27.3
}
营养素数量
表示特定营养素及其测量量。如需了解详情,请参阅 NutrientQuantity。
{
"nutrient": "PROTEIN",
"quantity": {
"grams": 31
}
}
营养素值
如需查看受支持营养素类型的完整列表,请参阅 Nutrient。
服务
表示饮食日志条目的份量信息。如需了解详情,请参阅 Serving。
{
"amount": 1.5
}
餐点类型值
如需查看受支持餐点类型的完整列表,请参阅 MealType。
美食
“食物”是一种只读数据类型,表示食物数据库中的食物。
使用 list 和 get 操作浏览可用食物并检索其营养信息。
列出食物
如需列出食物,请向 food dataPoints 端点发送 GET 请求:
GET https://health.googleapis.com/v4/users/me/dataTypes/food/dataPoints Authorization: Bearer access-token Accept: application/json
食物计量单位
食物计量单位是一种只读数据类型,表示用于食物份量的计量单位(例如“杯”“汤匙”或“块”)。
列出可用的测量单位
如需列出可用的测量单位,请执行以下操作:
GET https://health.googleapis.com/v4/users/me/dataTypes/food-measurement-unit/dataPoints Authorization: Bearer access-token Accept: application/json
饮水量记录
饮水量记录表示用户记录的液体摄入量。与食物(引用食物数据库并测量营养素或能量摄入量)不同,饮水量条目会跟踪在给定时间间隔内消耗的特定液体量。
创建饮水量记录
如需创建饮水日志条目,请向 hydration-log
dataPoints 端点发送 POST 请求。所有体积量都会转换为 API 格式的毫升。
请求
POST https://health.googleapis.com/v4/users/me/dataTypes/hydration-log/dataPoints
Authorization: Bearer access-token
Content-Type: application/json
{
"hydrationLog": {
"interval": {
"startTime": "2026-06-16T14:00:00Z",
"endTime": "2026-06-16T14:00:01Z"
},
"amountConsumed": {
"milliliters": 500,
"userProvidedUnit": "FLUID_OUNCE_US"
}
}
}响应
{
"done": true,
"response": {
"@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
"name": "users/user-id/dataTypes/hydration-log/dataPoints/data-point-id",
"dataSource": {
"recordingMethod": "UNKNOWN",
"application": {
"googleWebClientId": "google-web-client-id"
},
"platform": "GOOGLE_WEB_API"
},
"hydrationLog": {
"interval": {
"startTime": "2026-06-16T14:00:00Z",
"startUtcOffset": "0s",
"endTime": "2026-06-16T14:00:01Z",
"endUtcOffset": "0s",
"civilStartTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 14
}
},
"civilEndTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 14,
"seconds": 1
}
}
},
"amountConsumed": {
"milliliters": 500,
"userProvidedUnit": "FLUID_OUNCE_US"
}
}
}
}更新饮水量记录
如需更新饮水日志条目,请向 hydration-log
dataPoints 端点发送 PATCH 请求,并附上数据点的 ID。
请求
PATCH https://health.googleapis.com/v4/users/me/dataTypes/hydration-log/dataPoints/data-point-id
Authorization: Bearer access-token
Content-Type: application/json
{
"hydrationLog": {
"interval": {
"startTime": "2026-06-16T10:00:00Z",
"endTime": "2026-06-16T10:00:01Z"
},
"amountConsumed": {
"milliliters": 500
}
}
}响应
{
"done": true,
"response": {
"@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
"name": "users/user-id/dataTypes/hydration-log/dataPoints/data-point-id",
"dataSource": {
"recordingMethod": "UNKNOWN",
"application": {
"googleWebClientId": "google-web-client-id"
},
"platform": "GOOGLE_WEB_API"
},
"hydrationLog": {
"interval": {
"startTime": "2026-06-16T10:00:00Z",
"startUtcOffset": "0s",
"endTime": "2026-06-16T10:00:01Z",
"endUtcOffset": "0s",
"civilStartTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 10
}
},
"civilEndTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 10,
"seconds": 1
}
}
},
"amountConsumed": {
"milliliters": 500
}
}
}
}删除饮水量记录
如需删除一个或多个饮水日志条目,请向 batchDelete 方法发送 POST 请求。
请求
POST https://health.googleapis.com/v4/users/me/dataTypes/hydration-log/dataPoints:batchDelete
Authorization: Bearer access-token
Content-Type: application/json
{
"names": [
"users/me/dataTypes/hydration-log/dataPoints/data-point-id"
]
}响应
{
"done": true,
"response": {
"@type": "type.googleapis.com/google.devicesandservices.health.v4.BatchDeleteDataPointsResponse",
"dataPoints": [
{
"name": "users/user-id/dataTypes/hydration-log/dataPoints/data-point-id",
"dataSource": {
"recordingMethod": "UNKNOWN",
"application": {
"googleWebClientId": "google-web-client-id"
},
"platform": "GOOGLE_WEB_API"
},
"hydrationLog": {
"interval": {
"startTime": "2026-06-16T14:00:00Z",
"startUtcOffset": "0s",
"endTime": "2026-06-16T14:00:01Z",
"endUtcOffset": "0s",
"civilStartTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 14
}
},
"civilEndTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 14,
"seconds": 1
}
}
},
"amountConsumed": {
"milliliters": 500,
"userProvidedUnit": "FLUID_OUNCE_US"
}
}
}
]
}
}饮水量记录字段
如需查看字段和说明的完整列表,请参阅 HydrationLog。
卷数量
表示体积测量值,以毫升为单位。如需了解详情,请参阅 VolumeQuantity。
{
"milliliters": 250,
"userProvidedUnit": "MILLILITER"
}
体积单位值
如需查看受支持的体积单位的完整列表,请参阅 VolumeUnit。常见值包括 MILLILITER、LITER、CUP_US 和 FLUID_OUNCE_US。
指南
- 尽可能使用识别出的食物。该 API 会自动填充营养字段,从而减少错误并确保与食物数据库保持一致。
- 从匿名食物创建的饮食记录在创建后无法更新。 如果您需要更正匿名饮食记录,请将其删除并创建新记录。
- 与匿名食物营养日志不同,饮水日志条目是完全可变的,可以在创建后使用
PATCH请求进行更新。 nutrients数组中的所有营养素数量均以克为计量单位。energy和energyFromFat字段使用千卡 (kcal) 作为测量单位。- 该 API 会将所有补水量转换为毫升并存储。
VolumeQuantity中的可选userProvidedUnit字段仅用于面向客户端的面向用户显示。 - 直接向各个
hydration-log数据点发出的 HTTPDELETE请求会返回404 Not Found。使用batchDelete方法移除这些资源条目。 - 饮水日志使用较短的时间间隔,其中
startTime和endTime表示饮用液体的时间段。