基于 FastAPI + CoolProp。给定任意 2 个状态参数,一次返回该状态点的全部湿空气物性,由调用方按需取用。
P 是可选参数,缺省 101325 Pa(标准大气压);如需非标压(高原、加压舱等)显式传入即可。state 字段包含该状态点的全部物性,前端自取所需字段。含义:在标准大气压、干球温度 25 ℃、相对湿度 50% 下,求湿空气全部物性。
GET /haGET /ha?<键1>=<值1>&<键2>=<值2>[&P=<Pa>]
{
"inputs": { "<键1>": <值1>, "<键2>": <值2> },
"pressure": { "P": 101325, "default": true }, // default=true 表示用了缺省值
"state": {
"T": ..., "Twb": ..., "Tdp": ...,
"R": ..., "W": ...,
"H": ..., "V": ...,
"S": ..., "Y": ...
}
}
state 中个别字段若 CoolProp 解算失败,会返回 null,不会阻断其他字段。
GET /ha?T=25&R=0.5
{
"inputs": { "T": 25, "R": 0.5 },
"pressure": { "P": 101325, "default": true },
"state": {
"T": 25.00,
"Twb": 17.89,
"Tdp": 13.86,
"R": 0.50,
"W": 0.00993,
"H": 50.42,
"V": 0.8585,
"S": 187.32,
"Y": 0.01571
}
}
GET /ha?T=25&R=0.5&P=80000
响应中 pressure.default 为 false,表示已被显式覆盖。
GET /ha?T=30&Twb=22
GET /ha?H=50&W=0.01
curl "https://your-host/ha?T=25&R=0.5"
下表中同义代码任选其一。P 为可选项,其余均为状态参数。
| 代码 | 物理含义 | 单位 / 取值 | 典型范围 | 同义代码 |
|---|---|---|---|---|
P | 湿空气总压力(绝压,可选) | Pa | 缺省 101325 | — |
T | 干球温度 | ℃ | −100 ~ 200 | Tdb |
Twb | 湿球温度(绝热饱和温度) | ℃ | ≤ T | B |
Tdp | 露点温度 | ℃ | ≤ T | D |
R | 相对湿度 | 0 ~ 1(小数,非百分数) | 0.5 即 50% | — |
W | 含湿量(绝对湿度) | kg 水 / kg 干空气 | 0 ~ 0.05 | — |
H | 湿空气比焓 | kJ / kg 干空气 | −50 ~ 200 | Hda |
V | 比容 | m³ / kg 干空气 | ≈ 0.7 ~ 1.0 | Vda |
S | 比熵 | J / (kg·K) | — | Sda |
Y | 水蒸气摩尔分数 | mol / mol | 0 ~ 1 | psi_w |
R 用 小数(0.5 表示 50%)。P 单位 Pa,不要传 kPa。T 和 Tdb)会被视为 2 个互相冲突的输入,可能导致计算失败。POST /ha/batch用于一次计算多个状态点(绘焓湿图、批量工况扫描等)。每个点独立解析、独立容错。
POST /ha/batch
Content-Type: application/json
{
"points": [
{ "T": 20, "R": 0.5 },
{ "T": 25, "R": 0.5 },
{ "T": 30, "R": 0.5, "P": 80000 }
]
}
{
"count": 3,
"results": [
{
"index": 0,
"inputs": { "T": 20, "R": 0.5 },
"pressure": { "P": 101325, "default": true },
"state": { "T": 20.00, "Twb": 13.78, ... },
"status": "success"
},
...
{
"index": 2,
"inputs": { "T": 30, "R": 0.5 },
"pressure": { "P": 80000, "default": false },
"state": { ... },
"status": "success"
}
]
}
status="error" 并附带 error 字段,其余点继续返回。
curl -X POST https://your-host/ha/batch \
-H "Content-Type: application/json" \
-d '{"points":[{"T":25,"R":0.5},{"T":30,"R":0.6}]}'
GET /ha/keys返回服务端支持的全部状态参数代码、输出字段列表与单位说明,便于客户端动态构造表单。
GET /health返回服务名与版本号,用于探活。
{ "status": "ok", "service": "CoolProp API", "version": "2.0.0" }
// 状态参数个数不是 2
HTTP 400
{ "detail": "需要且仅需 2 个状态参数(除 P 之外),当前提供了 1 个" }
// 属性代码非法
HTTP 400
{ "detail": "存在无效的属性代码: ['XYZ']。有效代码见 /ha/keys" }
// 参数值不是合法数字
HTTP 400
{ "detail": "参数 T 的值 'abc' 不是有效的数字" }
// CoolProp 内部错误(输入组合不一致 / 越界等)
HTTP 500
{ "detail": "计算错误: ..." }
属性代码定义参考:CoolProp HumidAir 文档