REST API 指南
本节介绍 Spring Cloud Data Flow REST API。
42. 概述
Spring Cloud Data Flow 提供了一个 REST API,允许您访问服务器的所有方面。 事实上,Spring Cloud Data Flow shell 是该 API 的一流使用者。
如果您计划将 REST API 与 Java 一起使用,则应考虑使用
提供了内部使用 REST API 的 Java 客户端 ()。DataflowTemplate |
42.1. HTTP 版本
Spring Cloud Data Flow 会建立一个 RESTful API 版本,当 API 发生重大更改时,该版本会进行更新。 API 版本可以在 Spring Cloud Data Flow 主页的末尾看到,如以下示例所示:
{
"_links": {
"dashboard": { "href" : "http://localhost:9393/dashboard" },
...
},
"api.revision":15
}
下表显示了 SCDF 发行版及其当前的 RESTful API 版本。
SCDF 版本 | API 版本 |
---|---|
2.11.x 版本 |
14 |
2.10.x 版本 |
14 |
2.9.x 版本 |
14 |
2.8.x 版本 |
14 |
2.7.x 版本 |
14 |
42.2. HTTP 动词
Spring Cloud Data Flow 在使用 HTTP 动词时,会尝试尽可能严格遵守标准 HTTP 和 REST 约定,如下表所述:
动词 | 用法 |
---|---|
|
用于检索资源。 |
|
用于创建新资源。 |
|
用于更新现有资源,包括部分更新。也用于
隐含 概念的资源,例如 Tasks。 |
|
用于删除现有资源。 |
42.3. HTTP 状态代码
Spring Cloud Data Flow 在使用 HTTP 状态代码时,会尝试尽可能严格遵守标准 HTTP 和 REST 约定,如下表所示:
状态代码 | 用法 |
---|---|
|
请求已成功完成。 |
|
已成功创建新资源。资源的 URI 可从响应的标头中获得。 |
|
已成功应用对现有资源的更新。 |
|
请求格式不正确。响应正文包含提供更多信息的错误描述。 |
|
请求的资源不存在。 |
|
请求的资源已存在。例如,任务已存在或流已在部署 |
|
在无法停止或重新启动任务执行的情况下返回。 |
42.5. 错误
路径 | 类型 | 描述 |
---|---|---|
|
|
发生的 HTTP 错误,例如 |
|
|
错误原因的描述 |
|
|
发出请求的路径 |
|
|
HTTP 状态代码,例如 |
|
|
发生错误的时间(以毫秒为单位) |
42.6. 超媒体
Spring Cloud Data Flow 使用超媒体,并且资源包含指向其他资源的链接
在他们的回答中。
响应采用 Hypertext Application from resource-to-resource Language (HAL) 格式。
链接可以在密钥下方找到。
API 的用户不应自行创建 URI。
相反,他们应该使用上述链接进行导航。_links
43. 资源
API 包括以下资源:
43.1. 索引
该索引提供了 Spring Cloud Data Flow 的 REST API 的入口点。 以下主题提供了更多详细信息:
43.1.1. 访问索引
使用请求访问索引。GET
响应结构
路径 | 类型 | 描述 |
---|---|---|
|
|
指向其他资源的链接 |
|
|
每次在此 REST API 中实施更改时递增 |
|
|
链接到审核记录 |
|
|
链接到仪表板 |
|
|
链接到 schema/versions |
|
|
链接到 schema/targets |
|
|
链接到流/定义 |
|
|
链接到 streams/definitions/definition |
|
|
链接流/定义/定义已模板化 |
|
|
链接到 runtime/apps |
|
|
链接到 runtime/apps/{appId} |
|
|
链接 runtime/apps 已模板化 |
|
|
链接到 runtime/apps/{appId}/instances |
|
|
链接 runtime/apps/{appId}/instances 已模板化 |
|
|
链接到 runtime/apps/{appId}/instances/{instanceId} |
|
|
链接 runtime/apps/{appId}/instances/{instanceId} 已模板化 |
|
|
链接到 runtime/apps/{appId}/instances/{instanceId}/post |
|
|
链接 runtime/apps/{appId}/instances/{instanceId}/post 已模板化 |
|
|
链接到 runtime/apps/{appId}/instances/{instanceId}/actuator |
|
|
链接 runtime/apps/{appId}/instances/{instanceId}/actuator 已模板化 |
|
|
链接到 runtime/streams |
|
|
链接运行时/流已模板化 |
|
|
链接到 runtime/streams/{streamNames} |
|
|
链接 runtime/streams/{streamNames} 已模板化 |
|
|
链接到流/日志 |
|
|
链接到 streams/logs/{streamName} |
|
|
链接到 streams/logs/{streamName}/{appName} |
|
|
链接 streams/logs/{streamName} 已模板化 |
|
|
链接 streams/logs/{streamName}/{appName} 已模板化 |
|
|
链接到流/部署 |
|
|
链接到流/部署 |
|
|
链接 streams/deployments/{name} 已模板化 |
|
|
链接 streams/deployments/{name} 已模板化 |
|
|
链接 streams/deployments/{name} 已模板化 |
|
|
链接 streams/deployments/{name} 已模板化 |
|
|
链接 streams/deployments/{name} 已模板化 |
|
|
链接到 streams/deployments/deployment |
|
|
链接流/部署/部署已模板化 |
|
|
链接到 streams/deployments/manifest/{name}/{version} |
|
|
链接流/deployments/manifest/{name}/{version} 已模板化 |
|
|
链接到 streams/deployments/history/{name} |
|
|
链接流/部署/历史记录已模板化 |
|
|
链接到 streams/deployments/rollback/{name}/{version} |
|
|
链接流/deployments/rollback/{name}/{version} 已模板化 |
|
|
链接到 streams/deployments/update/{name} |
|
|
链接 streams/deployments/update/{name} 已模板化 |
|
|
链接到 streams/deployments/platform/list |
|
|
链接到 streams/deployments/scale/{streamName}/{appName}/instances/{count} |
|
|
链接流/deployments/scale/{streamName}/{appName}/instances/{count} 已模板化 |
|
|
链接到 streams/validation |
|
|
链接流/验证已模板化 |
|
|
链接到任务/平台 |
|
|
链接到任务/定义 |
|
|
链接到 tasks/definitions/definition |
|
|
链接任务/定义/定义已模板化 |
|
|
链接到任务/执行 |
|
|
链接到 tasks/executions/launch |
|
|
指示 Link tasks/executions/launch 已模板化 |
|
|
指向 tasks/executions/name 的链接 |
|
|
链接 tasks/executions/name 已模板化 |
|
|
链接到 tasks/executions/current |
|
|
链接到 tasks/executions/execution |
|
|
链接任务/执行/执行已模板化 |
|
|
链接到 tasks/executions/external |
|
|
链接 tasks/executions/external 已模板化 |
|
|
链接到 tasks/info/executions |
|
|
链接任务/信息已模板化 |
|
|
链接到任务/日志 |
|
|
链接任务/日志已模板化 |
|
|
链接到 tasks/thinexecutions |
|
|
链接到任务/执行/计划 |
|
|
链接到 tasks/schedules/instances |
|
|
链接任务/计划/实例已模板化 |
|
|
链接到 tasks/validation |
|
|
链接任务/验证已模板化 |
|
|
链接到作业/执行 |
|
|
链接到 jobs/thinexecutions |
|
|
链接到 jobs/executions/name |
|
|
链接 jobs/executions/name 已模板化 |
|
|
链接到 jobs/executions/status |
|
|
链接作业/执行/状态已模板化 |
|
|
链接到 jobs/thinexecutions/name |
|
|
链接 jobs/executions/name 已模板化 |
|
|
链接到 jobs/thinexecutions/jobInstanceId |
|
|
链接 jobs/executions/jobInstanceId 已模板化 |
|
|
链接到 jobs/thinexecutions/taskExecutionId |
|
|
链接 jobs/executions/taskExecutionId 已模板化 |
|
|
链接到 jobs/executions/execution |
|
|
链接作业/执行/执行已模板化 |
|
|
链接到 jobs/executions/execution/steps |
|
|
链接 jobs/executions/execution/steps 已模板化 |
|
|
链接到 jobs/executions/execution/steps/step |
|
|
链接 jobs/executions/execution/steps/step 已模板化 |
|
|
链接到 jobs/executions/execution/steps/step/progress |
|
|
链接 jobs/executions/execution/steps/step/progress 已模板化 |
|
|
指向 jobs/instances/name 的链接 |
|
|
链接 jobs/instances/name 已模板化 |
|
|
链接到 jobs/instances/instance |
|
|
链接 jobs/instances/instance 已模板化 |
|
|
链接到 tools/parseTaskTextToGraph |
|
|
链接到 tools/convertTaskGraphToText |
|
|
链接到应用程序 |
|
|
链接到关于 |
|
|
链接到 completions/stream |
|
|
链接完成数/流已模板化 |
|
|
链接到完成/任务 |
|
|
链接完成数/任务已模板化 |
示例响应
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 8220
{
"_links" : {
"dashboard" : {
"href" : "http://localhost:9393/dashboard"
},
"audit-records" : {
"href" : "http://localhost:9393/audit-records"
},
"schema/versions" : {
"href" : "http://localhost:9393/schema/versions"
},
"schema/targets" : {
"href" : "http://localhost:9393/schema/targets"
},
"streams/definitions" : {
"href" : "http://localhost:9393/streams/definitions"
},
"streams/definitions/definition" : {
"href" : "http://localhost:9393/streams/definitions/{name}",
"templated" : true
},
"streams/validation" : {
"href" : "http://localhost:9393/streams/validation/{name}",
"templated" : true
},
"runtime/streams" : {
"href" : "http://localhost:9393/runtime/streams{?names}",
"templated" : true
},
"runtime/streams/{streamNames}" : {
"href" : "http://localhost:9393/runtime/streams/{streamNames}",
"templated" : true
},
"runtime/apps" : {
"href" : "http://localhost:9393/runtime/apps"
},
"runtime/apps/{appId}" : {
"href" : "http://localhost:9393/runtime/apps/{appId}",
"templated" : true
},
"runtime/apps/{appId}/instances" : {
"href" : "http://localhost:9393/runtime/apps/{appId}/instances",
"templated" : true
},
"runtime/apps/{appId}/instances/{instanceId}" : {
"href" : "http://localhost:9393/runtime/apps/{appId}/instances/{instanceId}",
"templated" : true
},
"runtime/apps/{appId}/instances/{instanceId}/actuator" : [ {
"href" : "http://localhost:9393/runtime/apps/{appId}/instances/{instanceId}/actuator?endpoint={endpoint}",
"templated" : true
}, {
"href" : "http://localhost:9393/runtime/apps/{appId}/instances/{instanceId}/actuator",
"templated" : true
} ],
"runtime/apps/{appId}/instances/{instanceId}/post" : {
"href" : "http://localhost:9393/runtime/apps/{appId}/instances/{instanceId}/post",
"templated" : true
},
"streams/deployments" : {
"href" : "http://localhost:9393/streams/deployments"
},
"streams/deployments/{name}{?reuse-deployment-properties}" : {
"href" : "http://localhost:9393/streams/deployments/{name}?reuse-deployment-properties=false",
"templated" : true
},
"streams/deployments/{name}" : {
"href" : "http://localhost:9393/streams/deployments/{name}",
"templated" : true
},
"streams/deployments/history/{name}" : {
"href" : "http://localhost:9393/streams/deployments/history/{name}",
"templated" : true
},
"streams/deployments/manifest/{name}/{version}" : {
"href" : "http://localhost:9393/streams/deployments/manifest/{name}/{version}",
"templated" : true
},
"streams/deployments/platform/list" : {
"href" : "http://localhost:9393/streams/deployments/platform/list"
},
"streams/deployments/rollback/{name}/{version}" : {
"href" : "http://localhost:9393/streams/deployments/rollback/{name}/{version}",
"templated" : true
},
"streams/deployments/update/{name}" : {
"href" : "http://localhost:9393/streams/deployments/update/{name}",
"templated" : true
},
"streams/deployments/deployment" : {
"href" : "http://localhost:9393/streams/deployments/{name}",
"templated" : true
},
"streams/deployments/scale/{streamName}/{appName}/instances/{count}" : {
"href" : "http://localhost:9393/streams/deployments/scale/{streamName}/{appName}/instances/{count}",
"templated" : true
},
"streams/logs" : {
"href" : "http://localhost:9393/streams/logs"
},
"streams/logs/{streamName}" : {
"href" : "http://localhost:9393/streams/logs/{streamName}",
"templated" : true
},
"streams/logs/{streamName}/{appName}" : {
"href" : "http://localhost:9393/streams/logs/{streamName}/{appName}",
"templated" : true
},
"tasks/platforms" : {
"href" : "http://localhost:9393/tasks/platforms"
},
"tasks/definitions" : {
"href" : "http://localhost:9393/tasks/definitions"
},
"tasks/definitions/definition" : {
"href" : "http://localhost:9393/tasks/definitions/{name}",
"templated" : true
},
"tasks/executions" : {
"href" : "http://localhost:9393/tasks/executions"
},
"tasks/executions/external" : {
"href" : "http://localhost:9393/tasks/executions/external/{externalExecutionId}{?platform}",
"templated" : true
},
"tasks/executions/launch" : {
"href" : "http://localhost:9393/tasks/executions/launch?name={name}{&properties,arguments}",
"templated" : true
},
"tasks/executions/name" : {
"href" : "http://localhost:9393/tasks/executions{?name}",
"templated" : true
},
"tasks/executions/current" : {
"href" : "http://localhost:9393/tasks/executions/current"
},
"tasks/executions/execution" : {
"href" : "http://localhost:9393/tasks/executions/{id}{?schemaTarget}",
"templated" : true
},
"tasks/validation" : {
"href" : "http://localhost:9393/tasks/validation/{name}",
"templated" : true
},
"tasks/info/executions" : {
"href" : "http://localhost:9393/tasks/info/executions{?completed,name,days}",
"templated" : true
},
"tasks/logs" : {
"href" : "http://localhost:9393/tasks/logs/{taskExternalExecutionId}{?platformName,schemaTarget}",
"templated" : true
},
"tasks/thinexecutions" : {
"href" : "http://localhost:9393/tasks/thinexecutions"
},
"tasks/schedules" : {
"href" : "http://localhost:9393/tasks/schedules"
},
"tasks/schedules/instances" : {
"href" : "http://localhost:9393/tasks/schedules/instances/{taskDefinitionName}",
"templated" : true
},
"jobs/executions" : {
"href" : "http://localhost:9393/jobs/executions"
},
"jobs/executions/name" : {
"href" : "http://localhost:9393/jobs/executions{?name}",
"templated" : true
},
"jobs/executions/status" : {
"href" : "http://localhost:9393/jobs/executions{?status}",
"templated" : true
},
"jobs/executions/execution" : {
"href" : "http://localhost:9393/jobs/executions/{id}",
"templated" : true
},
"jobs/executions/execution/steps" : {
"href" : "http://localhost:9393/jobs/executions/{jobExecutionId}/steps",
"templated" : true
},
"jobs/executions/execution/steps/step" : {
"href" : "http://localhost:9393/jobs/executions/{jobExecutionId}/steps/{stepId}",
"templated" : true
},
"jobs/executions/execution/steps/step/progress" : {
"href" : "http://localhost:9393/jobs/executions/{jobExecutionId}/steps/{stepId}/progress",
"templated" : true
},
"jobs/instances/name" : {
"href" : "http://localhost:9393/jobs/instances{?name}",
"templated" : true
},
"jobs/instances/instance" : {
"href" : "http://localhost:9393/jobs/instances/{id}",
"templated" : true
},
"tools/parseTaskTextToGraph" : {
"href" : "http://localhost:9393/tools"
},
"tools/convertTaskGraphToText" : {
"href" : "http://localhost:9393/tools"
},
"jobs/thinexecutions" : {
"href" : "http://localhost:9393/jobs/thinexecutions"
},
"jobs/thinexecutions/name" : {
"href" : "http://localhost:9393/jobs/thinexecutions{?name}",
"templated" : true
},
"jobs/thinexecutions/jobInstanceId" : {
"href" : "http://localhost:9393/jobs/thinexecutions{?jobInstanceId}",
"templated" : true
},
"jobs/thinexecutions/taskExecutionId" : {
"href" : "http://localhost:9393/jobs/thinexecutions{?taskExecutionId}",
"templated" : true
},
"apps" : {
"href" : "http://localhost:9393/apps"
},
"about" : {
"href" : "http://localhost:9393/about"
},
"completions/stream" : {
"href" : "http://localhost:9393/completions/stream{?start,detailLevel}",
"templated" : true
},
"completions/task" : {
"href" : "http://localhost:9393/completions/task{?start,detailLevel}",
"templated" : true
}
},
"api.revision" : 14
}
链接
索引的主要元素是链接,因为它们允许您遍历 API 并执行所需的功能:
关系 | 描述 |
---|---|
|
访问元信息,包括启用的功能、安全信息、版本信息 |
|
访问仪表板 UI |
|
提供审计跟踪信息 |
|
处理已注册的应用程序 |
|
公开 Stream 的 DSL 完成功能 |
|
公开 Task 的 DSL 完成功能 |
|
提供 JobExecution 资源 |
|
提供不包含步骤执行的 JobExecution 瘦资源 |
|
提供特定 JobExecution 的详细信息 |
|
提供 JobExecution 的步骤 |
|
返回特定步骤的详细信息 |
|
提供特定步骤的进度信息 |
|
按任务名称检索任务执行 |
|
按任务状态检索任务执行 |
|
按任务名称检索任务执行,不包含步骤执行 |
|
按作业实例 ID 检索任务执行,不包括步骤执行 |
|
按任务执行 ID 检索任务执行,不包括步骤执行 |
|
为特定作业实例提供作业实例资源 |
|
为特定作业名称提供作业实例资源 |
|
公开流运行时状态 |
|
公开给定流名称的流运行时状态 |
|
提供运行时应用程序资源 |
|
公开特定应用的运行时状态 |
|
提供应用程序实例的状态 |
|
提供特定应用程序实例的状态 |
|
实验性:允许在特定应用程序实例上调用 Actuator 端点 |
|
实验性:允许在 http 接收器上执行 POST 操作 |
|
提供任务定义资源 |
|
提供特定任务定义的详细信息 |
|
提供任务定义的验证 |
|
返回 Task executions |
|
用于启动 Task 执行 |
|
返回按外部 ID 执行任务 |
|
提供正在运行的任务的当前计数 |
|
提供任务执行信息 |
|
提供任务的进度信息 |
|
提供特定任务的计划信息 |
|
返回给定 Task name 的所有任务执行 |
|
提供特定任务执行的详细信息 |
|
提供用于启动任务的平台账户。可以通过添加 'schedulesEnabled=true 的请求参数来筛选结果以显示支持计划的平台 |
|
检索任务应用程序日志 |
|
返回精简 Task 执行 |
|
Spring Boot 相关架构列表 |
|
架构目标列表 |
|
公开 Streams 资源 |
|
处理特定的 Stream 定义 |
|
提供流定义的验证 |
|
提供 Stream 部署操作 |
|
请求流定义的部署信息 |
|
请求流定义的部署信息 |
|
请求(取消)部署现有流定义 |
|
返回 release 版本的清单信息 |
|
以列表形式获取流的部署历史记录或此版本的版本 |
|
将流回滚到流的上一个版本或特定版本 |
|
更新流。 |
|
支持的部署平台列表 |
|
增加或减少所选流的应用程序实例数 |
|
检索流的应用程序日志 |
|
检索流的应用程序日志 |
|
检索流的特定应用程序日志 |
|
将任务定义解析为图形结构 |
|
将图形格式转换为 DSL 文本格式 |
43.2. 服务器元信息
服务器元信息端点提供有关服务器本身的更多信息。 以下主题提供了更多详细信息:
43.2.1. 检索有关服务器的信息
请求返回 Spring Cloud Data Flow 的元信息,包括:GET
-
运行时环境信息
-
有关已启用哪些功能的信息
-
Spring Cloud Data Flow Server 的依赖信息
-
安全信息
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 2635
{
"featureInfo" : {
"analyticsEnabled" : true,
"streamsEnabled" : true,
"tasksEnabled" : true,
"schedulesEnabled" : true,
"monitoringDashboardType" : "NONE"
},
"versionInfo" : {
"implementation" : {
"name" : "${info.app.name}",
"version" : "2.11.5"
},
"core" : {
"name" : "Spring Cloud Data Flow Core",
"version" : "2.11.5"
},
"dashboard" : {
"name" : "Spring Cloud Dataflow UI",
"version" : "3.4.6"
},
"shell" : {
"name" : "Spring Cloud Data Flow Shell",
"version" : "2.11.5",
"url" : "https://repo.maven.apache.org/maven2/org/springframework/cloud/spring-cloud-dataflow-shell/2.11.5/spring-cloud-dataflow-shell-2.11.5.jar"
}
},
"securityInfo" : {
"authenticationEnabled" : false,
"authenticated" : false,
"username" : null,
"roles" : [ ]
},
"runtimeEnvironment" : {
"appDeployer" : {
"deployerImplementationVersion" : "Test Version",
"deployerName" : "Test Server",
"deployerSpiVersion" : "2.11.5",
"javaVersion" : "1.8.0_422",
"platformApiVersion" : "",
"platformClientVersion" : "",
"platformHostVersion" : "",
"platformSpecificInfo" : {
"default" : "local"
},
"platformType" : "Skipper Managed",
"springBootVersion" : "2.7.18",
"springVersion" : "5.3.39"
},
"taskLaunchers" : [ {
"deployerImplementationVersion" : "unknown",
"deployerName" : "LocalTaskLauncher",
"deployerSpiVersion" : "unknown",
"javaVersion" : "1.8.0_422",
"platformApiVersion" : "Linux 6.5.0-1025-azure",
"platformClientVersion" : "6.5.0-1025-azure",
"platformHostVersion" : "6.5.0-1025-azure",
"platformSpecificInfo" : { },
"platformType" : "Local",
"springBootVersion" : "2.7.18",
"springVersion" : "5.3.39"
} ]
},
"monitoringDashboardInfo" : {
"url" : "",
"refreshInterval" : 15,
"dashboardType" : "NONE",
"source" : "default-scdf-source"
},
"gitAndBuildInfo" : {
"git" : {
"commit" : {
"time" : "2024-04-24T11:35:29Z",
"id" : {
"abbrev" : "fddafed",
"full" : "fddafed39b919981cbb5bd04bd7fb5266fa25309"
}
},
"branch" : "main"
},
"build" : {
"version" : "2.11.3-SNAPSHOT",
"artifact" : "spring-cloud-dataflow-server",
"name" : "Spring Cloud Data Flow Server",
"group" : "org.springframework.cloud",
"time" : "2024-04-25T12:36:37.169Z"
}
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/about"
}
}
}
43.3. 注册的应用程序
已注册的应用程序终端节点提供有关向 Spring Cloud Data Flow 服务器注册的应用程序的信息。 以下主题提供了更多详细信息:
43.3.1. 列出应用程序
请求列出了 Spring Cloud Data Flow 已知的所有应用程序。
以下主题提供了更多详细信息:GET
请求结构
GET /apps?search=&type=source&defaultVersion=true&page=0&size=10&sort=name%2CASC HTTP/1.1
Accept: application/json
Host: localhost:9393
请求参数
参数 | 描述 |
---|---|
|
对名称执行的搜索字符串(可选) |
|
将返回的应用程序限制为应用程序的类型。[app, source, processor, sink, task] 之一 |
|
布尔标志,用于仅检索默认版本的应用程序(可选) |
|
从零开始的页码(可选) |
|
列表中的排序 (可选) |
|
请求的页面大小(可选) |
示例请求
$ curl 'http://localhost:9393/apps?search=&type=source&defaultVersion=true&page=0&size=10&sort=name%2CASC' -i -X GET \
-H 'Accept: application/json'
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1151
{
"_embedded" : {
"appRegistrationResourceList" : [ {
"name" : "http",
"type" : "source",
"uri" : "maven://org.springframework.cloud.stream.app:http-source-rabbit:1.2.0.RELEASE",
"version" : "1.2.0.RELEASE",
"defaultVersion" : true,
"bootVersion" : "2",
"versions" : [ "1.2.0.RELEASE" ],
"label" : null,
"_links" : {
"self" : {
"href" : "http://localhost:9393/apps/source/http/1.2.0.RELEASE"
}
}
}, {
"name" : "time",
"type" : "source",
"uri" : "maven://org.springframework.cloud.stream.app:time-source-rabbit:1.2.0.RELEASE",
"version" : "1.2.0.RELEASE",
"defaultVersion" : true,
"bootVersion" : "2",
"versions" : [ "1.2.0.RELEASE" ],
"label" : null,
"_links" : {
"self" : {
"href" : "http://localhost:9393/apps/source/time/1.2.0.RELEASE"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/apps?page=0&size=10&sort=name,asc"
}
},
"page" : {
"size" : 10,
"totalElements" : 2,
"totalPages" : 1,
"number" : 0
}
}
43.3.2. 获取有关特定应用程序的信息
请求 on 获取有关特定应用程序的信息。
以下主题提供了更多详细信息:GET
/apps/<type>/<name>
路径参数
/apps/{type}/{name}
参数 | 描述 |
---|---|
|
要查询的应用程序的类型。[app, source, processor, sink, task] 之一 |
|
要查询的应用程序的名称 |
示例请求
$ curl 'http://localhost:9393/apps/source/http?exhaustive=false' -i -X GET \
-H 'Accept: application/json'
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 382
{
"name" : "http",
"type" : "source",
"uri" : "maven://org.springframework.cloud.stream.app:http-source-rabbit:1.2.0.RELEASE",
"version" : "1.2.0.RELEASE",
"defaultVersion" : true,
"bootVersion" : "2",
"versions" : null,
"label" : null,
"options" : [ ],
"shortDescription" : null,
"inboundPortNames" : [ ],
"outboundPortNames" : [ ],
"optionGroups" : { }
}
43.3.3. 注册新应用程序
请求 on 允许注册新应用程序。
以下主题提供了更多详细信息:POST
/apps/<type>/<name>
请求结构
POST /apps/source/http?bootVersion=2 HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
uri=maven%3A%2F%2Forg.springframework.cloud.stream.app%3Ahttp-source-rabbit%3A1.1.0.RELEASE
请求参数
参数 | 描述 |
---|---|
|
应用程序位所在的 URI |
|
可以找到应用程序元数据 jar 的 URI |
|
应用程序的 Spring Boot 版本。默认值为 2 |
|
如果已存在具有相同名称和类型的注册,则必须为 true,否则将发生错误 |
路径参数
/apps/{type}/{name}
参数 | 描述 |
---|---|
|
要注册的应用程序类型。[app, source, processor, sink, task] 之一 |
|
要注册的应用程序的名称 |
43.3.4. 使用 version 注册新应用程序
请求 on 允许注册新应用程序。
以下主题提供了更多详细信息:POST
/apps/<type>/<name>/<version>
请求结构
POST /apps/source/http/1.1.0.RELEASE?bootVersion=2 HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
uri=maven%3A%2F%2Forg.springframework.cloud.stream.app%3Ahttp-source-rabbit%3A1.1.0.RELEASE
请求参数
参数 | 描述 |
---|---|
|
应用程序位所在的 URI |
|
可以找到应用程序元数据 jar 的 URI |
|
如果已存在具有相同名称和类型的注册,则必须为 true,否则将发生错误 |
|
Spring Boot 版本。值为 2 或 3。必须提供大于 2. |
路径参数
/apps/{type}/{name}/{version:.+}
参数 | 描述 |
---|---|
|
要注册的应用程序类型。[app, source, processor, sink, task] 之一(可选) |
|
要注册的应用程序的名称 |
|
要注册的应用程序版本 |
43.3.5. 批量注册应用程序
请求 on 允许一次注册多个应用程序。
以下主题提供了更多详细信息:POST
/apps
请求结构
POST /apps HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
apps=source.http%3Dmaven%3A%2F%2Forg.springframework.cloud.stream.app%3Ahttp-source-rabbit%3A1.1.0.RELEASE&force=false
请求参数
参数 | 描述 |
---|---|
|
URI,可在其中获取包含注册的属性文件。独占 . |
|
内联注册集。独占 . |
|
如果已存在具有相同名称和类型的注册,则必须为 true,否则将发生错误 |
示例请求
$ curl 'http://localhost:9393/apps' -i -X POST \
-d 'apps=source.http%3Dmaven%3A%2F%2Forg.springframework.cloud.stream.app%3Ahttp-source-rabbit%3A1.1.0.RELEASE&force=false'
响应结构
HTTP/1.1 201 Created
Content-Type: application/hal+json
Content-Length: 685
{
"_embedded" : {
"appRegistrationResourceList" : [ {
"name" : "http",
"type" : "source",
"uri" : "maven://org.springframework.cloud.stream.app:http-source-rabbit:1.1.0.RELEASE",
"version" : "1.1.0.RELEASE",
"defaultVersion" : true,
"bootVersion" : "2",
"versions" : null,
"label" : null,
"_links" : {
"self" : {
"href" : "http://localhost:9393/apps/source/http/1.1.0.RELEASE"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/apps?page=0&size=20"
}
},
"page" : {
"size" : 20,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.3.6. 设置默认应用程序版本
对于具有相同 和 的应用程序,您可以注册多个版本。
在这种情况下,您可以选择其中一个版本作为默认应用程序。name
type
以下主题提供了更多详细信息:
路径参数
/apps/{type}/{name}/{version:.+}
参数 | 描述 |
---|---|
|
应用程序的类型。[app, source, processor, sink, task] 之一 |
|
应用程序的名称 |
|
应用程序的版本 |
43.4. Schema 信息
架构信息端点提供有关 Task 和 Batch 应用程序支持的 Spring Boot 架构版本以及可用架构目标的信息。
以下主题提供了更多详细信息:
43.4.2. 列出所有 schema 目标
架构端点提供用于列出支持的架构目标。
以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 660
{
"defaultSchemaTarget" : "boot2",
"schemas" : [ {
"name" : "boot3",
"schemaVersion" : "3",
"taskPrefix" : "BOOT3_TASK_",
"batchPrefix" : "BOOT3_BATCH_",
"datasource" : null,
"_links" : {
"self" : {
"href" : "http://localhost:9393/schema/targets/boot3"
}
}
}, {
"name" : "boot2",
"schemaVersion" : "2",
"taskPrefix" : "TASK_",
"batchPrefix" : "BATCH_",
"datasource" : null,
"_links" : {
"self" : {
"href" : "http://localhost:9393/schema/targets/boot2"
}
}
} ],
"_links" : {
"self" : {
"href" : "http://localhost:9393/schema/targets"
}
}
}
43.5. 审计记录
Audit records 端点提供有关审计记录的信息。以下主题提供了更多详细信息:
43.5.1. 列出所有审计记录
的 audit records 端点允许您检索审计跟踪信息。
以下主题提供了更多详细信息:
请求结构
GET /audit-records?page=0&size=10&operations=STREAM&actions=CREATE&fromDate=2000-01-01T00%3A00%3A00&toDate=2099-01-01T00%3A00%3A00 HTTP/1.1
Host: localhost:9393
请求参数
参数 | 描述 |
---|---|
|
从零开始的页码(可选) |
|
请求的页面大小(可选) |
|
以逗号分隔的审计操作列表(可选) |
|
以逗号分隔的审核操作列表(可选) |
|
起始日期过滤器(例如:2019-02-03T00:00:30)(可选) |
|
日期筛选器 (ex.: 2019-02-03T00:00:30) (可选) |
示例请求
$ curl 'http://localhost:9393/audit-records?page=0&size=10&operations=STREAM&actions=CREATE&fromDate=2000-01-01T00%3A00%3A00&toDate=2099-01-01T00%3A00%3A00' -i -X GET
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 680
{
"_embedded" : {
"auditRecordResourceList" : [ {
"auditRecordId" : 5,
"createdBy" : null,
"correlationId" : "timelog",
"auditData" : "time --format='YYYY MM DD' | log",
"createdOn" : "2024-09-13T10:11:46.663Z",
"auditAction" : "CREATE",
"auditOperation" : "STREAM",
"platformName" : null,
"_links" : {
"self" : {
"href" : "http://localhost:9393/audit-records/5"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/audit-records?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.5.2. 检索审计记录详细信息
的 audit record 端点允许您获取单个审计记录。以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 354
{
"auditRecordId" : 5,
"createdBy" : null,
"correlationId" : "timelog",
"auditData" : "time --format='YYYY MM DD' | log",
"createdOn" : "2024-09-13T10:11:45.673Z",
"auditAction" : "CREATE",
"auditOperation" : "STREAM",
"platformName" : null,
"_links" : {
"self" : {
"href" : "http://localhost:9393/audit-records/5"
}
}
}
43.5.3. 列出所有审计操作类型
Audit record 终端节点允许您获取操作类型。以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1111
[ {
"id" : 100,
"name" : "Create",
"description" : "Create an Entity",
"nameWithDescription" : "Create (Create an Entity)",
"key" : "CREATE"
}, {
"id" : 200,
"name" : "Delete",
"description" : "Delete an Entity",
"nameWithDescription" : "Delete (Delete an Entity)",
"key" : "DELETE"
}, {
"id" : 300,
"name" : "Deploy",
"description" : "Deploy an Entity",
"nameWithDescription" : "Deploy (Deploy an Entity)",
"key" : "DEPLOY"
}, {
"id" : 400,
"name" : "Rollback",
"description" : "Rollback an Entity",
"nameWithDescription" : "Rollback (Rollback an Entity)",
"key" : "ROLLBACK"
}, {
"id" : 500,
"name" : "Undeploy",
"description" : "Undeploy an Entity",
"nameWithDescription" : "Undeploy (Undeploy an Entity)",
"key" : "UNDEPLOY"
}, {
"id" : 600,
"name" : "Update",
"description" : "Update an Entity",
"nameWithDescription" : "Update (Update an Entity)",
"key" : "UPDATE"
}, {
"id" : 700,
"name" : "SuccessfulLogin",
"description" : "Successful login",
"nameWithDescription" : "SuccessfulLogin (Successful login)",
"key" : "LOGIN_SUCCESS"
} ]
43.5.4. 列出所有审计操作类型
Audit record 终端节点允许您获取操作类型。以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 315
[ {
"id" : 100,
"name" : "App Registration",
"key" : "APP_REGISTRATION"
}, {
"id" : 200,
"name" : "Schedule",
"key" : "SCHEDULE"
}, {
"id" : 300,
"name" : "Stream",
"key" : "STREAM"
}, {
"id" : 400,
"name" : "Task",
"key" : "TASK"
}, {
"id" : 500,
"name" : "Login",
"key" : "LOGIN"
} ]
43.6. 流定义
已注册的应用程序终端节点提供有关向 Spring Cloud Data Flow 服务器注册的流定义的信息。 以下主题提供了更多详细信息:
43.6.1. 创建新的 Stream 定义
创建流定义是通过创建对流定义终端节点的 POST 请求来实现的。
流的 curl 请求可能类似于以下内容:ticktock
curl -X POST -d "name=ticktock&definition=time | log" localhost:9393/streams/definitions?deploy=false
流定义还可以包含其他参数。 例如,在 “Request Structure” 下显示的示例中,我们还提供了日期时间格式。
以下主题提供了更多详细信息:
请求结构
POST /streams/definitions HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
name=timelog&definition=time+--format%3D%27YYYY+MM+DD%27+%7C+log&description=Demo+stream+for+testing&deploy=false
请求参数
参数 | 描述 |
---|---|
|
已创建任务定义的名称 |
|
流的定义,使用 Data Flow DSL |
|
流定义的描述 |
|
如果为 true,则在创建时部署流(默认值为 false) |
示例请求
$ curl 'http://localhost:9393/streams/definitions' -i -X POST \
-d 'name=timelog&definition=time+--format%3D%27YYYY+MM+DD%27+%7C+log&description=Demo+stream+for+testing&deploy=false'
响应结构
HTTP/1.1 201 Created
Content-Type: application/hal+json
Content-Length: 410
{
"name" : "timelog",
"dslText" : "time --format='YYYY MM DD' | log",
"originalDslText" : "time --format='YYYY MM DD' | log",
"status" : "undeployed",
"description" : "Demo stream for testing",
"statusDescription" : "The app or group is known to the system, but is not currently deployed",
"_links" : {
"self" : {
"href" : "http://localhost:9393/streams/definitions/timelog"
}
}
}
43.6.2. 列出所有 Stream 定义
的 streams 端点允许您列出所有流定义。 以下主题提供了更多详细信息:
示例请求
$ curl 'http://localhost:9393/streams/definitions?page=0&sort=name%2CASC&search=&size=10' -i -X GET
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 730
{
"_embedded" : {
"streamDefinitionResourceList" : [ {
"name" : "timelog",
"dslText" : "time --format='YYYY MM DD' | log",
"originalDslText" : "time --format='YYYY MM DD' | log",
"status" : "undeployed",
"description" : "",
"statusDescription" : "The app or group is known to the system, but is not currently deployed",
"_links" : {
"self" : {
"href" : "http://localhost:9393/streams/definitions/timelog"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/streams/definitions?page=0&size=10&sort=name,asc"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.6.3. 列出相关的 Stream 定义
的 streams 端点允许您列出相关的流定义。 以下主题提供了更多详细信息:
请求结构
GET /streams/definitions/timelog/related?page=0&sort=name%2CASC&search=&size=10&nested=true HTTP/1.1
Host: localhost:9393
请求参数
参数 | 描述 |
---|---|
|
我们是否应该递归地查找相关流定义 (可选) |
|
从零开始的页码(可选) |
|
对名称执行的搜索字符串(可选) |
|
列表中的排序 (可选) |
|
请求的页面大小(可选) |
示例请求
$ curl 'http://localhost:9393/streams/definitions/timelog/related?page=0&sort=name%2CASC&search=&size=10&nested=true' -i -X GET
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 746
{
"_embedded" : {
"streamDefinitionResourceList" : [ {
"name" : "timelog",
"dslText" : "time --format='YYYY MM DD' | log",
"originalDslText" : "time --format='YYYY MM DD' | log",
"status" : "undeployed",
"description" : "",
"statusDescription" : "The app or group is known to the system, but is not currently deployed",
"_links" : {
"self" : {
"href" : "http://localhost:9393/streams/definitions/timelog"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/streams/definitions/timelog/related?page=0&size=10&sort=name,asc"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.6.4. 获取 Stream Definition Detail
流定义终端节点允许您获取单个流定义。 以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 387
{
"name" : "timelog",
"dslText" : "time --format='YYYY MM DD' | log",
"originalDslText" : "time --format='YYYY MM DD' | log",
"status" : "undeployed",
"description" : "",
"statusDescription" : "The app or group is known to the system, but is not currently deployed",
"_links" : {
"self" : {
"href" : "http://localhost:9393/streams/definitions/timelog"
}
}
}
43.6.5. 删除单个流定义
的 streams 端点允许您删除单个流定义。 (另请参阅:删除所有流定义。 以下主题提供了更多详细信息:
43.8. 流式部署
部署定义终端节点提供有关向 Spring Cloud Data Flow 服务器注册的部署的信息。 以下主题提供了更多详细信息:
43.8.1. 部署 Stream Definition
流定义终端节点允许您部署单个流定义。 (可选)您可以将应用程序参数作为请求正文中的属性传递。 以下主题提供了更多详细信息:
请求结构
POST /streams/deployments/timelog HTTP/1.1
Content-Type: application/json
Content-Length: 36
Host: localhost:9393
{"app.time.timestamp.format":"YYYY"}
/streams/deployments/{时间日志}
参数 | 描述 |
---|---|
|
现有流定义的名称 (必需) |
43.8.2. 取消部署流定义
流定义终端节点允许您取消部署单个流定义。 以下主题提供了更多详细信息:
43.8.4. 更新已部署的流
借助 Skipper,您可以更新已部署的流,并提供其他部署属性。
请求结构
POST /streams/deployments/update/timelog1 HTTP/1.1
Content-Type: application/json
Content-Length: 196
Host: localhost:9393
{"releaseName":"timelog1","packageIdentifier":{"repositoryName":"test","packageName":"timelog1","packageVersion":"1.0.0"},"updateProperties":{"app.time.timestamp.format":"YYYYMMDD"},"force":false}
/streams/deployments/update/{timelog1}
参数 | 描述 |
---|---|
|
现有流定义的名称 (必需) |
示例请求
$ curl 'http://localhost:9393/streams/deployments/update/timelog1' -i -X POST \
-H 'Content-Type: application/json' \
-d '{"releaseName":"timelog1","packageIdentifier":{"repositoryName":"test","packageName":"timelog1","packageVersion":"1.0.0"},"updateProperties":{"app.time.timestamp.format":"YYYYMMDD"},"force":false}'
43.8.5. 回滚流定义
将流回滚到流的先前版本或特定版本。
请求结构
POST /streams/deployments/rollback/timelog1/1 HTTP/1.1
Content-Type: application/json
Host: localhost:9393
/streams/deployments/rollback/{name}/{版本}
参数 | 描述 |
---|---|
|
现有流定义的名称 (必需) |
|
要回滚到的版本 |
43.8.6. 获取清单
返回已发布版本的清单。对于具有依赖项的软件包,清单包含这些依赖项的内容。
请求结构
GET /streams/deployments/manifest/timelog1/1 HTTP/1.1
Content-Type: application/json
Host: localhost:9393
/streams/deployments/manifest/{name}/{version}
参数 | 描述 |
---|---|
|
现有流定义的名称 (必需) |
|
流的版本 |
43.8.7. 获取部署历史记录
获取流的部署历史记录。
请求结构
GET /streams/deployments/history/timelog1 HTTP/1.1
Content-Type: application/json
Host: localhost:9393
43.8.8. 获取部署平台
检索支持的部署平台列表。
请求结构
GET /streams/deployments/platform/list HTTP/1.1
Content-Type: application/json
Host: localhost:9393
43.8.9. Scale 流定义
流定义终端节点允许您在流定义中扩展单个应用程序。 (可选)您可以将应用程序参数作为请求正文中的属性传递。 以下主题提供了更多详细信息:
请求结构
POST /streams/deployments/scale/timelog/log/instances/1 HTTP/1.1
Content-Type: application/json
Content-Length: 36
Host: localhost:9393
{"app.time.timestamp.format":"YYYY"}
/streams/deployments/scale/{streamName}/{appName}/instances/{count}
参数 | 描述 |
---|---|
|
现有流定义的名称 (必需) |
|
在 Stream 应用程序名称中进行扩展 |
|
所选 Stream 应用程序的实例数(必需) |
43.9. 任务定义
任务定义终端节点提供有关向 Spring Cloud Data Flow 服务器注册的任务定义的信息。 以下主题提供了更多详细信息:
43.9.1. 创建新的任务定义
任务定义端点允许您创建新的任务定义。 以下主题提供了更多详细信息:
请求结构
POST /tasks/definitions HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
name=my-task&definition=timestamp+--format%3D%27YYYY+MM+DD%27&description=Demo+task+definition+for+testing
示例请求
$ curl 'http://localhost:9393/tasks/definitions' -i -X POST \
-d 'name=my-task&definition=timestamp+--format%3D%27YYYY+MM+DD%27&description=Demo+task+definition+for+testing'
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 342
{
"name" : "my-task",
"dslText" : "timestamp --format='YYYY MM DD'",
"description" : "Demo task definition for testing",
"composed" : false,
"composedTaskElement" : false,
"lastTaskExecution" : null,
"status" : "UNKNOWN",
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/definitions/my-task"
}
}
}
43.9.2. 列出所有任务定义
任务定义端点允许您获取所有任务定义。 以下主题提供了更多详细信息:
请求结构
GET /tasks/definitions?page=0&size=10&sort=taskName%2CASC&search=&manifest=true HTTP/1.1
Host: localhost:9393
请求参数
参数 | 描述 |
---|---|
|
从零开始的页码(可选) |
|
请求的页面大小(可选) |
|
对名称执行的搜索字符串(可选) |
|
列表中的排序 (可选) |
|
用于将任务清单包含在最新任务执行中的标志(可选) |
示例请求
$ curl 'http://localhost:9393/tasks/definitions?page=0&size=10&sort=taskName%2CASC&search=&manifest=true' -i -X GET
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 689
{
"_embedded" : {
"taskDefinitionResourceList" : [ {
"name" : "my-task",
"dslText" : "timestamp --format='YYYY MM DD'",
"description" : "Demo task definition for testing",
"composed" : false,
"composedTaskElement" : false,
"lastTaskExecution" : null,
"status" : "UNKNOWN",
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/definitions/my-task"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/definitions?page=0&size=10&sort=taskName,asc"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.9.3. 检索任务定义详细信息
任务定义终端节点允许您获取单个任务定义。 以下主题提供了更多详细信息:
请求结构
GET /tasks/definitions/my-task?manifest=true HTTP/1.1
Host: localhost:9393
/tasks/definitions/{我的任务}
参数 | 描述 |
---|---|
|
现有任务定义的名称 (必需) |
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 342
{
"name" : "my-task",
"dslText" : "timestamp --format='YYYY MM DD'",
"description" : "Demo task definition for testing",
"composed" : false,
"composedTaskElement" : false,
"lastTaskExecution" : null,
"status" : "UNKNOWN",
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/definitions/my-task"
}
}
}
43.10. 任务调度器
任务计划程序端点提供有关向计划程序实施注册的任务计划的信息。 以下主题提供了更多详细信息:
43.10.1. 创建新的任务计划
任务计划端点允许您创建新的任务计划。 以下主题提供了更多详细信息:
请求结构
POST /tasks/schedules HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
scheduleName=myschedule&taskDefinitionName=mytaskname&platform=default&properties=scheduler.cron.expression%3D00+22+17+%3F+*&arguments=--foo%3Dbar
请求参数
参数 | 描述 |
---|---|
|
已创建计划的名称 |
|
启动任务的平台的名称 |
|
要计划的任务定义的名称 |
|
计划和启动任务所需的属性 |
|
用于启动任务的命令行参数 |
43.10.2. 列出所有调度
任务计划端点允许您获取所有任务计划。 以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 587
{
"_embedded" : {
"scheduleInfoResourceList" : [ {
"scheduleName" : "FOO",
"taskDefinitionName" : "BAR",
"scheduleProperties" : {
"scheduler.AAA.spring.cloud.scheduler.cron.expression" : "00 41 17 ? * *"
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/schedules/FOO"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/schedules?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.10.3. 列出过滤的 schedules
任务计划端点允许您获取具有指定任务定义名称的所有任务计划。 以下主题提供了更多详细信息:
请求结构
GET /tasks/schedules/instances/FOO?page=0&size=10 HTTP/1.1
Host: localhost:9393
/tasks/schedules/instances/{task-definition-name}
参数 | 描述 |
---|---|
|
根据指定的任务定义筛选计划(必需) |
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 599
{
"_embedded" : {
"scheduleInfoResourceList" : [ {
"scheduleName" : "FOO",
"taskDefinitionName" : "BAR",
"scheduleProperties" : {
"scheduler.AAA.spring.cloud.scheduler.cron.expression" : "00 41 17 ? * *"
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/schedules/FOO"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/schedules/instances/FOO?page=0&size=1"
}
},
"page" : {
"size" : 1,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.12. 任务执行
任务执行终端节点提供有关向 Spring Cloud Data Flow 服务器注册的任务执行的信息。 以下主题提供了更多详细信息:
43.12.1. 启动任务(旧版)
通过请求创建新任务执行来完成启动任务。如果任务注册为 Spring Boot 3 应用程序,则此端点将失败。
以下主题提供了更多详细信息:
请求结构
POST /tasks/executions HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
name=taskA&properties=app.my-task.foo%3Dbar%2Cdeployer.my-task.something-else%3D3&arguments=--server.port%3D8080+--foo%3Dbar
43.12.2. 启动任务
通过请求创建新任务执行来完成启动任务。响应将包含执行 ID 和架构目标。
以下主题提供了更多详细信息:
请求结构
POST /tasks/executions/launch HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
name=taskA&properties=app.my-task.foo%3Dbar%2Cdeployer.my-task.something-else%3D3&arguments=--server.port%3D8080+--foo%3Dbar
43.12.4. 列出所有任务执行
任务执行终端节点允许您列出所有任务执行。 以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 2497
{
"_embedded" : {
"taskExecutionResourceList" : [ {
"executionId" : 1,
"exitCode" : null,
"taskName" : "taskA",
"startTime" : null,
"endTime" : null,
"exitMessage" : null,
"arguments" : [ ],
"jobExecutionIds" : [ ],
"errorMessage" : null,
"externalExecutionId" : "taskA-e4fc87e5-dbd7-450e-935e-69470d10afe9",
"parentExecutionId" : null,
"resourceUrl" : "org.springframework.cloud.task.app:timestamp-task:jar:1.2.0.RELEASE",
"appProperties" : {
"spring.datasource.driverClassName" : null,
"management.metrics.tags.application" : "${spring.cloud.task.name:unknown}-${spring.cloud.task.executionid:unknown}",
"format" : "yyyy MM dd",
"spring.cloud.task.name" : "taskA",
"spring.cloud.deployer.bootVersion" : "2",
"management.metrics.tags.service" : "task-application",
"spring.datasource.username" : null,
"spring.datasource.url" : null,
"spring.cloud.task.initialize-enabled" : "false",
"spring.cloud.task.schemaTarget" : "boot2",
"spring.batch.jdbc.table-prefix" : "BATCH_",
"spring.cloud.task.tablePrefix" : "TASK_"
},
"deploymentProperties" : {
"app.timestamp.spring.cloud.task.tablePrefix" : "TASK_",
"app.timestamp.spring.cloud.deployer.bootVersion" : "2",
"app.timestamp.spring.cloud.task.initialize-enabled" : "false",
"app.timestamp.spring.batch.jdbc.table-prefix" : "BATCH_",
"app.timestamp.spring.cloud.task.schemaTarget" : "boot2"
},
"platformName" : "default",
"taskExecutionStatus" : "UNKNOWN",
"schemaTarget" : "boot2",
"_links" : {
"tasks/logs" : {
"href" : "http://localhost:9393/tasks/logs/taskA-e4fc87e5-dbd7-450e-935e-69470d10afe9?platformName=default&schemaTarget=boot2"
},
"self" : {
"href" : "http://localhost:9393/tasks/executions/1?schemaTarget=boot2"
}
}
} ]
},
"_links" : {
"first" : {
"href" : "http://localhost:9393/tasks/executions?page=0&size=2"
},
"prev" : {
"href" : "http://localhost:9393/tasks/executions?page=0&size=2"
},
"self" : {
"href" : "http://localhost:9393/tasks/executions?page=1&size=2"
},
"last" : {
"href" : "http://localhost:9393/tasks/executions?page=1&size=2"
}
},
"page" : {
"size" : 2,
"totalElements" : 3,
"totalPages" : 2,
"number" : 1
}
}
43.12.5. 列出具有指定任务名称的所有任务执行
任务执行终端节点允许您列出具有指定任务名称的任务执行。 以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 2222
{
"_embedded" : {
"taskExecutionResourceList" : [ {
"executionId" : 2,
"exitCode" : null,
"taskName" : "taskB",
"startTime" : null,
"endTime" : null,
"exitMessage" : null,
"arguments" : [ ],
"jobExecutionIds" : [ ],
"errorMessage" : null,
"externalExecutionId" : "taskB-cd70929e-1495-4f72-bc22-008f919e2b5a",
"parentExecutionId" : null,
"resourceUrl" : "org.springframework.cloud.task.app:timestamp-task:jar:1.2.0.RELEASE",
"appProperties" : {
"spring.datasource.driverClassName" : null,
"management.metrics.tags.application" : "${spring.cloud.task.name:unknown}-${spring.cloud.task.executionid:unknown}",
"format" : "yyyy MM dd",
"spring.cloud.task.name" : "taskB",
"spring.cloud.deployer.bootVersion" : "2",
"management.metrics.tags.service" : "task-application",
"spring.datasource.username" : null,
"spring.datasource.url" : null,
"spring.cloud.task.initialize-enabled" : "false",
"spring.cloud.task.schemaTarget" : "boot2",
"spring.batch.jdbc.table-prefix" : "BATCH_",
"spring.cloud.task.tablePrefix" : "TASK_"
},
"deploymentProperties" : {
"app.timestamp.spring.cloud.task.tablePrefix" : "TASK_",
"app.timestamp.spring.cloud.deployer.bootVersion" : "2",
"app.timestamp.spring.cloud.task.initialize-enabled" : "false",
"app.timestamp.spring.batch.jdbc.table-prefix" : "BATCH_",
"app.timestamp.spring.cloud.task.schemaTarget" : "boot2"
},
"platformName" : "default",
"taskExecutionStatus" : "UNKNOWN",
"schemaTarget" : "boot2",
"_links" : {
"tasks/logs" : {
"href" : "http://localhost:9393/tasks/logs/taskB-cd70929e-1495-4f72-bc22-008f919e2b5a?platformName=default&schemaTarget=boot2"
},
"self" : {
"href" : "http://localhost:9393/tasks/executions/2?schemaTarget=boot2"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/tasks/executions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.12.6. 任务执行细节
任务执行终端节点允许您获取有关任务执行的详细信息。 以下主题提供了更多详细信息:
请求结构
GET /tasks/executions/1?schemaTarget=boot2 HTTP/1.1
Host: localhost:9393
/tasks/executions/{id}
参数 | 描述 |
---|---|
|
现有任务执行的 ID(必需) |
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1767
{
"executionId" : 1,
"exitCode" : null,
"taskName" : "taskA",
"startTime" : null,
"endTime" : null,
"exitMessage" : null,
"arguments" : [ ],
"jobExecutionIds" : [ ],
"errorMessage" : null,
"externalExecutionId" : "taskA-43aeab47-b46a-49ba-ba7b-f045dec094e4",
"parentExecutionId" : null,
"resourceUrl" : "org.springframework.cloud.task.app:timestamp-task:jar:1.2.0.RELEASE",
"appProperties" : {
"spring.datasource.driverClassName" : null,
"management.metrics.tags.application" : "${spring.cloud.task.name:unknown}-${spring.cloud.task.executionid:unknown}",
"format" : "yyyy MM dd",
"spring.cloud.task.name" : "taskA",
"spring.cloud.deployer.bootVersion" : "2",
"management.metrics.tags.service" : "task-application",
"spring.datasource.username" : null,
"spring.datasource.url" : null,
"spring.cloud.task.initialize-enabled" : "false",
"spring.cloud.task.schemaTarget" : "boot2",
"spring.batch.jdbc.table-prefix" : "BATCH_",
"spring.cloud.task.tablePrefix" : "TASK_"
},
"deploymentProperties" : {
"app.timestamp.spring.cloud.task.tablePrefix" : "TASK_",
"app.timestamp.spring.cloud.deployer.bootVersion" : "2",
"app.timestamp.spring.cloud.task.initialize-enabled" : "false",
"app.timestamp.spring.batch.jdbc.table-prefix" : "BATCH_",
"app.timestamp.spring.cloud.task.schemaTarget" : "boot2"
},
"platformName" : "default",
"taskExecutionStatus" : "UNKNOWN",
"schemaTarget" : "boot2",
"_links" : {
"tasks/logs" : {
"href" : "http://localhost:9393/tasks/logs/taskA-43aeab47-b46a-49ba-ba7b-f045dec094e4?platformName=default&schemaTarget=boot2"
},
"self" : {
"href" : "http://localhost:9393/tasks/executions/1?schemaTarget=boot2"
}
}
}
43.12.7. 按外部 ID 显示任务执行详细信息
任务执行终端节点允许您获取有关任务执行的详细信息。 以下主题提供了更多详细信息:
请求结构
GET /tasks/executions/external/taskB-026bd08c-18b8-4255-ad77-c2fcc9d09bb8?platform=default HTTP/1.1
Host: localhost:9393
/tasks/executions/external/{externalExecutionId}
参数 | 描述 |
---|---|
|
现有任务执行的外部 ExecutionId(必需) |
示例请求
$ curl 'http://localhost:9393/tasks/executions/external/taskB-026bd08c-18b8-4255-ad77-c2fcc9d09bb8?platform=default' -i -X GET
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1767
{
"executionId" : 2,
"exitCode" : null,
"taskName" : "taskB",
"startTime" : null,
"endTime" : null,
"exitMessage" : null,
"arguments" : [ ],
"jobExecutionIds" : [ ],
"errorMessage" : null,
"externalExecutionId" : "taskB-026bd08c-18b8-4255-ad77-c2fcc9d09bb8",
"parentExecutionId" : null,
"resourceUrl" : "org.springframework.cloud.task.app:timestamp-task:jar:1.2.0.RELEASE",
"appProperties" : {
"spring.datasource.driverClassName" : null,
"management.metrics.tags.application" : "${spring.cloud.task.name:unknown}-${spring.cloud.task.executionid:unknown}",
"format" : "yyyy MM dd",
"spring.cloud.task.name" : "taskB",
"spring.cloud.deployer.bootVersion" : "2",
"management.metrics.tags.service" : "task-application",
"spring.datasource.username" : null,
"spring.datasource.url" : null,
"spring.cloud.task.initialize-enabled" : "false",
"spring.cloud.task.schemaTarget" : "boot2",
"spring.batch.jdbc.table-prefix" : "BATCH_",
"spring.cloud.task.tablePrefix" : "TASK_"
},
"deploymentProperties" : {
"app.timestamp.spring.cloud.task.tablePrefix" : "TASK_",
"app.timestamp.spring.cloud.deployer.bootVersion" : "2",
"app.timestamp.spring.cloud.task.initialize-enabled" : "false",
"app.timestamp.spring.batch.jdbc.table-prefix" : "BATCH_",
"app.timestamp.spring.cloud.task.schemaTarget" : "boot2"
},
"platformName" : "default",
"taskExecutionStatus" : "UNKNOWN",
"schemaTarget" : "boot2",
"_links" : {
"tasks/logs" : {
"href" : "http://localhost:9393/tasks/logs/taskB-026bd08c-18b8-4255-ad77-c2fcc9d09bb8?platformName=default&schemaTarget=boot2"
},
"self" : {
"href" : "http://localhost:9393/tasks/executions/2?schemaTarget=boot2"
}
}
}
43.12.8. 删除任务执行
任务执行终端节点允许您:
-
清理用于部署任务的资源
-
从持久性存储中删除相关的任务数据以及可能关联的 Spring Batch 作业数据
清理实现(第一个选项)特定于平台。两种操作都可以触发 一次或分开。 |
以下主题提供了更多详细信息:
请参阅以下关于删除任务执行数据的信息。
请求结构
DELETE /tasks/executions/1,2?schemaTarget=boot2&action=CLEANUP,REMOVE_DATA HTTP/1.1
Host: localhost:9393
/tasks/executions/{ids}
参数 | 描述 |
---|---|
|
提供 2 个逗号分隔的任务执行 ID 值。 |
您必须提供实际存在的任务执行 ID。否则,将返回 (Not Found) HTTP 状态。
在提交多个任务执行 ID 的情况下,单个任务执行 ID 的无效会导致整个请求失败。
不执行任何操作。 |
请求参数
此终端节点支持一个名为 action 的可选请求参数。它是一个枚举并支持以下内容 值:
-
清理
-
REMOVE_DATA
参数 | 描述 |
---|---|
|
同时使用 CLEANUP 和 REMOVE_DATA 这两个操作。 |
|
任务的架构目标。(可选) |
43.12.9. 删除任务执行数据
您不仅可以清理用于部署任务的资源,还可以删除与 来自底层持久性存储的任务执行。此外,如果任务执行与一个 或 更多 Batch Job 执行,这些也会被删除。
以下示例说明了如何使用多个任务执行 ID 和多个操作发出请求:
$ curl 'http://localhost:9393/tasks/executions/1,2?schemaTarget=boot2&action=CLEANUP,REMOVE_DATA' -i -X DELETE
/tasks/executions/{ids}
参数 | 描述 |
---|---|
|
提供 2 个逗号分隔的任务执行 ID 值。 |
参数 | 描述 |
---|---|
|
同时使用 CLEANUP 和 REMOVE_DATA 这两个操作。 |
|
任务的架构目标。(可选) |
使用 action 参数从持久性存储中删除数据时,您必须提供
表示父任务执行的任务执行 ID。当您提供子任务执行(作为组合任务的一部分执行)时,
返回 (Bad Request) HTTP 状态。REMOVE_DATA 400 |
删除大量任务执行时,某些数据库类型会限制子句中的条目数(Spring Cloud Data Flow 用于删除任务执行关系的方法)。
Spring Cloud Data Flow 支持 Sql Server(最多 2100 个条目)和 Oracle DB(最多 1000 个条目)的删除分块。
但是,Spring Cloud Data Flow 允许用户设置自己的分块因子。为此,请将 property 设置为适当的 chunk size。
默认值为,这意味着 Spring Cloud Data Flow 不会对任务执行删除进行分块(Oracle 和 SQL Server 数据库除外)。IN spring.cloud.dataflow.task.executionDeleteChunkSize 0 |
43.13. 任务执行
任务执行终端节点提供有关向 Spring Cloud Data Flow 服务器注册的任务执行的信息。 以下主题提供了更多详细信息:
43.13.1. 列出所有任务执行
任务执行终端节点允许您列出所有任务执行。 以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 3658
{
"_embedded" : {
"jobExecutionResourceList" : [ {
"executionId" : 2,
"stepExecutionCount" : 0,
"jobId" : 2,
"taskExecutionId" : 2,
"name" : "DOCJOB1",
"startDate" : "2024-09-13",
"startTime" : "10:11:18",
"duration" : "00:00:00",
"jobExecution" : {
"id" : 2,
"version" : 1,
"jobParameters" : {
"parameters" : { }
},
"jobInstance" : {
"id" : 2,
"jobName" : "DOCJOB1",
"version" : null
},
"stepExecutions" : [ ],
"status" : "STOPPED",
"startTime" : "2024-09-13T10:11:18.778+0000",
"createTime" : "2024-09-13T10:11:18.777+0000",
"endTime" : null,
"lastUpdated" : "2024-09-13T10:11:18.778+0000",
"exitStatus" : {
"exitCode" : "UNKNOWN",
"exitDescription" : ""
},
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"jobConfigurationName" : null,
"failureExceptions" : [ ],
"allFailureExceptions" : [ ]
},
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : true,
"abandonable" : true,
"stoppable" : false,
"defined" : true,
"timeZone" : "UTC",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2&stop=true"
},
"restart" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2&restart=true"
}
}
}, {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"name" : "DOCJOB",
"startDate" : "2024-09-13",
"startTime" : "10:11:18",
"duration" : "00:00:00",
"jobExecution" : {
"id" : 1,
"version" : 1,
"jobParameters" : {
"parameters" : { }
},
"jobInstance" : {
"id" : 1,
"jobName" : "DOCJOB",
"version" : null
},
"stepExecutions" : [ ],
"status" : "STARTED",
"startTime" : "2024-09-13T10:11:18.773+0000",
"createTime" : "2024-09-13T10:11:18.772+0000",
"endTime" : null,
"lastUpdated" : "2024-09-13T10:11:18.773+0000",
"exitStatus" : {
"exitCode" : "UNKNOWN",
"exitDescription" : ""
},
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"jobConfigurationName" : null,
"failureExceptions" : [ ],
"allFailureExceptions" : [ ]
},
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&stop=true"
},
"restart" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&restart=true"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 2,
"totalPages" : 1,
"number" : 0
}
}
43.13.2. 列出不包含步骤执行的所有任务执行
任务执行终端节点允许您列出所有任务执行,不包括步骤执行。 以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1937
{
"_embedded" : {
"jobExecutionThinResourceList" : [ {
"executionId" : 2,
"stepExecutionCount" : 0,
"jobId" : 2,
"taskExecutionId" : 2,
"instanceId" : 2,
"name" : "DOCJOB1",
"startDate" : "2024-09-13",
"startTime" : "10:11:14",
"startDateTime" : "2024-09-13T10:11:14.840+0000",
"duration" : "00:00:00",
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : true,
"abandonable" : true,
"stoppable" : false,
"defined" : true,
"timeZone" : "UTC",
"status" : "STOPPED",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2&stop=true"
}
}
}, {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"instanceId" : 1,
"name" : "DOCJOB",
"startDate" : "2024-09-13",
"startTime" : "10:11:14",
"startDateTime" : "2024-09-13T10:11:14.752+0000",
"duration" : "00:00:00",
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"status" : "STARTED",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&stop=true"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/thinexecutions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 2,
"totalPages" : 1,
"number" : 0
}
}
43.13.3. 列出具有指定 Job name 的所有 Job Executions
任务执行终端节点允许您列出所有任务执行。 以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1964
{
"_embedded" : {
"jobExecutionResourceList" : [ {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"name" : "DOCJOB",
"startDate" : "2024-09-13",
"startTime" : "10:11:20",
"duration" : "00:00:00",
"jobExecution" : {
"id" : 1,
"version" : 1,
"jobParameters" : {
"parameters" : { }
},
"jobInstance" : {
"id" : 1,
"jobName" : "DOCJOB",
"version" : null
},
"stepExecutions" : [ ],
"status" : "STARTED",
"startTime" : "2024-09-13T10:11:20.627+0000",
"createTime" : "2024-09-13T10:11:20.626+0000",
"endTime" : null,
"lastUpdated" : "2024-09-13T10:11:20.627+0000",
"exitStatus" : {
"exitCode" : "UNKNOWN",
"exitDescription" : ""
},
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"jobConfigurationName" : null,
"failureExceptions" : [ ],
"allFailureExceptions" : [ ]
},
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&stop=true"
},
"restart" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&restart=true"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.13.4. 列出具有指定任务名称但不包含步骤执行的所有任务执行
任务执行终端节点允许您列出所有任务执行。 以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1108
{
"_embedded" : {
"jobExecutionThinResourceList" : [ {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"instanceId" : 1,
"name" : "DOCJOB",
"startDate" : "2024-09-13",
"startTime" : "10:11:23",
"startDateTime" : "2024-09-13T10:11:23.869+0000",
"duration" : "00:00:00",
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"status" : "STARTED",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&stop=true"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/thinexecutions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.13.5. 列出指定日期范围内的所有任务执行,不包括步骤执行
任务执行终端节点允许您列出所有任务执行。 以下主题提供了更多详细信息:
请求结构
GET /jobs/thinexecutions?page=0&size=10&fromDate=2000-09-24T17%3A00%3A45%2C000&toDate=2050-09-24T18%3A00%3A45%2C000 HTTP/1.1
Host: localhost:9393
请求参数
参数 | 描述 |
---|---|
|
从零开始的页码(可选) |
|
请求的页面大小(可选) |
|
从开始日期筛选结果,格式为 'yyyy-MM-dd'T'HH:mm:ss,SSS' |
|
以 'yyyy-MM-dd'T'HH:mm:ss,SSS' 格式筛选截至最新的结果 |
示例请求
$ curl 'http://localhost:9393/jobs/thinexecutions?page=0&size=10&fromDate=2000-09-24T17%3A00%3A45%2C000&toDate=2050-09-24T18%3A00%3A45%2C000' -i -X GET
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1937
{
"_embedded" : {
"jobExecutionThinResourceList" : [ {
"executionId" : 2,
"stepExecutionCount" : 0,
"jobId" : 2,
"taskExecutionId" : 2,
"instanceId" : 2,
"name" : "DOCJOB1",
"startDate" : "2024-09-13",
"startTime" : "10:11:22",
"startDateTime" : "2024-09-13T10:11:22.807+0000",
"duration" : "00:00:00",
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : true,
"abandonable" : true,
"stoppable" : false,
"defined" : true,
"timeZone" : "UTC",
"status" : "STOPPED",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2&stop=true"
}
}
}, {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"instanceId" : 1,
"name" : "DOCJOB",
"startDate" : "2024-09-13",
"startTime" : "10:11:22",
"startDateTime" : "2024-09-13T10:11:22.802+0000",
"duration" : "00:00:00",
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"status" : "STARTED",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&stop=true"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/thinexecutions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 2,
"totalPages" : 1,
"number" : 0
}
}
43.13.6. 列出指定任务实例 ID 的所有任务执行,不包括步骤执行
任务执行终端节点允许您列出所有任务执行。 以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1108
{
"_embedded" : {
"jobExecutionThinResourceList" : [ {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"instanceId" : 1,
"name" : "DOCJOB",
"startDate" : "2024-09-13",
"startTime" : "10:11:21",
"startDateTime" : "2024-09-13T10:11:21.794+0000",
"duration" : "00:00:00",
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"status" : "STARTED",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&stop=true"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/thinexecutions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.13.7. 列出指定任务执行 ID 的所有任务执行,不包括步骤执行
任务执行终端节点允许您列出所有任务执行。 以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1108
{
"_embedded" : {
"jobExecutionThinResourceList" : [ {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"instanceId" : 1,
"name" : "DOCJOB",
"startDate" : "2024-09-13",
"startTime" : "10:11:24",
"startDateTime" : "2024-09-13T10:11:24.914+0000",
"duration" : "00:00:00",
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"status" : "STARTED",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/1?schemaTarget=boot2&stop=true"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/thinexecutions?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.13.8. 任务执行细节
任务执行终端节点允许您获取有关任务执行的详细信息。 以下主题提供了更多详细信息:
请求结构
GET /jobs/executions/2?schemaTarget=boot2 HTTP/1.1
Host: localhost:9393
/jobs/executions/{id}
参数 | 描述 |
---|---|
|
现有任务执行的 ID(必需) |
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1460
{
"executionId" : 2,
"stepExecutionCount" : 0,
"jobId" : 2,
"taskExecutionId" : 2,
"name" : "DOCJOB1",
"startDate" : "2024-09-13",
"startTime" : "10:11:25",
"duration" : "00:00:00",
"jobExecution" : {
"id" : 2,
"version" : 1,
"jobParameters" : {
"parameters" : { }
},
"jobInstance" : {
"id" : 2,
"jobName" : "DOCJOB1",
"version" : null
},
"stepExecutions" : [ ],
"status" : "STOPPED",
"startTime" : "2024-09-13T10:11:25.966+0000",
"createTime" : "2024-09-13T10:11:25.966+0000",
"endTime" : null,
"lastUpdated" : "2024-09-13T10:11:25.966+0000",
"exitStatus" : {
"exitCode" : "UNKNOWN",
"exitDescription" : ""
},
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"jobConfigurationName" : null,
"failureExceptions" : [ ],
"allFailureExceptions" : [ ]
},
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : true,
"abandonable" : true,
"stoppable" : false,
"defined" : true,
"timeZone" : "UTC",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2"
},
"stop" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2&stop=true"
},
"restart" : {
"href" : "http://localhost:9393/jobs/executions/2?schemaTarget=boot2&restart=true"
}
}
}
43.13.9. 停止任务执行
任务执行终端节点允许您停止任务执行。 以下主题提供了更多详细信息:
43.13.10. 重新启动任务执行
任务执行终端节点允许您重新启动任务执行。 以下主题提供了更多详细信息:
请求结构
PUT /jobs/executions/2?schemaTarget=boot2 HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
restart=true
/jobs/executions/{id}
参数 | 描述 |
---|---|
|
现有任务执行的 ID(必需) |
43.14. 作业实例
作业实例终端节点提供有关向 Spring Cloud Data Flow 服务器注册的作业实例的信息。 以下主题提供了更多详细信息:
43.14.1. 列出所有 Job 实例
的 job instances 端点允许您列出所有 job 实例。 以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1807
{
"_embedded" : {
"jobInstanceResourceList" : [ {
"jobName" : "DOCJOB",
"jobInstanceId" : 1,
"jobExecutions" : [ {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"name" : "DOCJOB",
"startDate" : "",
"startTime" : "",
"duration" : "",
"jobExecution" : {
"id" : 1,
"version" : null,
"jobParameters" : {
"parameters" : { }
},
"jobInstance" : {
"id" : 1,
"jobName" : "DOCJOB",
"version" : null
},
"stepExecutions" : [ ],
"status" : "STARTING",
"startTime" : null,
"createTime" : "2024-09-13T10:11:41.775+0000",
"endTime" : null,
"lastUpdated" : null,
"exitStatus" : {
"exitCode" : "UNKNOWN",
"exitDescription" : ""
},
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"jobConfigurationName" : null,
"failureExceptions" : [ ],
"allFailureExceptions" : [ ]
},
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"schemaTarget" : "boot2"
} ],
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/instances/1"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/instances?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.14.2. Job 实例详细信息
的 job instances 端点允许您列出所有 job 实例。 以下主题提供了更多详细信息:
请求结构
GET /jobs/instances/1?schemaTarget=boot2 HTTP/1.1
Host: localhost:9393
/jobs/instances/{id}
参数 | 描述 |
---|---|
|
现有作业实例的 ID(必需) |
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1312
{
"jobName" : "DOCJOB",
"jobInstanceId" : 1,
"jobExecutions" : [ {
"executionId" : 1,
"stepExecutionCount" : 0,
"jobId" : 1,
"taskExecutionId" : 1,
"name" : "DOCJOB",
"startDate" : "",
"startTime" : "",
"duration" : "",
"jobExecution" : {
"id" : 1,
"version" : null,
"jobParameters" : {
"parameters" : { }
},
"jobInstance" : {
"id" : 1,
"jobName" : "DOCJOB",
"version" : null
},
"stepExecutions" : [ ],
"status" : "STARTING",
"startTime" : null,
"createTime" : "2024-09-13T10:11:42.763+0000",
"endTime" : null,
"lastUpdated" : null,
"exitStatus" : {
"exitCode" : "UNKNOWN",
"exitDescription" : ""
},
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"jobConfigurationName" : null,
"failureExceptions" : [ ],
"allFailureExceptions" : [ ]
},
"jobParameters" : { },
"jobParametersString" : "",
"restartable" : false,
"abandonable" : false,
"stoppable" : true,
"defined" : true,
"timeZone" : "UTC",
"schemaTarget" : "boot2"
} ],
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/instances/1"
}
}
}
43.15. 作业步骤执行
作业步骤执行终端节点提供有关注册到 Spring Cloud Data Flow 服务器的作业步骤执行的信息。 以下主题提供了更多详细信息:
43.15.1. 列出任务执行的所有步骤执行
任务步骤执行终端节点允许您列出所有任务步骤执行。 以下主题提供了更多详细信息:
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1805
{
"_embedded" : {
"stepExecutionResourceList" : [ {
"jobExecutionId" : 1,
"stepExecution" : {
"stepName" : "DOCJOB_STEP",
"id" : 1,
"version" : 0,
"status" : "STARTING",
"readCount" : 0,
"writeCount" : 0,
"commitCount" : 0,
"rollbackCount" : 0,
"readSkipCount" : 0,
"processSkipCount" : 0,
"writeSkipCount" : 0,
"startTime" : "2024-09-13T10:11:35.706+0000",
"endTime" : null,
"lastUpdated" : "2024-09-13T10:11:35.707+0000",
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"exitStatus" : {
"exitCode" : "EXECUTING",
"exitDescription" : ""
},
"terminateOnly" : false,
"filterCount" : 0,
"jobParameters" : {
"parameters" : { }
},
"jobExecutionId" : 1,
"skipCount" : 0,
"summary" : "StepExecution: id=1, version=0, name=DOCJOB_STEP, status=STARTING, exitStatus=EXECUTING, readCount=0, filterCount=0, writeCount=0 readSkipCount=0, writeSkipCount=0, processSkipCount=0, commitCount=0, rollbackCount=0",
"failureExceptions" : [ ]
},
"stepType" : "",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1/steps/1?schemaTarget=boot2"
},
"progress" : {
"href" : "http://localhost:9393/jobs/executions/1/steps/1/progress?schemaTarget=boot2"
}
}
} ]
},
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1/steps?page=0&size=10"
}
},
"page" : {
"size" : 10,
"totalElements" : 1,
"totalPages" : 1,
"number" : 0
}
}
43.15.2. Job Step 执行详情
任务步骤执行终端节点允许您获取有关任务步骤执行的详细信息。 以下主题提供了更多详细信息:
请求结构
GET /jobs/executions/1/steps/1?schemaTarget=boot2 HTTP/1.1
Host: localhost:9393
/jobs/executions/{id}/steps/{stepid}
参数 | 描述 |
---|---|
|
现有任务执行的 ID(必需) |
|
特定任务执行的现有步骤执行的 ID(必需) |
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1339
{
"jobExecutionId" : 1,
"stepExecution" : {
"stepName" : "DOCJOB_STEP",
"id" : 1,
"version" : 0,
"status" : "STARTING",
"readCount" : 0,
"writeCount" : 0,
"commitCount" : 0,
"rollbackCount" : 0,
"readSkipCount" : 0,
"processSkipCount" : 0,
"writeSkipCount" : 0,
"startTime" : "2024-09-13T10:11:34.601+0000",
"endTime" : null,
"lastUpdated" : "2024-09-13T10:11:34.601+0000",
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"exitStatus" : {
"exitCode" : "EXECUTING",
"exitDescription" : ""
},
"terminateOnly" : false,
"filterCount" : 0,
"jobParameters" : {
"parameters" : { }
},
"jobExecutionId" : 1,
"skipCount" : 0,
"summary" : "StepExecution: id=1, version=0, name=DOCJOB_STEP, status=STARTING, exitStatus=EXECUTING, readCount=0, filterCount=0, writeCount=0 readSkipCount=0, writeSkipCount=0, processSkipCount=0, commitCount=0, rollbackCount=0",
"failureExceptions" : [ ]
},
"stepType" : "",
"schemaTarget" : "boot2",
"_links" : {
"self" : {
"href" : "http://localhost:9393/jobs/executions/1/steps/1?schemaTarget=boot2"
},
"progress" : {
"href" : "http://localhost:9393/jobs/executions/1/steps/1/progress?schemaTarget=boot2"
}
}
}
43.15.3. 作业步骤执行进度
任务步骤执行终端节点允许您获取有关任务步骤执行进度的详细信息。 以下主题提供了更多详细信息:
请求结构
GET /jobs/executions/1/steps/1/progress HTTP/1.1
Host: localhost:9393
/jobs/executions/{id}/steps/{stepid}/progress
参数 | 描述 |
---|---|
|
现有任务执行的 ID(必需) |
|
特定任务执行的现有步骤执行的 ID(必需) |
响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 2794
{
"stepExecution" : {
"stepName" : "DOCJOB_STEP",
"id" : 1,
"version" : 0,
"status" : "STARTING",
"readCount" : 0,
"writeCount" : 0,
"commitCount" : 0,
"rollbackCount" : 0,
"readSkipCount" : 0,
"processSkipCount" : 0,
"writeSkipCount" : 0,
"startTime" : "2024-09-13T10:11:36.711+0000",
"endTime" : null,
"lastUpdated" : "2024-09-13T10:11:36.711+0000",
"executionContext" : {
"dirty" : false,
"empty" : true,
"values" : [ ]
},
"exitStatus" : {
"exitCode" : "EXECUTING",
"exitDescription" : ""
},
"terminateOnly" : false,
"filterCount" : 0,
"jobParameters" : {
"parameters" : { }
},
"jobExecutionId" : 1,
"skipCount" : 0,
"summary" : "StepExecution: id=1, version=0, name=DOCJOB_STEP, status=STARTING, exitStatus=EXECUTING, readCount=0, filterCount=0, writeCount=0 readSkipCount=0, writeSkipCount=0, processSkipCount=0, commitCount=0, rollbackCount=0",
"failureExceptions" : [ ]
},
"stepExecutionHistory" : {
"stepName" : "DOCJOB_STEP",
"count" : 0,
"commitCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"rollbackCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"readCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"writeCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"filterCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"readSkipCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"writeSkipCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"processSkipCount" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"duration" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
},
"durationPerRead" : {
"count" : 0,
"min" : 0.0,
"max" : 0.0,
"mean" : 0.0,
"standardDeviation" : 0.0
}
},
"percentageComplete" : 0.5,
"finished" : false,
"duration" : 18.0,
"_links" : {
"progress" : {
"href" : "http://localhost:9393/jobs/executions/1/steps/1/progress?schemaTarget=boot2"
},
"self" : {
"href" : "http://localhost:9393/jobs/executions/1/steps/1"
}
}
}
stepExecutionHistory 中的以下字段已弃用,并将在未来版本中删除:rollbackCount、readCount、writeCount、filterCount、readSkipCount、writeSkipCount、processSkipCount、durationPerRead。 |
43.16. 有关应用程序的运行时信息
您可以全局或单独获取有关系统已知正在运行的应用程序的信息。 以下主题提供了更多详细信息:
43.17. 流日志
您可以获取整个流或流中特定应用程序的流的应用程序日志。 以下主题提供了更多详细信息:
43.17.1. 通过流名称获取应用程序的日志
将 HTTP 方法与 REST 终端节点结合使用,以检索给定流名称的所有应用程序日志。
以下主题提供了更多详细信息:GET
/streams/logs/<streamName>
43.18. 任务日志
您可以获取特定任务执行的任务执行日志。
以下主题提供了更多详细信息:
43.18.1. 获取任务执行日志
要检索任务执行的日志,请使用 HTTP 方法查询终端节点。
以下主题提供了更多详细信息:/tasks/logs/<ExternalTaskExecutionId>
GET
请求结构
GET /tasks/logs/taskA-69b2b37c-9d98-4f49-a43d-708c4cd2c02f?platformName=default HTTP/1.1
Host: localhost:9393
示例请求
$ curl 'http://localhost:9393/tasks/logs/taskA-69b2b37c-9d98-4f49-a43d-708c4cd2c02f?platformName=default' -i -X GET
响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 277
"stdout:\n2024-09-13 10:11:29.011 INFO 9073 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@ba8a1dc: startup date [Fri Sep 13 10:11:29 UTC 2024]; root of context hierarchy\n"
44. 开放API
Springdoc 库以选择加入的方式与服务器集成。启用后,它将提供 OpenAPI3 文档和 Swagger UI。
要启用,请在启动服务器之前在中设置以下属性:application.yml
springdoc:
api-docs:
enabled: true
swagger-ui:
enabled: true
也可以在命令行中设置属性:
-Dspringdoc.api-docs.enabled=true -Dspringdoc.swagger-ui.enabled=true
或环境变量:
SPRINGDOC_APIDOCS_ENABLED=true
SPRINGDOC_SWAGGERUI_ENABLED=true
启用后,OpenAPI3 文档和 Swagger UI 将分别在 和 URI 中可用(例如。localhost:9393/v3/api-docs 的 Api Docs 中)。/v3/api-docs
/swagger-ui/index.html
Swagger UI 最初为空白。在 “Explore” 栏中输入 “/v3/api-docs/”,然后单击 “Explore”。 |
如果您在 Swagger UI 中试用 API 并收到与尝试将 pageable 参数替换为其属性或删除其属性相关的错误。"No property string found for type" { } "sort" |
有大量可用的 OpenAPI 和 Swagger UI 属性可用于配置该功能。