单盘API接口文档 - 本命盘API、行运盘API、太阳返照盘API
接口说明
单盘接口用于生成基本的星盘图,包括本命盘、太阳返照盘等类型。此接口支持自定义宫位系统,并可选择是否使用中文字体。
基本信息
| 请求URL |
/onechart |
| 请求方式 |
POST |
| Content-Type |
application/json |
请求参数
| 参数名 |
类型 |
必填 |
说明 |
| chart_type |
String |
是 |
星盘类型,例如:"natal"(本命盘)、"transit"(行运盘) |
| data |
Object |
是 |
星盘数据对象,包含日期时间、经纬度、时区信息 |
| data.datetime |
String |
是 |
日期时间,格式:"YYYY-MM-DD HH:MM:SS" |
| data.lat |
Number |
是 |
纬度,例如:39.9042 |
| data.lon |
Number |
是 |
经度,例如:116.4074 |
| data.tz |
String |
是 |
时区,例如:"8.0"(东八区) |
| house_system |
String |
否 |
宫位系统,例如:"P"(普拉西德),默认为"P" |
| use_chinese_font |
Boolean |
否 |
是否使用中文字体,默认false |
| include_svg |
Boolean |
否 |
是否包含SVG图像,默认false |
请求示例
{
"chart_type": "natal",
"data": {
"datetime": "1990-01-01 12:00:00",
"lat": 39.9042,
"lon": 116.4074,
"tz": "8.0"
},
"house_system": "P",
"use_chinese_font": true,
"include_svg":true,
}
返回参数
| 参数名 |
类型 |
说明 |
| data |
Object |
星盘数据 |
| data.houses |
Object/Array |
宫位数据 |
| data.planets |
Object |
行星位置数据 |
| svg |
String |
生成的星盘SVG图形数据 |
返回示例
{
"data": {
"houses": {
"1": 0.0,
"2": 30.0,
"3": 60.0,
"4": 90.0,
"5": 120.0,
"6": 150.0,
"7": 180.0,
"8": 210.0,
"9": 240.0,
"10": 270.0,
"11": 300.0,
"12": 330.0
},
"planets": {
"SUN": 280.5,
"MOON": 120.3,
"MERCURY": 295.8,
"VENUS": 310.2,
"MARS": 185.6,
"JUPITER": 89.4,
"SATURN": 275.9
}
},
"svg": ""
}
测试代码示例
import requests
import json
class OnechartAPITest:
def __init__(self, base_url="http://chart.12sign.top"):
self.base_url = base_url
def test_natal_chart(self):
"""测试本命盘API"""
url = f"{self.base_url}/onechart"
data = {
"chart_type": "natal",
"data": {
"datetime": "1990-01-01 12:00:00",
"lat": 39.9042,
"lon": 116.4074,
"tz": "8.0"
},
"house_system": "P",
"use_chinese_font": True
}
try:
response = requests.post(url, json=data)
response.raise_for_status()
result = response.json()
print("本命盘API测试成功")
print(f"返回数据包含: {list(result.keys())}")
print("完整的返回数据:")
print(result)
# 保存SVG文件
if 'svg' in result and result['svg']:
with open('natal_chart_test.svg', 'w', encoding='utf-8') as f:
f.write(result['svg'])
print("SVG文件已保存为 natal_chart_test.svg")
return result
except requests.exceptions.RequestException as e:
print(f"请求错误: {e}")
return None
except json.JSONDecodeError as e:
print(f"JSON解析错误: {e}")
return None
def test_transit_chart(self):
"""测试行运盘API"""
url = f"{self.base_url}/onechart"
data = {
"chart_type": "transit",
"data": {
"datetime": "2024-01-01 12:00:00",
"lat": 39.9042,
"lon": 116.4074,
"tz": "8.0"
},
"house_system": "P",
"use_chinese_font": True
}
try:
response = requests.post(url, json=data)
response.raise_for_status()
result = response.json()
print("行运盘API测试成功")
print(f"返回数据包含: {list(result.keys())}")
print("完整的返回数据:")
print(result)
# 保存SVG文件
if 'svg' in result and result['svg']:
with open('transit_chart_test.svg', 'w', encoding='utf-8') as f:
f.write(result['svg'])
print("SVG文件已保存为 transit_chart_test.svg")
return result
except requests.exceptions.RequestException as e:
print(f"请求错误: {e}")
return None
except json.JSONDecodeError as e:
print(f"JSON解析错误: {e}")
return None
# 使用示例
if __name__ == "__main__":
tester = OnechartAPITest()
print("=== 测试本命盘API ===")
natal_result = tester.test_natal_chart()
print("\n=== 测试行运盘API ===")
transit_result = tester.test_transit_chart()
注意事项
- 日期时间格式必须严格遵循 YYYY-MM-DD HH:MM:SS 的格式
- 经纬度使用数字格式,东经北纬为正,西经南纬为负
- 时区使用字符串格式的数字,东区为正,西区为负,例如:"8.0"、"-5.0"
- 宫位系统为可选参数,默认为"P"(普拉西德系统)
- 支持的chart_type包括:"natal"(本命盘)、"transit"(行运盘)
- 返回的SVG字段可能为null,表示未生成图形
- API已通过完整测试,确保参数格式正确