获取 Neo4j 图数据库中所有 BusinessDomain(业务域)节点的列表。
/api/dataflow/get-BD-listGET无需请求参数
HTTP状态码: 200
响应体:
{
"code": 200,
"data": [
{
"id": 276,
"name_zh": "科室对照表",
"name_en": "TB_JC_KSDZB",
"tag": "数据资源"
},
{
"id": 277,
"name_zh": "科室对照表",
"name_en": "departments",
"tag": "数据模型"
}
],
"message": "操作成功"
}
| 字段 | 类型 | 说明 |
|---|---|---|
| code | Integer | 响应状态码,200表示成功 |
| data | Array | BusinessDomain节点列表 |
| data[].id | Integer | 节点ID(Neo4j内部ID) |
| data[].name_zh | String | 业务域中文名称 |
| data[].name_en | String | 业务域英文名称 |
| data[].tag | String | 标签名称,通过BELONGS_TO关系获取的DataLabel节点的中文名称 |
| message | String | 响应消息 |
HTTP状态码: 500
响应体:
{
"code": 500,
"message": "获取BusinessDomain列表失败: {错误详情}",
"data": {}
}
@bp.route('/get-BD-list', methods=['GET'])
def get_business_domain_list():
"""获取BusinessDomain节点列表"""
try:
logger.info("接收到获取BusinessDomain列表请求")
# 调用服务层函数获取BusinessDomain列表
bd_list = DataFlowService.get_business_domain_list()
res = success(bd_list, "操作成功")
return json.dumps(res, ensure_ascii=False, cls=MyEncoder)
except Exception as e:
logger.error(f"获取BusinessDomain列表失败: {str(e)}")
res = failed(f'获取BusinessDomain列表失败: {str(e)}', 500, {})
return json.dumps(res, ensure_ascii=False, cls=MyEncoder)
@staticmethod
def get_business_domain_list() -> List[Dict[str, Any]]:
"""
获取BusinessDomain节点列表
Returns:
BusinessDomain节点列表,每个节点包含 id, name_zh, name_en, tag
"""
try:
logger.info("开始查询BusinessDomain节点列表")
with connect_graph().session() as session:
# 查询所有BusinessDomain节点及其BELONGS_TO关系指向的标签
query = """
MATCH (bd:BusinessDomain)
OPTIONAL MATCH (bd)-[:BELONGS_TO]->(label:DataLabel)
RETURN id(bd) as id,
bd.name_zh as name_zh,
bd.name_en as name_en,
label.name_zh as tag
ORDER BY bd.create_time DESC
"""
result = session.run(query)
bd_list = []
for record in result:
bd_item = {
"id": record["id"],
"name_zh": record["name_zh"] if record["name_zh"] else "",
"name_en": record["name_en"] if record["name_en"] else "",
"tag": record["tag"] if record["tag"] else ""
}
bd_list.append(bd_item)
logger.info(f"成功查询到 {len(bd_list)} 个BusinessDomain节点")
return bd_list
except Exception as e:
logger.error(f"查询BusinessDomain节点列表失败: {str(e)}")
raise e
MATCH (bd:BusinessDomain)
OPTIONAL MATCH (bd)-[:BELONGS_TO]->(label:DataLabel)
RETURN id(bd) as id,
bd.name_zh as name_zh,
bd.name_en as name_en,
label.name_zh as tag
ORDER BY bd.create_time DESC
查询逻辑:
BusinessDomain 节点BELONGS_TO 关系指向的 DataLabel 节点curl -X GET http://localhost:5000/api/dataflow/get-BD-list \
-H "Content-Type: application/json"
fetch('http://localhost:5000/api/dataflow/get-BD-list', {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then(data => {
console.log('BusinessDomain列表:', data.data);
data.data.forEach(bd => {
console.log(`ID: ${bd.id}, 名称: ${bd.name_zh} (${bd.name_en}), 标签: ${bd.tag}`);
});
})
.catch(error => console.error('Error:', error));
import requests
url = "http://localhost:5000/api/dataflow/get-BD-list"
response = requests.get(url)
if response.status_code == 200:
result = response.json()
bd_list = result['data']
for bd in bd_list:
print(f"ID: {bd['id']}, 名称: {bd['name_zh']} ({bd['name_en']}), 标签: {bd['tag']}")
else:
print(f"请求失败: {response.text}")
标签字段(tag):
排序规则:
空值处理:
性能考虑:
POST /api/model/data/save - 创建数据模型时会自动创建 BusinessDomain 节点/api/dataflow/ 路径下的接口