
适用场景体脂率与 BMI 计算 API 适用于健身应用、健康管理平台、智能穿戴设备后端、企业员工体检系统等需要一键获取多项健康指标的场景。开发者传入基础人体测量数据体重、身高、腰围、性别、年龄API 即可返回 BMI、体脂率Deurenberg 公式、基础代谢率Mifflin‑St Jeor、理想体重区间、腰围身高比及健康风险等级同时附带可读性强的健康建议。接口能力边界端点GET https://v1.apizero.cn/api/bodyfat方法仅支持 GETQPS 限制20 次/秒数据来源基于公开医学公式非个性化诊断工具结果仅供参考输出指标BMI身体质量指数BFP体脂率Deurenberg 公式BMR基础代谢率Mifflin‑St Jeor 公式理想体重区间最小/最大腰围身高比Waist‑Height Ratio健康风险等级低/中/高综合分类正常/偏瘦/偏胖/肥胖等文字建议请求参数详解参数名必填类型说明约束与建议weight是number体重单位千克kg范围建议 20~300超出可能导致异常结果height是number身高单位米m非厘米传入值应为 1.0~2.5如 1.75。若误传 175BMI 将严重偏差waist是number腰围单位厘米cm范围建议 40~200男性通常 ≥ 70女性 ≥ 60gender是string性别接受值男、female、m、f大小写敏感建议统一用男或femaleage否number年龄单位岁默认值 30建议传入真实年龄以提升 BMR 准确性范围 1~120关键陷阱height的单位是米很多开发者习惯以厘米传入导致计算结果异常。建议在客户端转换为米后再传参。鉴权与请求示例鉴权方式API 通过 HTTP 请求头X-API-Key传递密钥。所有正式调用前需在控制台获取有效的 API Key。可复制 curl 示例curl -sS \ -X GET \ -H X-API-Key: YOUR_API_KEY \ https://v1.apizero.cn/api/bodyfat?weight70height1.75waist80gender男age30将YOUR_API_KEY替换为真实密钥即可执行。返回的 JSON 结构见下文。各语言快速接入模板Python使用 requestsimport requests url https://v1.apizero.cn/api/bodyfat params { weight: 70, height: 1.75, waist: 80, gender: 男, age: 30 } headers {X-API-Key: your_api_key} resp requests.get(url, paramsparams, headersheaders, timeout10) if resp.status_code 200: data resp.json() print(data) else: print(fError {resp.status_code}: {resp.text})Node.js使用 axiosconst axios require(axios); async function getBodyFat() { const response await axios.get(https://v1.apizero.cn/api/bodyfat, { params: { weight: 70, height: 1.75, waist: 80, gender: 男, age: 30 }, headers: { X-API-Key: your_api_key }, timeout: 10000 }); console.log(response.data); }返回值解读成功响应HTTP 200JSON 结构如下{ code: 0, msg: 成功, data: { advice: 体脂率正常保持现有的生活方式。, bfp: 18.43, bmi: 22.86, bmr: 1632.5, category: 正常, health_risk: 低, ideal_weight_max: 76.25, ideal_weight_min: 56.66, waist_height_ratio: 0.46 } }字段说明字段类型含义codeint业务状态码0 为成功非零表示异常msgstring状态描述成功时一般为“成功”data.advicestring根据综合评估生成的中文健康建议可直接展示给用户data.bfpnumber体脂率百分比如 18.43 表示 18.43%data.bminumberBMI 值单位 kg/m²data.bmrnumber基础代谢率单位 kcal/天data.categorystring综合分类正常/偏瘦/偏胖/肥胖等data.health_riskstring健康风险等级低/中/高data.ideal_weight_minnumber理想体重下限kgdata.ideal_weight_maxnumber理想体重上限kgdata.waist_height_rationumber腰围身高比腰围 cm ÷ 身高 cm常见错误与排错HTTP 状态码code可能原因排查方法4001001缺少必填参数检查 weight、height、waist、gender 是否全部传入4001002参数值格式错误确保 weight/height/waist 为数字gender 为有效字符串4001003身高单位错误或超出范围确认 height 单位为米例如 1.75 而非 1754012001API Key 无效或缺失检查请求头X-API-Key是否正确密钥是否过期4293001QPS 超限降低调用频率增加本地缓存或引入队列5005000服务端内部错误稍后重试或查看文档确认是否有计划维护最佳实践始终检查 HTTP 状态码和业务 code不要仅依赖resp.ok。工程化最佳实践1. 参数校验先于请求在发送请求前先在客户端做一次校验避免无效请求浪费 QPSweight需为数字且 20height需为数字且在 1.0~2.5 之间waist需为数字且 40gender只能为男、female、m、f之一age如果传入需为 1~120 的整数示例 Python 校验def validate_params(weight, height, waist, gender, ageNone): assert isinstance(weight, (int, float)) and 20 weight 300 assert isinstance(height, (int, float)) and 1.0 height 2.5 assert isinstance(waist, (int, float)) and 40 waist 200 assert gender in (男, female, m, f) if age is not None: assert isinstance(age, int) and 1 age 1202. 单位转换统一身高如果应用内以厘米存储调用 API 前除以 100。体重和腰围保持千克和厘米即可。3. 超时与重试策略设置合理的 HTTP 超时如 10 秒对网络抖动导致的 5xx 错误实现指数退避重试最大重试 3 次。避免在每次用户交互时都同步调用可异步预取。4. 缓存热点数据对于同一用户短期内的多次请求如页面刷新可缓存返回结果 60 秒减少 API 调用量。缓存 key 可以设计为bodyfat:{md5(params)}。5. 错误日志与监控记录每次请求的耗时、状态码、code 和 params脱敏便于排查线上问题。监控 code 非零比例超过阈值触发告警。参考文档API 文档页原始接口描述Markdown