设计时状态标签管理(StateLabelController)¶
状态标签(StateLabel)设计时资源管理:状态标签的增删改查(含批量删除)。
- 接口类型:REST 资源
- 基址:
${myapps.context-path.designer:}/api/designtime/applications(类级@RequestMapping,produces = APPLICATION_JSON_VALUE) - Tag:设计时-状态标签模块
公共说明¶
- 鉴权:是(需 designerToken)。控制器继承自
AbstractDesignTimeController(基类为@RestController),通过Security.getDesignerIdFromToken(request)从 designerToken JWT 中解析设计器用户。鉴权机制详见 index.md「鉴权说明」。 - 路径变量:
{applicationId}、{stateLabelId}、{id}均为**明文设计时 ID**(与 designer 其他控制器一致,非 runtime 的 DES 加密密文)。 - 响应:统一
Resource(见 ../index.md「统一响应结构」)。成功errcode=0;异常默认errcode=500,errmsg为异常信息(如「 该名称已存在,请重新命名再保存! 」、{*[page.name.notexist]*})。 - HTTP 方法:受
CommonSecurityFilter限制,仅允许GET/POST/HEAD/OPTIONS。 - HTTP 状态码:新建接口返回
201 Created(@ResponseStatus),其余接口200 OK;统一Resource仍以errcode表达业务结果。 - 请求体约定:POST/PUT/DELETE 接收原始 JSON 字符串(
@RequestBody String content)或 JSON 字符串数组(@RequestBody String[]),由服务端用JSONObject.fromObject解析。
1. 获取状态标签列表¶
分页获取指定应用下的状态标签列表,可按名称或描述关键字查询。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/{applicationId}/statelabels(完整:{designer-context}/api/designtime/applications/{applicationId}/statelabels) - 鉴权:是(需 designerToken)
- Tag:设计时-状态标签模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| searchword | query | string | 否 | 按名称或描述查询关键字 |
| pageNo | query | string | 否 | 当前页数(缺省 1) |
| linesPerPage | query | string | 否 | 每页行数(缺省 10) |
说明:三个查询形参均未标注
@RequestParam,由 Spring MVC 按请求参数绑定,故可缺省;服务端做了空字符串兜底(pageNo缺省1、linesPerPage缺省10)。@Parameter中标注为必填,但实现做了缺省兜底。
请求示例¶
GET /api/designtime/applications/{applicationId}/statelabels?searchword=&pageNo=1&linesPerPage=10 HTTP/1.1
响应¶
结构:统一 Resource(见 ../index.md「统一响应结构」)。
data:JSONObject,含分页字段 linesPerPage/pageCount/pageNo/rowCount,以及 data 数组(每项 {id, name, description, value, orderNo})。
成功示例:
{
"errcode": 0,
"errmsg": "ok",
"data": {
"linesPerPage": 10,
"pageCount": 1,
"pageNo": 1,
"rowCount": 2,
"data": [
{ "id": "...", "name": "进行中", "description": "...", "value": "...", "orderNo": 1 }
]
},
"errors": null
}
2. 获取状态标签详情¶
按状态标签Id获取完整状态标签对象。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/{applicationId}/statelabels/{stateLabelId} - 鉴权:是(需 designerToken)
- Tag:设计时-状态标签模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| stateLabelId | path | string | 是 | 状态标签Id |
响应¶
data:StateLabel 完整对象。
{ "errcode": 0, "errmsg": "ok", "data": { "id": "...", "name": "...", "value": "...", "description": "...", "orderNo": 1, "...": "..." }, "errors": null }
3. 新建状态标签¶
在指定应用下新建状态标签。请求体反序列化为 StateLabel;id 为空时自动生成;name 为空时抛出 {*[page.name.notexist]*};保存前会做重名校验。
- 接口类型:REST 资源
- 请求方式:
POST - 请求路径:
/{applicationId}/statelabels - 鉴权:是(需 designerToken)
- Tag:设计时-状态标签模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| content | body | string(JSON) | 是 | 状态标签对象 JSON |
请求体¶
对应 StateLabel 对象的 JSON(含 name、value、description、orderNo 等)。
响应¶
data:JSONObject,仅含 id(新建状态标签Id)。校验失败时 errcode=500(沿用异常返回,未走 40001),errmsg 为对应国际化/中文文案。
成功示例(HTTP 201):
失败示例:4. 更新状态标签¶
按状态标签Id更新状态标签对象(含重名校验)。校验逻辑会跳过「同名且同Id」的自身记录。
- 接口类型:REST 资源
- 请求方式:
PUT - 请求路径:
/{applicationId}/statelabels/{id} - 鉴权:是(需 designerToken)
- Tag:设计时-状态标签模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| id | path | string | 是 | 状态标签Id |
| content | body | string(JSON) | 是 | 状态标签对象 JSON |
请求体¶
对应 StateLabel 对象的 JSON(id 以路径变量为准,请求体内的 id 会被覆盖)。
响应¶
data:null(成功)。
5. 删除状态标签(可批量)¶
按状态标签Id数组批量删除状态标签(含路径信息收集)。
- 接口类型:REST 资源
- 请求方式:
DELETE - 请求路径:
/{applicationId}/statelabels - 鉴权:是(需 designerToken)
- Tag:设计时-状态标签模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| ids | body | string | 是 | 状态标签Id数组(JSON 数组反序列化为 String[]) |
请求体¶
响应¶
data:String,固定为 "删除成功"。