You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过单次REST API调用获取Google Fit多指标最新值?

关于Google Fit单次获取多指标最新原始值的解决方案

目前Google Fit REST API没有支持单次调用获取多个指标最新原始数值的官方接口,不过可以通过以下两种替代方案实现类似需求:

方案1:并行调用单个数据源API

虽然无法单次请求拿到所有指标,但可以同时发起多个针对不同dataSourceId的请求(每个请求对应一个指标,比如心率、体温各自的数据源ID)。大部分HTTP客户端都支持并行请求,总耗时会远低于串行调用,效果接近单次请求。

举个简单的Python示例(使用aiohttp实现并行请求):

import aiohttp
import asyncio

async def fetch_latest_value(session, user_id, data_source_id):
    url = f"https://www.googleapis.com/fitness/v1/users/{user_id}/dataSources/{data_source_id}/datasets/-"
    async with session.get(url) as response:
        return await response.json()

async def main():
    user_id = "me"
    target_data_sources = [
        "your-heart-rate-data-source-id",
        "your-body-temp-data-source-id"
    ]
    async with aiohttp.ClientSession() as session:
        tasks = [fetch_latest_value(session, user_id, ds_id) for ds_id in target_data_sources]
        results = await asyncio.gather(*tasks)
        # 处理每个指标的返回结果
        for idx, result in enumerate(results):
            print(f"{target_data_sources[idx]} 最新值: {result}")

asyncio.run(main())

方案2:通过dataset:aggregate API筛选近似最新值

如果可以接受“最近短时间内的最新原始值”,可以调用dataset:aggregate时设置一个极小的时间范围(比如最近5分钟),同时将时间桶粒度设为足够小(比如1分钟),这样返回的聚合结果中会包含该时间段内的原始数据点,你可以从中提取每个指标的最新值。

需要注意:请求时要为每个指标指定对应的dataTypeName,并配置bucketByTime参数确保能拿到精细粒度的数据。

额外注意事项

  • 你需要提前通过users/{userId}/dataSources接口获取目标指标对应的dataSourceId,每个指标可能有多个数据源(比如不同设备采集的),需根据需求筛选。
  • 并行调用时要遵守Google Fit API的配额限制,避免因请求频率过高触发限流。

内容的提问来源于stack exchange,提问作者Sathish Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 21:30:47