我正在使用 Google Fit API 添加营养数据,并遵循他们的添加营养数据指南。
我正在使用以下有效负载发出 PATCH 请求:
{
"minStartTimeNs": 1624323600000000000,
"maxEndTimeNs": 1624327200000000000,
"dataSourceId": "my-datasource-id",
"point": [
{
"startTimeNanos": 1624323600000000000,
"endTimeNanos": 1624327200000000000,
"dataTypeName": "com.google.nutrition",
"value": [
{
"mapVal": [
{
"key": "calories",
"value": {
"fpVal": 456.7
}
},
{
"key": "fat.total",
"value": {
"fpVal": 20.7
}
},
{
"key": "fat.saturated",
"value": {
"fpVal": 11.3
}
},
{
"key": "fat.polyunsaturated",
"value": {
"fpVal": 0
}
},
{
"key": "fat.monounsaturated",
"value": {
"fpVal": 0
}
},
{
"key": "fat.trans",
"value": {
"fpVal": 0
}
},
{
"key": "cholesterol",
"value": {
"fpVal": 90
}
},
{
"key": "sodium",
"value": {
"fpVal": 753.3
}
},
{
"key": "potassium",
"value": {
"fpVal": 0
}
},
{
"key": "carbs.total",
"value": {
"fpVal": 32
}
},
{
"key": "dietary_fiber",
"value": {
"fpVal": 2.7
}
},
{
"key": "sugar",
"value": {
"fpVal": 2
}
},
{
"key": "protein",
"value": {
"fpVal": 30.7
}
}
]
},
{
"intVal": 4
}
]
}
]
}
这将返回 400 错误响应,内容如下:
{
"error": {
"code": 400,
"message": "Mismatched value count: com.google.nutrition [2021-06-22T01:00:00Z - 2021-06-22T02:00:00Z] [{calories:456.7, fat.total:20.7, fat.saturated:11.3, fat.polyunsaturated:0.0, fat.monounsaturated:0.0, fat.trans:0.0, cholesterol:90.0, sodium:753.3, potassium:0.0, carbs.total:32.0, dietary_fiber:2.7, sugar:2.0, protein:30.7},4] raw:my-datasource-id",
"errors": [
{
"message": "Mismatched value count: com.google.nutrition [2021-06-22T01:00:00Z - 2021-06-22T02:00:00Z] [{calories:456.7, fat.total:20.7, fat.saturated:11.3, fat.polyunsaturated:0.0, fat.monounsaturated:0.0, fat.trans:0.0, cholesterol:90.0, sodium:753.3, potassium:0.0, carbs.total:32.0, dietary_fiber:2.7, sugar:2.0, protein:30.7},4] raw:my-datasource-id",
"domain": "global",
"reason": "invalidArgument"
}
],
"status": "INVALID_ARGUMENT"
}
}
这是什么意思以及如何纠正?我似乎没有找到关于此错误的任何文档。
食品项目需要包含在请求正文中。在指南中,这被列为:
{
"strVal": "banana"
}
包含此内容会使请求成功,即使响应中未返回此值并且营养数据类型页面说:
膳食类型和食品项目字段之一或全部为必填项