# /labellist 接口说明(DataLabel 列表查询)
本文档描述数据接口模块提供的 DataLabel 列表查询接口,便于前端接入与调试。
## 基本信息
- **URL**:`/labellist`(最终完整路径取决于 `data_interface` 蓝图注册前缀,例如 `/api/data_interface/labellist`)
- **方法**:`POST`
- **内容类型**:`application/json`
- **返回格式**:`application/json`
## 请求参数(JSON Body)
| 字段 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| current | int | 否 | 页码,默认 1 |
| size | int | 否 | 每页条数,默认 10 |
| name_en | str | 否 | 标签英文名模糊匹配 |
| name_zh | str | 否 | 标签中文名模糊匹配 |
| category_filter | dict/list/str | 否 | 分类过滤。支持:
- `dict`:键为属性名,值为匹配内容,如 `{ "category": "质量", "scope": "公共" }`
- `list`:元素为 `{ "field": "...", "value": "..." }` 或单键值对,如 `[{"field":"category","value":"质量"},{"group":"公共"}]`
- `str`:等同于按 `category` 字段模糊匹配 |
| group | str | 否 | 分组名模糊匹配 |
说明:
- 所有字符串匹配均使用 Cypher `CONTAINS`(大小写敏感视 Neo4j 配置而定)。
- `category_filter` 会按提供的多个条件叠加 `AND` 过滤。
## 响应字段
成功时(`code=200`,`message="success"`):
```json
{
"code": 200,
"message": "success",
"data": {
"records": [
{
"id": 123,
"name_zh": "示例标签",
"name_en": "sample_label",
"category": "质量",
"group": "公共",
"describe": null,
"scope": null,
"number": 4
}
],
"total": 57,
"size": 10,
"current": 1
}
}
```
失败时(例如参数错误或 Neo4j 异常):
```json
{
"code": 500,
"message": "错误描述",
"data": {}
}
```
## 请求示例
```http
POST /labellist
Content-Type: application/json
{
"current": 1,
"size": 10,
"name_zh": "标签",
"category_filter": [
{"field": "category", "value": "质量"},
{"field": "scope", "value": "公共"}
],
"group": "模型"
}
```
## 返回示例
```json
{
"code": 200,
"message": "success",
"data": {
"records": [
{
"id": 321,
"name_zh": "标签-质量",
"name_en": "label_quality",
"category": "质量",
"group": "模型",
"describe": null,
"scope": null,
"number": 2
}
],
"total": 5,
"size": 10,
"current": 1
}
}
```
## 前端对接提示
- 必须以 `POST + JSON` 调用;若使用 Fetch/axios,设置 `headers: { "Content-Type": "application/json" }`。
- 分页字段 `current`、`size` 需为整数,未传时后端使用默认值。
- `category_filter` 支持多条件 AND 过滤,请确保字段名为合法的 Neo4j 属性名(只含字母、数字、下划线,且非数字开头)。
- 返回的 `number` 字段表示该标签入度+出度关系数量,可用于前端展示关联数。