本文档详细定义了健康数据模块的API接口规范,包括4个子模块的完整接口定义。所有接口遵循RESTful设计理念,采用统一的请求/响应格式。
application/jsonAuthorization: Bearer <token>){
"code": "SUCCESS",
"message": "操作成功",
"data": {}
}
{
"code": "SUCCESS",
"message": "查询成功",
"data": {
"records": [],
"current": 1,
"size": 10,
"total": 100
}
}
{
"code": "PARAM_ERROR",
"message": "参数校验失败",
"data": null
}
POST /physical-data/add请求参数:
{
"height": 170.5,
"weight": 65.2,
"measureTime": "2024-01-15T10:30:00"
}
参数说明:
height: 身高(cm),范围100-250,必填weight: 体重(kg),范围20-300,必填measureTime: 测量时间,必填响应示例:
{
"code": "SUCCESS",
"message": "添加成功",
"data": null
}
POST /physical-data/list请求参数:
{
"pageNum": 1,
"pageSize": 10,
"startTime": "2024-01-01T00:00:00",
"endTime": "2024-01-31T23:59:59"
}
参数说明:
pageNum: 页码,默认1pageSize: 每页大小,默认10,最大100startTime: 开始时间,可选endTime: 结束时间,可选响应示例:
{
"code": "SUCCESS",
"message": "查询成功",
"data": {
"records": [
{
"id": 1,
"height": 170.5,
"weight": 65.2,
"bmi": 22.45,
"measureTime": "2024-01-15T10:30:00",
"createTime": "2024-01-15T10:35:00"
}
],
"current": 1,
"size": 10,
"total": 1
}
}
GET /physical-data/bmiheight: 身高(cm),范围100-250,必填weight: 体重(kg),范围20-300,必填GET /physical-data/bmi?height=170.5&weight=65.2响应示例:
{
"code": "SUCCESS",
"message": "计算成功",
"data": 22.45
}
POST /blood-pressure-data/add请求参数:
{
"systolicPressure": 120,
"diastolicPressure": 80,
"measureTime": "2024-01-15T10:30:00"
}
参数说明:
systolicPressure: 收缩压(mmHg),范围60-250,必填diastolicPressure: 舒张压(mmHg),范围40-150,必填measureTime: 测量时间,必填响应示例:
{
"code": "SUCCESS",
"message": "添加成功",
"data": null
}
POST /blood-pressure-data/list请求参数:
{
"pageNum": 1,
"pageSize": 10,
"startTime": "2024-01-01T00:00:00",
"endTime": "2024-01-31T23:59:59"
}
响应示例:
{
"code": "SUCCESS",
"message": "查询成功",
"data": {
"records": [
{
"id": 1,
"systolicPressure": 120,
"diastolicPressure": 80,
"measureTime": "2024-01-15T10:30:00",
"createTime": "2024-01-15T10:35:00"
}
],
"current": 1,
"size": 10,
"total": 1
}
}
POST /blood-glucose-data/add请求参数:
{
"type": "FASTING",
"value": 5.2,
"measureTime": "2024-01-15T10:30:00"
}
参数说明:
type: 血糖测量类型,枚举值(如FASTING、AFTER_BREAKFAST等),必填value: 血糖值(mmol/L),范围1.0-30.0,必填measureTime: 测量时间,必填响应示例:
{
"code": "SUCCESS",
"message": "添加成功",
"data": null
}
POST /blood-glucose-data/list请求参数:
{
"pageNum": 1,
"pageSize": 10,
"startTime": "2024-01-01T00:00:00",
"endTime": "2024-01-31T23:59:59"
}
响应示例:
{
"code": "SUCCESS",
"message": "查询成功",
"data": {
"records": [
{
"id": 1,
"fastingBloodGlucose": 5.2,
"afterBreakfastBloodGlucose": 8.5,
"beforeLunchBloodGlucose": 6.1,
"afterLunchBloodGlucose": 9.2,
"beforeDinnerBloodGlucose": 5.8,
"afterDinnerBloodGlucose": 8.9,
"beforeBedBloodGlucose": 7.3,
"measureTime": "2024-01-15T10:30:00",
"createTime": "2024-01-15T10:35:00"
}
],
"current": 1,
"size": 10,
"total": 1
}
}
POST /heart-rate-data/add请求参数:
{
"heartRate": 75,
"measureTime": "2024-01-15T10:30:00"
}
参数说明:
heartRate: 心率(次/分钟),范围30-200,必填measureTime: 测量时间,必填响应示例:
{
"code": "SUCCESS",
"message": "添加成功",
"data": null
}
POST /heart-rate-data/list请求参数:
{
"pageNum": 1,
"pageSize": 10,
"startTime": "2024-01-01T00:00:00",
"endTime": "2024-01-31T23:59:59"
}
响应示例:
{
"code": "SUCCESS",
"message": "查询成功",
"data": {
"records": [
{
"id": 1,
"heartRate": 75,
"measureTime": "2024-01-15T10:30:00",
"createTime": "2024-01-15T10:35:00"
}
],
"current": 1,
"size": 10,
"total": 1
}
}
SUCCESS: 操作成功PARAM_ERROR: 参数校验失败SYSTEM_ERROR: 系统内部错误UNAUTHORIZED: 未授权访问FORBIDDEN: 权限不足DATA_NOT_FOUND: 数据不存在DATA_ALREADY_EXISTS: 数据已存在INVALID_MEASURE_TIME: 无效的测量时间INVALID_DATA_RANGE: 数据超出有效范围curl -X POST "http://localhost:8080/physical-data/add" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "Content-Type: application/json" \
-d '{
"height": 170.5,
"weight": 65.2,
"measureTime": "2024-01-15T10:30:00"
}'
curl -X POST "http://localhost:8080/physical-data/list" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "Content-Type: application/json" \
-d '{
"pageNum": 1,
"pageSize": 10
}'
curl -X GET "http://localhost:8080/physical-data/bmi?height=170.5&weight=65.2" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."