REST API 指南
本节介绍 Spring Cloud Data Flow REST API。
41. 概述
Spring Cloud Data Flow 提供了一个 REST API,可让您访问服务器的所有方面。 事实上,Spring Cloud Data Flow shell 是该 API 的一流消费者。
| 如果您计划将 REST API 与 Java 一起使用,则应考虑使用
提供的 Java 客户端 ( DataflowTemplate)内部使用 REST API。 | 
41.1. HTTP 版本
Spring Cloud Data Flow 建立一个 RESTful API 版本,当 API 发生重大更改时,该版本会更新。 API 版本可以在 Spring Cloud Data Flow 的首页末尾看到,如下例所示:
{"_links":
    {"dashboard":{"href":"http://localhost:9393/dashboard"}
    ...
    },
"api.revision":14}下表显示了 SCDF 发布版本及其当前的 RESTful API 版本。
| SCDF 版本 | API 版本 | 
|---|---|
| 2.10.x | 14 | 
| 2.9.x | 14 | 
| 2.8.x | 14 | 
| 2.7.x | 14 | 
41.2. HTTP 动词
Spring Cloud Data Flow 在使用 HTTP 动词时尝试尽可能严格地遵守标准 HTTP 和 REST 约定,如下表所述:
| 动词 | 用法 | 
|---|---|
| 
 | 用于检索资源。 | 
| 
 | 用于创建新资源。 | 
| 
 | 用于更新现有资源,包括部分更新。也用于
暗示 | 
| 
 | 用于删除现有资源。 | 
41.3. HTTP 状态代码
Spring Cloud Data Flow 在使用 HTTP 状态代码时尝试尽可能严格遵守标准 HTTP 和 REST 约定,如下表所示:
| 状态代码 | 用法 | 
|---|---|
| 
 | 请求已成功完成。 | 
| 
 | 已成功创建新资源。资源的 URI 可从响应的 | 
| 
 | 已成功应用对现有资源的更新。 | 
| 
 | 该请求格式错误。响应正文包括提供更多信息的错误描述。 | 
| 
 | 请求的资源不存在。 | 
| 
 | 请求的资源已存在。例如,任务已存在或流已部署 | 
| 
 | 在作业执行无法停止或重新启动的情况下返回。 | 
41.4. 标头
每个响应都有以下标头:
| 名称 | 描述 | 
|---|---|
| 
 | 有效负载的 Content-Type,例如 | 
41.5. 错误
| 路径 | 类型 | 描述 | 
|---|---|---|
| 
 | 
 | 发生的 HTTP 错误,例如 | 
| 
 | 
 | 错误原因的描述 | 
| 
 | 
 | 发出请求的路径 | 
| 
 | 
 | HTTP 状态代码,例如 | 
| 
 | 
 | 发生错误的时间(以毫秒为单位) | 
41.6. 超媒体
Spring Cloud Data Flow 使用超媒体,资源包括指向其他资源的链接
在他们的回应中。
响应采用超文本应用程序,从资源到资源语言 (HAL) 格式。
链接可以在_links钥匙。
API 的用户不应自行创建 URI。
相反,他们应该使用上述链接进行导航。
42. 资源
该 API 包括以下资源:
42.1. 索引
该索引提供了进入 Spring Cloud Data Flow 的 REST API 的入口点。 以下主题提供了更多详细信息:
42.1.1. 访问索引
使用GET请求访问索引。
请求结构
GET / HTTP/1.1
Host: localhost:9393示例请求
$ curl 'http://localhost:9393/' -i -X GET响应结构
| 路径 | 类型 | 描述 | 
|---|---|---|
| 
 | 
 | 与其他资源的链接 | 
| 
 | 
 | 每次在此 REST API 中实现更改时递增 | 
| 
 | 
 | 链接到审计记录 | 
| 
 | 
 | 链接到仪表板 | 
| 
 | 
 | 链接到流/定义 | 
| 
 | 
 | 链接到流/定义/定义 | 
| 
 | 
 | 链接流/定义/定义是模板化的 | 
| 
 | 
 | 链接到运行时/应用程序 | 
| 
 | 
 | 链接到 runtime/apps/{appId} | 
| 
 | 
 | 链接运行时/应用程序已模板化 | 
| 
 | 
 | 链接到 runtime/apps/{appId}/instances | 
| 
 | 
 | 链接运行时/apps/{appId}/instances 是模板化的 | 
| 
 | 
 | 链接到 runtime/apps/{appId}/instances/{instanceId} | 
| 
 | 
 | 链接运行时/apps/{appId}/instances/{instanceId} 是模板化的 | 
| 
 | 
 | 链接到 runtime/apps/{appId}/instances/{instanceId}/post | 
| 
 | 
 | 链接运行时/apps/{appId}/instances/{instanceId}/post 已模板化 | 
| 
 | 
 | 链接到 runtime/apps/{appId}/instances/{instanceId}/actuator | 
| 
 | 
 | 链接运行时/apps/{appId}/instances/{instanceId}/actuator 已模板化 | 
| 
 | 
 | 链接到运行时/流 | 
| 
 | 
 | 链接运行时/流是模板化的 | 
| 
 | 
 | 链接到 runtime/streams/{streamNames} | 
| 
 | 
 | 链接运行时/streams/{streamNames} 是模板化的 | 
| 
 | 
 | 链接到流/日志 | 
| 
 | 
 | 链接到 streams/logs/{streamName} | 
| 
 | 
 | 链接到 streams/logs/{streamName}/{appName} | 
| 
 | 
 | 链接 streams/logs/{streamName} 是模板化的 | 
| 
 | 
 | 链接 streams/logs/{streamName}/{appName} 是模板化的 | 
| 
 | 
 | 链接到流/部署 | 
| 
 | 
 | 链接到流/部署 | 
| 
 | 
 | 链接流/部署/{name} 是模板化的 | 
| 
 | 
 | 链接流/部署/{name} 是模板化的 | 
| 
 | 
 | 链接流/部署/{name} 是模板化的 | 
| 
 | 
 | 链接流/部署/{name} 是模板化的 | 
| 
 | 
 | 链接流/部署/{name} 是模板化的 | 
| 
 | 
 | 链接到 streams/deployments/deployment | 
| 
 | 
 | 链接流/部署/部署是模板化的 | 
| 
 | 
 | 链接到 streams/deployments/manifest/{name}/{version} | 
| 
 | 
 | 链接流/deployments/manifest/{name}/{version} 是模板化的 | 
| 
 | 
 | 链接到 streams/deployments/history/{name} | 
| 
 | 
 | 链接流/部署/历史记录是模板化的 | 
| 
 | 
 | 链接到 streams/deployments/rollback/{name}/{version} | 
| 
 | 
 | 链接流/部署/rollback/{name}/{version} 是模板化的 | 
| 
 | 
 | 链接到 streams/deployments/update/{name} | 
| 
 | 
 | 链接流/deployments/update/{name} 是模板化的 | 
| 
 | 
 | 链接到 streams/deployments/platform/list | 
| 
 | 
 | 链接到 streams/deployments/scale/{streamName}/{appName}/instances/{count} | 
| 
 | 
 | 链接 streams/deployments/scale/{streamName}/{appName}/instances/{count} 是模板化的 | 
| 
 | 
 | 链接到流/验证 | 
| 
 | 
 | 链接流/验证是模板化的 | 
| 
 | 
 | 链接到任务/平台 | 
| 
 | 
 | 链接到任务/定义 | 
| 
 | 
 | 链接到任务/定义/定义 | 
| 
 | 
 | 链接任务/定义/定义已模板化 | 
| 
 | 
 | 链接到任务/执行 | 
| 
 | 
 | 链接到任务/执行/名称 | 
| 
 | 
 | 链接任务/执行/名称是模板化的 | 
| 
 | 
 | 链接到任务/执行/当前 | 
| 
 | 
 | 链接到任务/执行/执行 | 
| 
 | 
 | 链接任务/执行/执行已模板化 | 
| 
 | 
 | 链接到任务/信息/执行 | 
| 
 | 
 | 链接任务/信息是模板化的 | 
| 
 | 
 | 链接到任务/日志 | 
| 
 | 
 | 链接任务/日志是模板化的 | 
| 
 | 
 | 链接到任务/执行/计划 | 
| 
 | 
 | 链接到任务/计划/实例 | 
| 
 | 
 | 链接任务/计划/实例是模板化的 | 
| 
 | 
 | 链接到任务/验证 | 
| 
 | 
 | 链接任务/验证是模板化的 | 
| 
 | 
 | 链接到作业/执行 | 
| 
 | 
 | 链接到作业/精简执行 | 
| 
 | 
 | 链接到作业/执行/名称 | 
| 
 | 
 | 链接作业/执行/名称已模板化 | 
| 
 | 
 | 链接到作业/执行/状态 | 
| 
 | 
 | 链接作业/执行/状态已模板化 | 
| 
 | 
 | 链接到 jobs/thinexecutions/name | 
| 
 | 
 | 链接作业/执行/名称已模板化 | 
| 
 | 
 | 链接到 jobs/thinexecutions/jobInstanceId | 
| 
 | 
 | 链接 jobs/executions/jobInstanceId 是模板化的 | 
| 
 | 
 | 链接到 jobs/thinexecutions/taskExecutionId | 
| 
 | 
 | 链接 jobs/executions/taskExecutionId 是模板化的 | 
| 
 | 
 | 链接到作业/执行/执行 | 
| 
 | 
 | 链接作业/执行/执行是模板化的 | 
| 
 | 
 | 链接到作业/执行/执行/步骤 | 
| 
 | 
 | 链接作业/执行/执行/步骤是模板化的 | 
| 
 | 
 | 链接到作业/执行/执行/步骤/步骤 | 
| 
 | 
 | 链接作业/执行/执行/步骤/步骤已模板化 | 
| 
 | 
 | 链接到作业/执行/执行/步骤/步骤/进度 | 
| 
 | 
 | 链接作业/执行/执行/步骤/步骤/进度是模板化的 | 
| 
 | 
 | 链接到作业/实例/名称 | 
| 
 | 
 | 链接作业/实例/名称已模板化 | 
| 
 | 
 | 链接到作业/实例/实例 | 
| 
 | 
 | 链接作业/实例/实例已模板化 | 
| 
 | 
 | 链接到 tools/parseTaskTextToGraph | 
| 
 | 
 | 链接到 tools/convertTaskGraphToText | 
| 
 | 
 | 链接到应用程序 | 
| 
 | 
 | 链接到关于 | 
| 
 | 
 | 链接到完成/流 | 
| 
 | 
 | 链接完成/流是模板化的 | 
| 
 | 
 | 链接到完成/任务 | 
| 
 | 
 | 链接完成/任务已模板化 | 
示例响应
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 7583
{
  "_links" : {
    "dashboard" : {
      "href" : "http://localhost:9393/dashboard"
    },
    "audit-records" : {
      "href" : "http://localhost:9393/audit-records"
    },
    "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/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}",
      "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}",
      "templated" : true
    },
    "tasks/logs" : {
      "href" : "http://localhost:9393/tasks/logs/{taskExternalExecutionId}{?platformName}",
      "templated" : true
    },
    "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 | 
| 
 | 提供任务定义资源 | 
| 
 | 提供特定任务定义的详细信息 | 
| 
 | 提供任务定义的验证 | 
| 
 | 返回任务执行并允许启动任务 | 
| 
 | 提供当前正在运行的任务计数 | 
| 
 | 提供任务执行信息 | 
| 
 | 提供任务的计划信息 | 
| 
 | 提供特定任务的计划信息 | 
| 
 | 返回给定任务名称的所有任务执行 | 
| 
 | 提供特定任务执行的详细信息 | 
| 
 | 提供用于启动任务的平台帐户。可以通过添加请求参数 'schedulesEnabled=true 来筛选结果以显示支持调度的平台 | 
| 
 | 检索任务应用程序日志 | 
| 
 | 公开 Streams 资源 | 
| 
 | 处理特定的流定义 | 
| 
 | 提供流定义的验证 | 
| 
 | 提供 Stream 部署作 | 
| 
 | 请求流定义的部署信息 | 
| 
 | 请求流定义的部署信息 | 
| 
 | 请求(取消)部署现有流定义 | 
| 
 | 返回发布版本的清单信息 | 
| 
 | 获取流的部署历史记录作为此版本的列表或版本 | 
| 
 | 将流回滚到流的先前版本或特定版本 | 
| 
 | 更新流。 | 
| 
 | 支持的部署平台列表 | 
| 
 | 纵向扩展或缩减所选流的应用程序实例数 | 
| 
 | 检索流的应用程序日志 | 
| 
 | 检索流的应用程序日志 | 
| 
 | 检索流的特定应用程序日志 | 
| 
 | 将任务定义解析为图形结构 | 
| 
 | 将图形格式转换为 DSL 文本格式 | 
42.2. 服务器元信息
服务器元信息端点提供有关服务器本身的更多信息。 以下主题提供了更多详细信息:
42.2.1. 检索有关服务器的信息
一个GETrequest 返回 Spring Cloud Data Flow 的元信息,包括:
- 
运行时环境信息 
- 
有关启用哪些功能的信息 
- 
Spring Cloud Data Flow Server的依赖信息 
- 
安全信息 
请求结构
GET /about HTTP/1.1
Accept: application/json
Host: localhost:9393示例请求
$ curl 'http://localhost:9393/about' -i -X GET \
    -H 'Accept: application/json'响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 2611
{
  "featureInfo" : {
    "analyticsEnabled" : true,
    "streamsEnabled" : true,
    "tasksEnabled" : true,
    "schedulesEnabled" : true,
    "monitoringDashboardType" : "NONE"
  },
  "versionInfo" : {
    "implementation" : {
      "name" : "${info.app.name}",
      "version" : "${info.app.version}"
    },
    "core" : {
      "name" : "Spring Cloud Data Flow Core",
      "version" : "2.10.3"
    },
    "dashboard" : {
      "name" : "Spring Cloud Dataflow UI",
      "version" : "3.3.3"
    },
    "shell" : {
      "name" : "Spring Cloud Data Flow Shell",
      "version" : "2.10.3",
      "url" : "https://repo.maven.apache.org/maven2/org/springframework/cloud/spring-cloud-dataflow-shell/2.10.3/spring-cloud-dataflow-shell-2.10.3.jar"
    }
  },
  "securityInfo" : {
    "authenticationEnabled" : false,
    "authenticated" : false,
    "username" : null,
    "roles" : [ ]
  },
  "runtimeEnvironment" : {
    "appDeployer" : {
      "deployerImplementationVersion" : "Test Version",
      "deployerName" : "Test Server",
      "deployerSpiVersion" : "2.9.3",
      "javaVersion" : "1.8.0_372",
      "platformApiVersion" : "",
      "platformClientVersion" : "",
      "platformHostVersion" : "",
      "platformSpecificInfo" : {
        "default" : "local"
      },
      "platformType" : "Skipper Managed",
      "springBootVersion" : "2.7.11",
      "springVersion" : "5.3.27"
    },
    "taskLaunchers" : [ {
      "deployerImplementationVersion" : "2.8.3",
      "deployerName" : "LocalTaskLauncher",
      "deployerSpiVersion" : "2.8.3",
      "javaVersion" : "1.8.0_372",
      "platformApiVersion" : "Linux 5.15.0-1036-azure",
      "platformClientVersion" : "5.15.0-1036-azure",
      "platformHostVersion" : "5.15.0-1036-azure",
      "platformSpecificInfo" : { },
      "platformType" : "Local",
      "springBootVersion" : "2.7.11",
      "springVersion" : "5.3.27"
    }, {
      "deployerImplementationVersion" : "2.8.3",
      "deployerName" : "LocalTaskLauncher",
      "deployerSpiVersion" : "2.8.3",
      "javaVersion" : "1.8.0_372",
      "platformApiVersion" : "Linux 5.15.0-1036-azure",
      "platformClientVersion" : "5.15.0-1036-azure",
      "platformHostVersion" : "5.15.0-1036-azure",
      "platformSpecificInfo" : { },
      "platformType" : "Local",
      "springBootVersion" : "2.7.11",
      "springVersion" : "5.3.27"
    } ]
  },
  "monitoringDashboardInfo" : {
    "url" : "",
    "refreshInterval" : 15,
    "dashboardType" : "NONE",
    "source" : "default-scdf-source"
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/about"
    }
  }
}42.3. 注册应用程序
已注册的应用程序端点提供有关向 Spring Cloud Data Flow 服务器注册的应用程序的信息。 以下主题提供了更多详细信息:
42.3.1. 列出应用程序
一个GETrequest 列出了 Spring Cloud Data Flow 已知的所有应用程序。
以下主题提供了更多详细信息:
请求结构
GET /apps?search=&type=source&defaultVersion=true&page=0&size=10&sort=name%2CASC HTTP/1.1
Accept: application/json
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 对名称执行的搜索字符串(可选) | 
| 
 | 将返回的应用限制为应用的类型。[应用、源、处理器、接收器、任务] 之一 | 
| 
 | 要设置为仅检索默认版本的应用的布尔标志(可选) | 
| 
 | 从零开始的页码(可选) | 
| 
 | 列表中的排序(可选) | 
| 
 | 请求的页面大小(可选) | 
示例请求
$ 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: 1097
{
  "_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,
      "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,
      "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
  }
}42.3.2. 获取有关特定应用程序的信息
一个GET请求/apps/<type>/<name>获取有关特定应用程序的信息。
以下主题提供了更多详细信息:
请求结构
GET /apps/source/http?exhaustive=false HTTP/1.1
Accept: application/json
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 返回所有应用程序属性,包括常见的 Spring Boot 属性 | 
路径参数
/应用程序/{类型}/{名称}
| 参数 | 描述 | 
|---|---|
| 
 | 要查询的应用程序类型。[应用、源、处理器、接收器、任务] 之一 | 
| 
 | 要查询的应用程序的名称 | 
示例请求
$ 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: 2100
{
  "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,
  "versions" : null,
  "label" : null,
  "options" : [ {
    "id" : "http.path-pattern",
    "name" : "path-pattern",
    "type" : "java.lang.String",
    "description" : "An Ant-Style pattern to determine which http requests will be captured.",
    "shortDescription" : "An Ant-Style pattern to determine which http requests will be captured.",
    "defaultValue" : "/",
    "hints" : {
      "keyHints" : [ ],
      "keyProviders" : [ ],
      "valueHints" : [ ],
      "valueProviders" : [ ]
    },
    "deprecation" : null,
    "deprecated" : false
  }, {
    "id" : "http.mapped-request-headers",
    "name" : "mapped-request-headers",
    "type" : "java.lang.String[]",
    "description" : "Headers that will be mapped.",
    "shortDescription" : "Headers that will be mapped.",
    "defaultValue" : null,
    "hints" : {
      "keyHints" : [ ],
      "keyProviders" : [ ],
      "valueHints" : [ ],
      "valueProviders" : [ ]
    },
    "deprecation" : null,
    "deprecated" : false
  }, {
    "id" : "http.secured",
    "name" : "secured",
    "type" : "java.lang.Boolean",
    "description" : "Secure or not HTTP source path.",
    "shortDescription" : "Secure or not HTTP source path.",
    "defaultValue" : false,
    "hints" : {
      "keyHints" : [ ],
      "keyProviders" : [ ],
      "valueHints" : [ ],
      "valueProviders" : [ ]
    },
    "deprecation" : null,
    "deprecated" : false
  }, {
    "id" : "server.port",
    "name" : "port",
    "type" : "java.lang.Integer",
    "description" : "Server HTTP port.",
    "shortDescription" : "Server HTTP port.",
    "defaultValue" : null,
    "hints" : {
      "keyHints" : [ ],
      "keyProviders" : [ ],
      "valueHints" : [ ],
      "valueProviders" : [ ]
    },
    "deprecation" : null,
    "deprecated" : false
  } ],
  "shortDescription" : null,
  "inboundPortNames" : [ ],
  "outboundPortNames" : [ ],
  "optionGroups" : { }
}42.3.3. 注册新应用程序
一个POST请求/apps/<type>/<name>允许注册新应用程序。
以下主题提供了更多详细信息:
请求结构
POST /apps/source/http 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,否则将发生错误 | 
路径参数
/应用程序/{类型}/{名称}
| 参数 | 描述 | 
|---|---|
| 
 | 要注册的应用程序类型。[应用、源、处理器、接收器、任务] 之一 | 
| 
 | 要注册的应用程序的名称 | 
示例请求
$ curl 'http://localhost:9393/apps/source/http' -i -X POST \
    -d 'uri=maven%3A%2F%2Forg.springframework.cloud.stream.app%3Ahttp-source-rabbit%3A1.1.0.RELEASE'响应结构
HTTP/1.1 201 Created42.3.4. 使用 version 注册新应用程序
一个POST请求/apps/<type>/<name>/<version>允许注册新应用程序。
以下主题提供了更多详细信息:
请求结构
POST /apps/source/http/1.1.0.RELEASE 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,否则将发生错误 | 
路径参数
/apps/{type}/{name}/{version:.+}
| 参数 | 描述 | 
|---|---|
| 
 | 要注册的应用程序类型。[应用、源、处理器、接收器、任务] 之一(可选) | 
| 
 | 要注册的应用程序的名称 | 
| 
 | 要注册的应用程序版本 | 
示例请求
$ curl 'http://localhost:9393/apps/source/http/1.1.0.RELEASE' -i -X POST \
    -d 'uri=maven%3A%2F%2Forg.springframework.cloud.stream.app%3Ahttp-source-rabbit%3A1.1.0.RELEASE'响应结构
HTTP/1.1 201 Created42.3.5. 批量注册应用程序
一个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: 658
{
  "_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,
      "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
  }
}42.3.6. 设置默认应用程序版本
对于具有相同name和type,您可以注册多个版本。
在这种情况下,您可以选择其中一个版本作为默认应用程序。
以下主题提供了更多详细信息:
请求结构
PUT /apps/source/http/1.2.0.RELEASE HTTP/1.1
Accept: application/json
Host: localhost:9393路径参数
/apps/{type}/{name}/{version:.+}
| 参数 | 描述 | 
|---|---|
| 
 | 应用程序的类型。[应用、源、处理器、接收器、任务] 之一 | 
| 
 | 应用程序的名称 | 
| 
 | 应用程序的版本 | 
示例请求
$ curl 'http://localhost:9393/apps/source/http/1.2.0.RELEASE' -i -X PUT \
    -H 'Accept: application/json'响应结构
HTTP/1.1 202 Accepted42.3.7. 注销应用程序
一个DELETE请求/apps/<type>/<name>取消注册以前注册的应用程序。
以下主题提供了更多详细信息:
请求结构
DELETE /apps/source/http/1.2.0.RELEASE HTTP/1.1
Host: localhost:9393路径参数
/apps/{类型}/{名称}/{版本}
| 参数 | 描述 | 
|---|---|
| 
 | 要注销的应用程序类型。[应用、源、处理器、接收器、任务] 之一 | 
| 
 | 要注销的应用程序的名称 | 
| 
 | 要注销的应用程序版本(可选) | 
示例请求
$ curl 'http://localhost:9393/apps/source/http/1.2.0.RELEASE' -i -X DELETE响应结构
HTTP/1.1 200 OK42.4. 审计记录
审核记录端点提供有关审核记录的信息。以下主题提供了更多详细信息:
42.4.1. 列出所有审计记录
审核记录端点允许您检索审核跟踪信息。
以下主题提供了更多详细信息:
请求结构
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)(可选) | 
| 
 | 迄今为止的筛选器(例如: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" : "2023-05-04T23:18:44.707Z",
      "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
  }
}42.4.2. 检索审计记录详细信息
审核记录终结点允许您获取单个审核记录。以下主题提供了更多详细信息:
请求结构
GET /audit-records/5 HTTP/1.1
Host: localhost:9393路径参数
/审计记录/{id}
| 参数 | 描述 | 
|---|---|
| 
 | 要查询的审核记录的 ID(必填) | 
示例请求
$ curl 'http://localhost:9393/audit-records/5' -i -X GET响应结构
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" : "2023-05-04T23:18:44.707Z",
  "auditAction" : "CREATE",
  "auditOperation" : "STREAM",
  "platformName" : null,
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/audit-records/5"
    }
  }
}42.4.3. 列出所有审计作类型
审核记录终结点允许您获取作类型。以下主题提供了更多详细信息:
请求结构
GET /audit-records/audit-action-types HTTP/1.1
Host: localhost:9393示例请求
$ curl 'http://localhost:9393/audit-records/audit-action-types' -i -X GET响应结构
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"
} ]42.4.4. 列出所有审计作类型
审核记录终结点允许您获取作类型。以下主题提供了更多详细信息:
请求结构
GET /audit-records/audit-operation-types HTTP/1.1
Host: localhost:9393示例请求
$ curl 'http://localhost:9393/audit-records/audit-operation-types' -i -X GET响应结构
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"
} ]42.5. 流定义
已注册的应用程序端点提供有关向 Spring Cloud Data Flow 服务器注册的流定义的信息。以下主题提供了更多详细信息:
42.5.1. 创建新的流定义
创建流定义是通过创建对流定义端点的 POST 请求来实现的。对ticktock流可能类似于以下内容:
curl -X POST -d "name=ticktock&definition=time | log" localhost:9393/streams/definitions?deploy=false流定义还可以包含其他参数。例如,在“请求结构”下显示的示例中,我们还提供了日期时间格式。
以下主题提供了更多详细信息:
请求结构
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请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 已创建任务定义的名称 | 
| 
 | 流的定义,使用数据流 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"
    }
  }
}42.5.2. 列出所有流定义
流端点允许您列出所有流定义。 以下主题提供了更多详细信息:
请求结构
GET /streams/definitions?page=0&sort=name%2CASC&search=&size=10 HTTP/1.1
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 从零开始的页码(可选) | 
| 
 | 对名称执行的搜索字符串(可选) | 
| 
 | 列表中的排序(可选) | 
| 
 | 请求的页面大小(可选) | 
示例请求
$ 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: 1160
{
  "_embedded" : {
    "streamDefinitionResourceList" : [ {
      "name" : "mysamplestream",
      "dslText" : "time | log",
      "originalDslText" : "time | 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/mysamplestream"
        }
      }
    }, {
      "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"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/streams/definitions?page=0&size=10&sort=name,asc"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 0
  }
}42.5.3. 列出相关流定义
流端点允许您列出相关的流定义。 以下主题提供了更多详细信息:
请求结构
GET /streams/definitions/timelog/related?page=0&sort=name%2CASC&search=&size=10&nested=true HTTP/1.1
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 我们是否应该递归地为相关流定义findByTaskNameContains(可选) | 
| 
 | 从零开始的页码(可选) | 
| 
 | 对名称执行的搜索字符串(可选) | 
| 
 | 列表中的排序(可选) | 
| 
 | 请求的页面大小(可选) | 
示例请求
$ 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: 769
{
  "_embedded" : {
    "streamDefinitionResourceList" : [ {
      "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"
        }
      }
    } ]
  },
  "_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
  }
}42.5.4. 检索流定义详细信息
流定义终结点允许您获取单个流定义。以下主题提供了更多详细信息:
请求结构
GET /streams/definitions/timelog HTTP/1.1
Host: localhost:9393路径参数
/streams/definitions/{name}
| 参数 | 描述 | 
|---|---|
| 
 | 要查询的流定义的名称(必填) | 
示例请求
$ curl 'http://localhost:9393/streams/definitions/timelog' -i -X GET响应结构
HTTP/1.1 200 OK
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"
    }
  }
}42.5.5. 删除单个流定义
流端点允许您删除单个流定义。 (另请参阅:删除所有流定义。 以下主题提供了更多详细信息:
请求结构
DELETE /streams/definitions/timelog HTTP/1.1
Host: localhost:9393请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/streams/definitions/timelog' -i -X DELETE响应结构
HTTP/1.1 200 OK42.6. 流验证
流验证终结点允许您验证流定义中的应用。 以下主题提供了更多详细信息:
42.6.1. 请求结构
GET /streams/validation/timelog HTTP/1.1
Host: localhost:939342.6.2. 路径参数
/streams/validation/{name}
| 参数 | 描述 | 
|---|---|
| 
 | 要验证的流定义的名称(必需) | 
42.6.3. 示例请求
$ curl 'http://localhost:9393/streams/validation/timelog' -i -X GET42.6.4. 响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 197
{
  "appName" : "timelog",
  "dsl" : "time --format='YYYY MM DD' | log",
  "description" : "Demo stream for testing",
  "appStatuses" : {
    "source:time" : "valid",
    "sink:log" : "valid"
  }
}42.7. 流部署
部署定义端点提供有关向 Spring Cloud Data Flow 服务器注册的部署的信息。 以下主题提供了更多详细信息:
42.7.1. 部署流定义
流定义端点允许您部署单个流定义。 (可选)可以将应用程序参数作为请求正文中的属性传递。 以下主题提供了更多详细信息:
请求结构
POST /streams/deployments/timelog HTTP/1.1
Content-Type: application/json
Content-Length: 36
Host: localhost:9393
{"app.time.timestamp.format":"YYYY"}/streams/deployments/{timelog}
| 参数 | 描述 | 
|---|---|
| 
 | 现有流定义的名称(必需) | 
请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/streams/deployments/timelog' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '{"app.time.timestamp.format":"YYYY"}'响应结构
HTTP/1.1 201 Created42.7.2. 取消部署流定义
流定义终结点允许您取消部署单个流定义。以下主题提供了更多详细信息:
请求结构
DELETE /streams/deployments/timelog HTTP/1.1
Host: localhost:9393/streams/deployments/{timelog}
| 参数 | 描述 | 
|---|---|
| 
 | 现有流定义的名称(必需) | 
请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/streams/deployments/timelog' -i -X DELETE响应结构
HTTP/1.1 200 OK42.7.3. 取消部署所有流定义
流定义端点允许您取消部署所有单个流定义。 以下主题提供了更多详细信息:
请求结构
DELETE /streams/deployments HTTP/1.1
Host: localhost:9393请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/streams/deployments' -i -X DELETE响应结构
HTTP/1.1 200 OK42.7.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}'响应结构
HTTP/1.1 201 Created42.7.5. 回滚流定义
将流回滚到流的先前版本或特定版本。
请求结构
POST /streams/deployments/rollback/timelog1/1 HTTP/1.1
Content-Type: application/json
Host: localhost:9393/streams/deployments/rollback/{name}/{version}
| 参数 | 描述 | 
|---|---|
| 
 | 现有流定义的名称(必需) | 
| 
 | 要回滚到的版本 | 
请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/streams/deployments/rollback/timelog1/1' -i -X POST \
    -H 'Content-Type: application/json'响应结构
HTTP/1.1 201 Created42.7.6. 获取清单
返回已发布版本的清单。对于具有依赖项的包,清单包含这些依赖项的内容。
请求结构
GET /streams/deployments/manifest/timelog1/1 HTTP/1.1
Content-Type: application/json
Host: localhost:9393/streams/deployments/manifest/{name}/{version}
| 参数 | 描述 | 
|---|---|
| 
 | 现有流定义的名称(必需) | 
| 
 | 流的版本 | 
请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/streams/deployments/manifest/timelog1/1' -i -X GET \
    -H 'Content-Type: application/json'响应结构
HTTP/1.1 200 OK42.7.7. 获取部署历史记录
获取流的部署历史记录。
请求结构
GET /streams/deployments/history/timelog1 HTTP/1.1
Content-Type: application/json
Host: localhost:9393示例请求
$ curl 'http://localhost:9393/streams/deployments/history/timelog1' -i -X GET \
    -H 'Content-Type: application/json'响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 162
[ {
  "name" : null,
  "version" : 0,
  "info" : null,
  "pkg" : null,
  "configValues" : {
    "raw" : null
  },
  "manifest" : null,
  "platformName" : null
} ]42.7.8. 获取部署平台
检索受支持的部署平台列表。
请求结构
GET /streams/deployments/platform/list HTTP/1.1
Content-Type: application/json
Host: localhost:9393示例请求
$ curl 'http://localhost:9393/streams/deployments/platform/list' -i -X GET \
    -H 'Content-Type: application/json'响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 106
[ {
  "id" : null,
  "name" : "default",
  "type" : "local",
  "description" : null,
  "options" : [ ]
} ]42.7.9. 缩放流定义
流定义终结点允许您缩放流定义中的单个应用。 (可选)可以将应用程序参数作为请求正文中的属性传递。 以下主题提供了更多详细信息:
请求结构
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}
| 参数 | 描述 | 
|---|---|
| 
 | 现有流定义的名称(必需) | 
| 
 | 在流应用程序名称中缩放 | 
| 
 | 所选流应用程序的实例数(必需) | 
请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/streams/deployments/scale/timelog/log/instances/1' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '{"app.time.timestamp.format":"YYYY"}'响应结构
HTTP/1.1 201 Created42.8. 任务定义
任务定义端点提供有关向 Spring Cloud Data Flow 服务器注册的任务定义的信息。 以下主题提供了更多详细信息:
42.8.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请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 已创建任务定义的名称 | 
| 
 | 任务的定义,使用数据流 DSL | 
| 
 | 任务定义的描述 | 
示例请求
$ 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"
    }
  }
}42.8.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
  }
}42.8.3. 检索任务定义详细信息
任务定义终结点允许您获取单个任务定义。 以下主题提供了更多详细信息:
请求结构
GET /tasks/definitions/my-task?manifest=true HTTP/1.1
Host: localhost:9393/任务/定义/{我的任务}
| 参数 | 描述 | 
|---|---|
| 
 | 现有任务定义的名称(必填) | 
请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/tasks/definitions/my-task?manifest=true' -i -X GET响应结构
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"
    }
  }
}42.8.4. 删除任务定义
任务定义端点允许您删除单个任务定义。 以下主题提供了更多详细信息:
请求结构
DELETE /tasks/definitions/my-task?cleanup=true HTTP/1.1
Host: localhost:9393/任务/定义/{我的任务}
| 参数 | 描述 | 
|---|---|
| 
 | 现有任务定义的名称(必填) | 
请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/tasks/definitions/my-task?cleanup=true' -i -X DELETE响应结构
HTTP/1.1 200 OK42.9. 任务计划程序
任务计划程序终结点提供有关向计划程序实现注册的任务计划的信息。 以下主题提供了更多详细信息:
42.9.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请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 创建的计划的名称 | 
| 
 | 启动任务的平台的名称 | 
| 
 | 要计划的任务定义的名称 | 
| 
 | 计划和启动任务所需的属性 | 
| 
 | 用于启动任务的命令行参数 | 
示例请求
$ curl 'http://localhost:9393/tasks/schedules' -i -X POST \
    -d 'scheduleName=myschedule&taskDefinitionName=mytaskname&platform=default&properties=scheduler.cron.expression%3D00+22+17+%3F+*&arguments=--foo%3Dbar'响应结构
HTTP/1.1 201 Created42.9.2. 列出所有计划
任务计划终结点允许您获取所有任务计划。 以下主题提供了更多详细信息:
请求结构
GET /tasks/schedules?page=0&size=10 HTTP/1.1
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 从零开始的页码(可选) | 
| 
 | 请求的页面大小(可选) | 
示例请求
$ curl 'http://localhost:9393/tasks/schedules?page=0&size=10' -i -X GET响应结构
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
  }
}42.9.3. 列出过滤的计划
任务计划终结点允许您获取具有指定任务定义名称的所有任务计划。 以下主题提供了更多详细信息:
请求结构
GET /tasks/schedules/instances/FOO?page=0&size=10 HTTP/1.1
Host: localhost:9393/tasks/schedules/instances/{任务定义名称}
| 参数 | 描述 | 
|---|---|
| 
 | 根据指定的任务定义筛选计划(必需) | 
请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 从零开始的页码(可选) | 
| 
 | 请求的页面大小(可选) | 
示例请求
$ curl 'http://localhost:9393/tasks/schedules/instances/FOO?page=0&size=10' -i -X GET响应结构
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
  }
}42.9.4. 删除任务计划
任务计划终结点允许您删除单个任务计划。以下主题提供了更多详细信息:
请求结构
DELETE /tasks/schedules/mytestschedule HTTP/1.1
Host: localhost:9393/任务/计划/{scheduleName}
| 参数 | 描述 | 
|---|---|
| 
 | 现有计划的名称(必填) | 
请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/tasks/schedules/mytestschedule' -i -X DELETE响应结构
HTTP/1.1 200 OK42.10. 任务验证
任务验证终结点允许验证任务定义中的应用。 以下主题提供了更多详细信息:
42.10.1. 请求结构
GET /tasks/validation/taskC HTTP/1.1
Host: localhost:939342.10.2. 路径参数
/任务/验证/{名称}
| 参数 | 描述 | 
|---|---|
| 
 | 要验证的任务定义的名称(必填) | 
42.10.3. 示例请求
$ curl 'http://localhost:9393/tasks/validation/taskC' -i -X GET42.10.4. 响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 144
{
  "appName" : "taskC",
  "dsl" : "timestamp --format='yyyy MM dd'",
  "description" : "",
  "appStatuses" : {
    "task:taskC" : "valid"
  }
}42.11. 任务执行
任务执行端点提供有关向 Spring Cloud Data Flow 服务器注册的任务执行的信息。 以下主题提供了更多详细信息:
42.11.1. 启动任务
启动任务是通过请求创建新任务执行来完成的。 以下主题提供了更多详细信息:
请求结构
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请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 要启动的任务定义的名称 | 
| 
 | 启动时要使用的应用程序和部署程序属性 | 
| 
 | 要传递给任务的命令行参数 | 
示例请求
$ curl 'http://localhost:9393/tasks/executions' -i -X POST \
    -d 'name=taskA&properties=app.my-task.foo%3Dbar%2Cdeployer.my-task.something-else%3D3&arguments=--server.port%3D8080+--foo%3Dbar'响应结构
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 1
142.11.2. 停止任务
停止任务是通过发布现有任务执行的 ID 来完成的。 以下主题提供了更多详细信息:
请求结构
POST /tasks/executions/1 HTTP/1.1
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
platform=default路径参数
/任务/执行/{id}
| 参数 | 描述 | 
|---|---|
| 
 | 现有任务执行的 ID(必需) | 
请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 与任务执行关联的平台(可选) | 
示例请求
$ curl 'http://localhost:9393/tasks/executions/1' -i -X POST \
    -d 'platform=default'响应结构
HTTP/1.1 200 OK42.11.3. 列出所有任务执行
任务执行端点允许您列出所有任务执行。 以下主题提供了更多详细信息:
请求结构
GET /tasks/executions?page=0&size=10 HTTP/1.1
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 从零开始的页码(可选) | 
| 
 | 请求的页面大小(可选) | 
示例请求
$ curl 'http://localhost:9393/tasks/executions?page=0&size=10' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 3289
{
  "_embedded" : {
    "taskExecutionResourceList" : [ {
      "executionId" : 2,
      "exitCode" : null,
      "taskName" : "taskB",
      "startTime" : null,
      "endTime" : null,
      "exitMessage" : null,
      "arguments" : [ ],
      "jobExecutionIds" : [ ],
      "errorMessage" : null,
      "externalExecutionId" : "taskB-4a2d9ff9-dcdf-41b6-a8d2-35dd8e327095",
      "parentExecutionId" : null,
      "resourceUrl" : "org.springframework.cloud.task.app:timestamp-task:jar:1.2.0.RELEASE",
      "appProperties" : {
        "management.metrics.tags.service" : "task-application",
        "timestamp.format" : "yyyy MM dd",
        "spring.datasource.username" : null,
        "spring.datasource.url" : null,
        "spring.datasource.driverClassName" : null,
        "management.metrics.tags.application" : "${spring.cloud.task.name:unknown}-${spring.cloud.task.executionid:unknown}",
        "spring.cloud.task.name" : "taskB"
      },
      "deploymentProperties" : {
        "app.my-task.foo" : "bar",
        "deployer.my-task.something-else" : "3"
      },
      "platformName" : "default",
      "taskExecutionStatus" : "UNKNOWN",
      "_links" : {
        "tasks/logs" : [ {
          "href" : "http://localhost:9393/tasks/logs/taskB-4a2d9ff9-dcdf-41b6-a8d2-35dd8e327095?platformName=default"
        }, {
          "href" : "http://localhost:9393/tasks/logs/taskB-4a2d9ff9-dcdf-41b6-a8d2-35dd8e327095?platformName=default"
        } ],
        "self" : {
          "href" : "http://localhost:9393/tasks/executions/2"
        }
      }
    }, {
      "executionId" : 1,
      "exitCode" : null,
      "taskName" : "taskA",
      "startTime" : null,
      "endTime" : null,
      "exitMessage" : null,
      "arguments" : [ ],
      "jobExecutionIds" : [ ],
      "errorMessage" : null,
      "externalExecutionId" : "taskA-f429bcab-6fc8-461e-a6d8-beff76d4fe46",
      "parentExecutionId" : null,
      "resourceUrl" : "org.springframework.cloud.task.app:timestamp-task:jar:1.2.0.RELEASE",
      "appProperties" : {
        "management.metrics.tags.service" : "task-application",
        "timestamp.format" : "yyyy MM dd",
        "spring.datasource.username" : null,
        "spring.datasource.url" : null,
        "spring.datasource.driverClassName" : null,
        "management.metrics.tags.application" : "${spring.cloud.task.name:unknown}-${spring.cloud.task.executionid:unknown}",
        "spring.cloud.task.name" : "taskA"
      },
      "deploymentProperties" : {
        "app.my-task.foo" : "bar",
        "deployer.my-task.something-else" : "3"
      },
      "platformName" : "default",
      "taskExecutionStatus" : "UNKNOWN",
      "_links" : {
        "tasks/logs" : [ {
          "href" : "http://localhost:9393/tasks/logs/taskA-f429bcab-6fc8-461e-a6d8-beff76d4fe46?platformName=default"
        }, {
          "href" : "http://localhost:9393/tasks/logs/taskA-f429bcab-6fc8-461e-a6d8-beff76d4fe46?platformName=default"
        } ],
        "self" : {
          "href" : "http://localhost:9393/tasks/executions/1"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/tasks/executions?page=0&size=10"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 0
  }
}42.11.4. 列出具有指定任务名称的所有任务执行
任务执行端点允许您列出具有指定任务名称的任务执行。 以下主题提供了更多详细信息:
请求结构
GET /tasks/executions?name=taskB&page=0&size=10 HTTP/1.1
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 从零开始的页码(可选) | 
| 
 | 请求的页面大小(可选) | 
| 
 | 与任务执行关联的名称 | 
示例请求
$ curl 'http://localhost:9393/tasks/executions?name=taskB&page=0&size=10' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1781
{
  "_embedded" : {
    "taskExecutionResourceList" : [ {
      "executionId" : 2,
      "exitCode" : null,
      "taskName" : "taskB",
      "startTime" : null,
      "endTime" : null,
      "exitMessage" : null,
      "arguments" : [ ],
      "jobExecutionIds" : [ ],
      "errorMessage" : null,
      "externalExecutionId" : "taskB-4a2d9ff9-dcdf-41b6-a8d2-35dd8e327095",
      "parentExecutionId" : null,
      "resourceUrl" : "org.springframework.cloud.task.app:timestamp-task:jar:1.2.0.RELEASE",
      "appProperties" : {
        "management.metrics.tags.service" : "task-application",
        "timestamp.format" : "yyyy MM dd",
        "spring.datasource.username" : null,
        "spring.datasource.url" : null,
        "spring.datasource.driverClassName" : null,
        "management.metrics.tags.application" : "${spring.cloud.task.name:unknown}-${spring.cloud.task.executionid:unknown}",
        "spring.cloud.task.name" : "taskB"
      },
      "deploymentProperties" : {
        "app.my-task.foo" : "bar",
        "deployer.my-task.something-else" : "3"
      },
      "platformName" : "default",
      "taskExecutionStatus" : "UNKNOWN",
      "_links" : {
        "tasks/logs" : [ {
          "href" : "http://localhost:9393/tasks/logs/taskB-4a2d9ff9-dcdf-41b6-a8d2-35dd8e327095?platformName=default"
        }, {
          "href" : "http://localhost:9393/tasks/logs/taskB-4a2d9ff9-dcdf-41b6-a8d2-35dd8e327095?platformName=default"
        } ],
        "self" : {
          "href" : "http://localhost:9393/tasks/executions/2"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/tasks/executions?page=0&size=10"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}42.11.5. 任务执行详细信息
通过任务执行终结点,可以获取有关任务执行的详细信息。以下主题提供了更多详细信息:
请求结构
GET /tasks/executions/1 HTTP/1.1
Host: localhost:9393/任务/执行/{id}
| 参数 | 描述 | 
|---|---|
| 
 | 现有任务执行的 ID(必需) | 
请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/tasks/executions/1' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1354
{
  "executionId" : 1,
  "exitCode" : null,
  "taskName" : "taskA",
  "startTime" : null,
  "endTime" : null,
  "exitMessage" : null,
  "arguments" : [ ],
  "jobExecutionIds" : [ ],
  "errorMessage" : null,
  "externalExecutionId" : "taskA-f429bcab-6fc8-461e-a6d8-beff76d4fe46",
  "parentExecutionId" : null,
  "resourceUrl" : "org.springframework.cloud.task.app:timestamp-task:jar:1.2.0.RELEASE",
  "appProperties" : {
    "management.metrics.tags.service" : "task-application",
    "timestamp.format" : "yyyy MM dd",
    "spring.datasource.username" : null,
    "spring.datasource.url" : null,
    "spring.datasource.driverClassName" : null,
    "management.metrics.tags.application" : "${spring.cloud.task.name:unknown}-${spring.cloud.task.executionid:unknown}",
    "spring.cloud.task.name" : "taskA"
  },
  "deploymentProperties" : {
    "app.my-task.foo" : "bar",
    "deployer.my-task.something-else" : "3"
  },
  "platformName" : "default",
  "taskExecutionStatus" : "UNKNOWN",
  "_links" : {
    "tasks/logs" : [ {
      "href" : "http://localhost:9393/tasks/logs/taskA-f429bcab-6fc8-461e-a6d8-beff76d4fe46?platformName=default"
    }, {
      "href" : "http://localhost:9393/tasks/logs/taskA-f429bcab-6fc8-461e-a6d8-beff76d4fe46?platformName=default"
    } ],
    "self" : {
      "href" : "http://localhost:9393/tasks/executions/1"
    }
  }
}42.11.6. 删除任务执行
任务执行终结点允许您:
- 
清理用于部署任务的资源 
- 
从持久性存储中删除相关任务数据以及可能关联的 Spring Batch 作业数据 
| 清理实现(第一个选项)特定于平台。这两个作都可以触发 一次或单独。 | 
以下主题提供了更多详细信息:
有关删除任务执行数据,请参阅以下部分。
请求结构
DELETE /tasks/executions/1,2?action=CLEANUP,REMOVE_DATA HTTP/1.1
Host: localhost:9393/任务/执行/{ids}
| 参数 | 描述 | 
|---|---|
| 
 | 提供 2 个逗号分隔的任务执行 ID 值。 | 
| 您必须提供实际存在的任务执行 ID。否则,一个 | 
请求参数
此终结点支持一个名为 action 的可选请求参数。它是一个枚举,支持以下内容 值:
- 
清理 
- 
REMOVE_DATA 
| 参数 | 描述 | 
|---|---|
| 
 | 同时使用 CLEANUP 和 REMOVE_DATA 这两个作。 | 
示例请求
$ curl 'http://localhost:9393/tasks/executions/1,2?action=CLEANUP,REMOVE_DATA' -i -X DELETE响应结构
HTTP/1.1 200 OK42.11.7. 删除任务执行数据
您不仅可以清理用于部署任务的资源,还可以删除与 来自底层持久性存储的任务执行。此外,如果任务执行与一个或 更多批处理作业执行,这些也会被删除。
以下示例说明如何使用多个任务执行 ID 和多个作发出请求:
$ curl 'http://localhost:9393/tasks/executions/1,2?action=CLEANUP,REMOVE_DATA' -i -X DELETE/任务/执行/{ids}
| 参数 | 描述 | 
|---|---|
| 
 | 提供 2 个逗号分隔的任务执行 ID 值。 | 
| 参数 | 描述 | 
|---|---|
| 
 | 同时使用 CLEANUP 和 REMOVE_DATA 这两个作。 | 
| 使用 REMOVE_DATAaction 参数,您必须提供
表示父任务执行的任务执行 ID。当您提供子任务执行(作为组合任务的一部分执行)时,
一个400(错误请求)HTTP 状态。 | 
| 删除大量任务执行时,某些数据库类型会限制 IN子句(Spring Cloud Data Flow 用于删除任务执行关系的方法)。
Spring Cloud Data Flow 支持 SQL Server(最多 2100 个条目)和 Oracle DB(最多 1000 个条目)的删除分块。
但是,Spring Cloud Data Flow 允许用户设置自己的分块因子。为此,将spring.cloud.dataflow.task.executionDeleteChunkSize属性设置为适当的块大小。
默认值为0这意味着 Spring Cloud Data Flow 不会对任务执行删除进行分块(Oracle 和 Sql Server 数据库除外)。 | 
42.11.8. 任务执行当前计数
任务执行当前端点允许您检索当前正在运行的执行数。 以下主题提供了更多详细信息:
请求结构
GET /tasks/executions/current HTTP/1.1
Host: localhost:9393请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/tasks/executions/current' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 111
[ {
  "name" : "default",
  "type" : "Local",
  "maximumTaskExecutions" : 20,
  "runningExecutionCount" : 0
} ]42.12. 作业执行
作业执行端点提供有关向 Spring Cloud Data Flow 服务器注册的作业执行的信息。 以下主题提供了更多详细信息:
42.12.1. 列出所有作业执行
作业执行端点允许您列出所有作业执行。 以下主题提供了更多详细信息:
请求结构
GET /jobs/executions?page=0&size=10 HTTP/1.1
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 从零开始的页码(可选) | 
| 
 | 请求的页面大小(可选) | 
示例请求
$ curl 'http://localhost:9393/jobs/executions?page=0&size=10' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 3066
{
  "_embedded" : {
    "jobExecutionResourceList" : [ {
      "executionId" : 2,
      "stepExecutionCount" : 0,
      "jobId" : 2,
      "taskExecutionId" : 2,
      "name" : "DOCJOB1",
      "startDate" : "2023-05-04",
      "startTime" : "23:18:28",
      "duration" : "00:00:01",
      "jobExecution" : {
        "id" : 2,
        "version" : 1,
        "jobParameters" : {
          "parameters" : { }
        },
        "jobInstance" : {
          "id" : 2,
          "jobName" : "DOCJOB1",
          "version" : null
        },
        "stepExecutions" : [ ],
        "status" : "STOPPED",
        "startTime" : "2023-05-04T23:18:28.426+0000",
        "createTime" : "2023-05-04T23:18:28.418+0000",
        "endTime" : null,
        "lastUpdated" : "2023-05-04T23:18:28.426+0000",
        "exitStatus" : {
          "exitCode" : "UNKNOWN",
          "exitDescription" : ""
        },
        "executionContext" : {
          "dirty" : false,
          "empty" : true,
          "values" : [ ]
        },
        "failureExceptions" : [ ],
        "jobConfigurationName" : null,
        "allFailureExceptions" : [ ]
      },
      "jobParameters" : { },
      "jobParametersString" : "",
      "restartable" : true,
      "abandonable" : true,
      "stoppable" : false,
      "defined" : true,
      "timeZone" : "UTC",
      "_links" : {
        "self" : {
          "href" : "http://localhost:9393/jobs/executions/2"
        }
      }
    }, {
      "executionId" : 1,
      "stepExecutionCount" : 0,
      "jobId" : 1,
      "taskExecutionId" : 1,
      "name" : "DOCJOB",
      "startDate" : "2023-05-04",
      "startTime" : "23:18:28",
      "duration" : "00:00:01",
      "jobExecution" : {
        "id" : 1,
        "version" : 2,
        "jobParameters" : {
          "parameters" : { }
        },
        "jobInstance" : {
          "id" : 1,
          "jobName" : "DOCJOB",
          "version" : null
        },
        "stepExecutions" : [ ],
        "status" : "STOPPING",
        "startTime" : "2023-05-04T23:18:28.398+0000",
        "createTime" : "2023-05-04T23:18:28.385+0000",
        "endTime" : null,
        "lastUpdated" : "2023-05-04T23:18:28.981+0000",
        "exitStatus" : {
          "exitCode" : "UNKNOWN",
          "exitDescription" : ""
        },
        "executionContext" : {
          "dirty" : false,
          "empty" : true,
          "values" : [ ]
        },
        "failureExceptions" : [ ],
        "jobConfigurationName" : null,
        "allFailureExceptions" : [ ]
      },
      "jobParameters" : { },
      "jobParametersString" : "",
      "restartable" : false,
      "abandonable" : true,
      "stoppable" : false,
      "defined" : false,
      "timeZone" : "UTC",
      "_links" : {
        "self" : {
          "href" : "http://localhost:9393/jobs/executions/1"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/jobs/executions?page=0&size=10"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 0
  }
}42.12.2. 列出所有不包含步骤执行的作业执行
作业执行端点允许您列出所有不包含步骤执行的作业执行。 以下主题提供了更多详细信息:
请求结构
GET /jobs/thinexecutions?page=0&size=10 HTTP/1.1
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 从零开始的页码(可选) | 
| 
 | 请求的页面大小(可选) | 
示例请求
$ curl 'http://localhost:9393/jobs/thinexecutions?page=0&size=10' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1604
{
  "_embedded" : {
    "jobExecutionThinResourceList" : [ {
      "executionId" : 2,
      "stepExecutionCount" : 0,
      "jobId" : 2,
      "taskExecutionId" : 2,
      "instanceId" : 2,
      "name" : "DOCJOB1",
      "startDate" : "2023-05-04",
      "startTime" : "23:18:28",
      "startDateTime" : "2023-05-04T23:18:28.426+0000",
      "duration" : "00:00:00",
      "jobParameters" : { },
      "jobParametersString" : "",
      "restartable" : true,
      "abandonable" : true,
      "stoppable" : false,
      "defined" : true,
      "timeZone" : "UTC",
      "status" : "STOPPED",
      "_links" : {
        "self" : {
          "href" : "http://localhost:9393/jobs/thinexecutions/2"
        }
      }
    }, {
      "executionId" : 1,
      "stepExecutionCount" : 0,
      "jobId" : 1,
      "taskExecutionId" : 1,
      "instanceId" : 1,
      "name" : "DOCJOB",
      "startDate" : "2023-05-04",
      "startTime" : "23:18:28",
      "startDateTime" : "2023-05-04T23:18:28.398+0000",
      "duration" : "00:00:00",
      "jobParameters" : { },
      "jobParametersString" : "",
      "restartable" : false,
      "abandonable" : false,
      "stoppable" : true,
      "defined" : false,
      "timeZone" : "UTC",
      "status" : "STARTED",
      "_links" : {
        "self" : {
          "href" : "http://localhost:9393/jobs/thinexecutions/1"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/jobs/thinexecutions?page=0&size=10"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 0
  }
}42.12.3. 列出具有指定作业名称的所有作业执行
作业执行端点允许您列出所有作业执行。 以下主题提供了更多详细信息:
请求结构
GET /jobs/executions?name=DOCJOB&page=0&size=10 HTTP/1.1
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 从零开始的页码(可选) | 
| 
 | 请求的页面大小(可选) | 
| 
 | 与作业执行关联的名称 | 
示例请求
$ curl 'http://localhost:9393/jobs/executions?name=DOCJOB&page=0&size=10' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1669
{
  "_embedded" : {
    "jobExecutionResourceList" : [ {
      "executionId" : 1,
      "stepExecutionCount" : 0,
      "jobId" : 1,
      "taskExecutionId" : 1,
      "name" : "DOCJOB",
      "startDate" : "2023-05-04",
      "startTime" : "23:18:28",
      "duration" : "00:00:01",
      "jobExecution" : {
        "id" : 1,
        "version" : 2,
        "jobParameters" : {
          "parameters" : { }
        },
        "jobInstance" : {
          "id" : 1,
          "jobName" : "DOCJOB",
          "version" : null
        },
        "stepExecutions" : [ ],
        "status" : "STOPPING",
        "startTime" : "2023-05-04T23:18:28.398+0000",
        "createTime" : "2023-05-04T23:18:28.385+0000",
        "endTime" : null,
        "lastUpdated" : "2023-05-04T23:18:28.981+0000",
        "exitStatus" : {
          "exitCode" : "UNKNOWN",
          "exitDescription" : ""
        },
        "executionContext" : {
          "dirty" : false,
          "empty" : true,
          "values" : [ ]
        },
        "failureExceptions" : [ ],
        "jobConfigurationName" : null,
        "allFailureExceptions" : [ ]
      },
      "jobParameters" : { },
      "jobParametersString" : "",
      "restartable" : false,
      "abandonable" : true,
      "stoppable" : false,
      "defined" : false,
      "timeZone" : "UTC",
      "_links" : {
        "self" : {
          "href" : "http://localhost:9393/jobs/executions/1"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/jobs/executions?page=0&size=10"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}42.12.4. 列出具有指定作业名称的所有作业执行,但不包括步骤执行
作业执行端点允许您列出所有作业执行。 以下主题提供了更多详细信息:
请求结构
GET /jobs/thinexecutions?name=DOCJOB&page=0&size=10 HTTP/1.1
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 从零开始的页码(可选) | 
| 
 | 请求的页面大小(可选) | 
| 
 | 与作业执行关联的名称 | 
示例请求
$ curl 'http://localhost:9393/jobs/thinexecutions?name=DOCJOB&page=0&size=10' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 943
{
  "_embedded" : {
    "jobExecutionThinResourceList" : [ {
      "executionId" : 1,
      "stepExecutionCount" : 0,
      "jobId" : 1,
      "taskExecutionId" : 1,
      "instanceId" : 1,
      "name" : "DOCJOB",
      "startDate" : "2023-05-04",
      "startTime" : "23:18:28",
      "startDateTime" : "2023-05-04T23:18:28.398+0000",
      "duration" : "00:00:02",
      "jobParameters" : { },
      "jobParametersString" : "",
      "restartable" : false,
      "abandonable" : true,
      "stoppable" : false,
      "defined" : false,
      "timeZone" : "UTC",
      "status" : "STOPPING",
      "_links" : {
        "self" : {
          "href" : "http://localhost:9393/jobs/thinexecutions/1"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/jobs/thinexecutions?page=0&size=10"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}42.12.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' 格式筛选开始日期的结果 | 
| 
 | 筛选结果,最高可达 | 
示例请求
$ 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: 1605
{
  "_embedded" : {
    "jobExecutionThinResourceList" : [ {
      "executionId" : 2,
      "stepExecutionCount" : 0,
      "jobId" : 2,
      "taskExecutionId" : 2,
      "instanceId" : 2,
      "name" : "DOCJOB1",
      "startDate" : "2023-05-04",
      "startTime" : "23:18:28",
      "startDateTime" : "2023-05-04T23:18:28.426+0000",
      "duration" : "00:00:02",
      "jobParameters" : { },
      "jobParametersString" : "",
      "restartable" : true,
      "abandonable" : true,
      "stoppable" : false,
      "defined" : true,
      "timeZone" : "UTC",
      "status" : "STOPPED",
      "_links" : {
        "self" : {
          "href" : "http://localhost:9393/jobs/thinexecutions/2"
        }
      }
    }, {
      "executionId" : 1,
      "stepExecutionCount" : 0,
      "jobId" : 1,
      "taskExecutionId" : 1,
      "instanceId" : 1,
      "name" : "DOCJOB",
      "startDate" : "2023-05-04",
      "startTime" : "23:18:28",
      "startDateTime" : "2023-05-04T23:18:28.398+0000",
      "duration" : "00:00:02",
      "jobParameters" : { },
      "jobParametersString" : "",
      "restartable" : false,
      "abandonable" : true,
      "stoppable" : false,
      "defined" : false,
      "timeZone" : "UTC",
      "status" : "STOPPING",
      "_links" : {
        "self" : {
          "href" : "http://localhost:9393/jobs/thinexecutions/1"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/jobs/thinexecutions?page=0&size=10"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 0
  }
}42.12.6. 列出指定作业实例 ID 的所有作业执行,不包括步骤执行
作业执行端点允许您列出所有作业执行。 以下主题提供了更多详细信息:
请求结构
GET /jobs/thinexecutions?page=0&size=10&jobInstanceId=1 HTTP/1.1
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 从零开始的页码(可选) | 
| 
 | 请求的页面大小(可选) | 
| 
 | 按作业实例 ID 筛选结果 | 
示例请求
$ curl 'http://localhost:9393/jobs/thinexecutions?page=0&size=10&jobInstanceId=1' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 943
{
  "_embedded" : {
    "jobExecutionThinResourceList" : [ {
      "executionId" : 1,
      "stepExecutionCount" : 0,
      "jobId" : 1,
      "taskExecutionId" : 1,
      "instanceId" : 1,
      "name" : "DOCJOB",
      "startDate" : "2023-05-04",
      "startTime" : "23:18:28",
      "startDateTime" : "2023-05-04T23:18:28.398+0000",
      "duration" : "00:00:02",
      "jobParameters" : { },
      "jobParametersString" : "",
      "restartable" : false,
      "abandonable" : true,
      "stoppable" : false,
      "defined" : false,
      "timeZone" : "UTC",
      "status" : "STOPPING",
      "_links" : {
        "self" : {
          "href" : "http://localhost:9393/jobs/thinexecutions/1"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/jobs/thinexecutions?page=0&size=10"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}42.12.7. 列出指定任务执行 ID 的所有作业执行,不包括步骤执行
作业执行端点允许您列出所有作业执行。 以下主题提供了更多详细信息:
请求结构
GET /jobs/thinexecutions?page=0&size=10&taskExecutionId=1 HTTP/1.1
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 从零开始的页码(可选) | 
| 
 | 请求的页面大小(可选) | 
| 
 | 按任务执行 ID 筛选结果 | 
示例请求
$ curl 'http://localhost:9393/jobs/thinexecutions?page=0&size=10&taskExecutionId=1' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 943
{
  "_embedded" : {
    "jobExecutionThinResourceList" : [ {
      "executionId" : 1,
      "stepExecutionCount" : 0,
      "jobId" : 1,
      "taskExecutionId" : 1,
      "instanceId" : 1,
      "name" : "DOCJOB",
      "startDate" : "2023-05-04",
      "startTime" : "23:18:28",
      "startDateTime" : "2023-05-04T23:18:28.398+0000",
      "duration" : "00:00:03",
      "jobParameters" : { },
      "jobParametersString" : "",
      "restartable" : false,
      "abandonable" : true,
      "stoppable" : false,
      "defined" : false,
      "timeZone" : "UTC",
      "status" : "STOPPING",
      "_links" : {
        "self" : {
          "href" : "http://localhost:9393/jobs/thinexecutions/1"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/jobs/thinexecutions?page=0&size=10"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}42.12.8. 作业执行详细信息
作业执行端点允许您获取有关作业执行的详细信息。 以下主题提供了更多详细信息:
请求结构
GET /jobs/executions/2 HTTP/1.1
Host: localhost:9393/作业/执行/{id}
| 参数 | 描述 | 
|---|---|
| 
 | 现有作业执行的 ID(必需) | 
请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/jobs/executions/2' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1188
{
  "executionId" : 2,
  "stepExecutionCount" : 0,
  "jobId" : 2,
  "taskExecutionId" : 2,
  "name" : "DOCJOB1",
  "startDate" : "2023-05-04",
  "startTime" : "23:18:28",
  "duration" : "00:00:03",
  "jobExecution" : {
    "id" : 2,
    "version" : 1,
    "jobParameters" : {
      "parameters" : { }
    },
    "jobInstance" : {
      "id" : 2,
      "jobName" : "DOCJOB1",
      "version" : 0
    },
    "stepExecutions" : [ ],
    "status" : "STOPPED",
    "startTime" : "2023-05-04T23:18:28.426+0000",
    "createTime" : "2023-05-04T23:18:28.418+0000",
    "endTime" : null,
    "lastUpdated" : "2023-05-04T23:18:28.426+0000",
    "exitStatus" : {
      "exitCode" : "UNKNOWN",
      "exitDescription" : ""
    },
    "executionContext" : {
      "dirty" : false,
      "empty" : true,
      "values" : [ ]
    },
    "failureExceptions" : [ ],
    "jobConfigurationName" : null,
    "allFailureExceptions" : [ ]
  },
  "jobParameters" : { },
  "jobParametersString" : "",
  "restartable" : true,
  "abandonable" : true,
  "stoppable" : false,
  "defined" : true,
  "timeZone" : "UTC",
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/jobs/executions/2"
    }
  }
}42.12.9. 停止作业执行
作业执行端点允许您停止作业执行。 以下主题提供了更多详细信息:
请求结构
PUT /jobs/executions/1 HTTP/1.1
Accept: application/json
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
stop=true/作业/执行/{id}
| 参数 | 描述 | 
|---|---|
| 
 | 现有作业执行的 ID(必需) | 
请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 如果设置为 true,则发送停止作业的信号 | 
请求示例
$ curl 'http://localhost:9393/jobs/executions/1' -i -X PUT \
    -H 'Accept: application/json' \
    -d 'stop=true'响应结构
HTTP/1.1 200 OK42.12.10. 重新启动作业执行
作业执行端点允许您重新启动作业执行。 以下主题提供了更多详细信息:
请求结构
PUT /jobs/executions/2 HTTP/1.1
Accept: application/json
Host: localhost:9393
Content-Type: application/x-www-form-urlencoded
restart=true/作业/执行/{id}
| 参数 | 描述 | 
|---|---|
| 
 | 现有作业执行的 ID(必需) | 
请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 如果设置为 true,则发送信号以重新启动作业 | 
示例请求
$ curl 'http://localhost:9393/jobs/executions/2' -i -X PUT \
    -H 'Accept: application/json' \
    -d 'restart=true'响应结构
HTTP/1.1 200 OK42.13. 作业实例
作业实例端点提供有关向 Spring Cloud Data Flow 服务器注册的作业实例的信息。 以下主题提供了更多详细信息:
42.13.1. 列出所有作业实例
作业实例端点允许您列出所有作业实例。 以下主题提供了更多详细信息:
请求结构
GET /jobs/instances?name=DOCJOB&page=0&size=10 HTTP/1.1
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 从零开始的页码(可选) | 
| 
 | 请求的页面大小(可选) | 
| 
 | 与作业实例关联的名称 | 
示例请求
$ curl 'http://localhost:9393/jobs/instances?name=DOCJOB&page=0&size=10' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1845
{
  "_embedded" : {
    "jobInstanceResourceList" : [ {
      "jobName" : "DOCJOB",
      "jobInstanceId" : 1,
      "jobExecutions" : [ {
        "executionId" : 1,
        "stepExecutionCount" : 0,
        "jobId" : 1,
        "taskExecutionId" : 1,
        "name" : "DOCJOB",
        "startDate" : "2023-05-04",
        "startTime" : "23:16:26",
        "duration" : "00:00:00",
        "jobExecution" : {
          "id" : 1,
          "version" : 1,
          "jobParameters" : {
            "parameters" : { }
          },
          "jobInstance" : {
            "id" : 1,
            "jobName" : "DOCJOB",
            "version" : 0
          },
          "stepExecutions" : [ ],
          "status" : "STARTED",
          "startTime" : "2023-05-04T23:16:26.633+0000",
          "createTime" : "2023-05-04T23:16:26.618+0000",
          "endTime" : null,
          "lastUpdated" : "2023-05-04T23:16:26.633+0000",
          "exitStatus" : {
            "exitCode" : "UNKNOWN",
            "exitDescription" : ""
          },
          "executionContext" : {
            "dirty" : false,
            "empty" : true,
            "values" : [ ]
          },
          "failureExceptions" : [ ],
          "jobConfigurationName" : null,
          "allFailureExceptions" : [ ]
        },
        "jobParameters" : { },
        "jobParametersString" : "",
        "restartable" : false,
        "abandonable" : false,
        "stoppable" : true,
        "defined" : false,
        "timeZone" : "UTC"
      } ],
      "_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
  }
}42.13.2. 作业实例详细信息
作业实例端点允许您列出所有作业实例。 以下主题提供了更多详细信息:
请求结构
GET /jobs/instances/1 HTTP/1.1
Host: localhost:9393/jobs/instances/{id}
| 参数 | 描述 | 
|---|---|
| 
 | 现有作业实例的 ID(必填) | 
请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/jobs/instances/1' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1354
{
  "jobName" : "DOCJOB",
  "jobInstanceId" : 1,
  "jobExecutions" : [ {
    "executionId" : 1,
    "stepExecutionCount" : 0,
    "jobId" : 1,
    "taskExecutionId" : 1,
    "name" : "DOCJOB",
    "startDate" : "2023-05-04",
    "startTime" : "23:16:26",
    "duration" : "00:00:00",
    "jobExecution" : {
      "id" : 1,
      "version" : 1,
      "jobParameters" : {
        "parameters" : { }
      },
      "jobInstance" : {
        "id" : 1,
        "jobName" : "DOCJOB",
        "version" : 0
      },
      "stepExecutions" : [ ],
      "status" : "STARTED",
      "startTime" : "2023-05-04T23:16:26.633+0000",
      "createTime" : "2023-05-04T23:16:26.618+0000",
      "endTime" : null,
      "lastUpdated" : "2023-05-04T23:16:26.633+0000",
      "exitStatus" : {
        "exitCode" : "UNKNOWN",
        "exitDescription" : ""
      },
      "executionContext" : {
        "dirty" : false,
        "empty" : true,
        "values" : [ ]
      },
      "failureExceptions" : [ ],
      "jobConfigurationName" : null,
      "allFailureExceptions" : [ ]
    },
    "jobParameters" : { },
    "jobParametersString" : "",
    "restartable" : false,
    "abandonable" : false,
    "stoppable" : true,
    "defined" : false,
    "timeZone" : "UTC"
  } ],
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/jobs/instances/1"
    }
  }
}42.14. 作业步骤执行
作业步骤执行端点提供有关向 Spring Cloud Data Flow 服务器注册的作业步骤执行的信息。 以下主题提供了更多详细信息:
42.14.1. 列出作业执行的所有步骤执行
作业步骤执行端点允许您列出所有作业步骤执行。 以下主题提供了更多详细信息:
请求结构
GET /jobs/executions/1/steps?page=0&size=10 HTTP/1.1
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 从零开始的页码(可选) | 
| 
 | 请求的页面大小(可选) | 
示例请求
$ curl 'http://localhost:9393/jobs/executions/1/steps?page=0&size=10' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1623
{
  "_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" : "2023-05-04T23:18:56.781+0000",
        "endTime" : null,
        "lastUpdated" : "2023-05-04T23:18:56.782+0000",
        "executionContext" : {
          "dirty" : false,
          "empty" : true,
          "values" : [ ]
        },
        "exitStatus" : {
          "exitCode" : "EXECUTING",
          "exitDescription" : ""
        },
        "terminateOnly" : false,
        "filterCount" : 0,
        "failureExceptions" : [ ],
        "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",
        "jobParameters" : {
          "parameters" : { }
        },
        "jobExecutionId" : 1
      },
      "stepType" : "",
      "_links" : {
        "self" : {
          "href" : "http://localhost:9393/jobs/executions/1/steps/1"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/jobs/executions/1/steps?page=0&size=10"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 1,
    "totalPages" : 1,
    "number" : 0
  }
}42.14.2. 作业步骤执行详细信息
作业步骤执行端点允许您获取有关作业步骤执行的详细信息。 以下主题提供了更多详细信息:
请求结构
GET /jobs/executions/1/steps/1 HTTP/1.1
Host: localhost:9393/作业/执行/{id}/步骤/{stepid}
| 参数 | 描述 | 
|---|---|
| 
 | 现有作业执行的 ID(必需) | 
| 
 | 特定作业执行的现有步骤执行的 ID(必需) | 
请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/jobs/executions/1/steps/1' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 1173
{
  "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" : "2023-05-04T23:18:56.781+0000",
    "endTime" : null,
    "lastUpdated" : "2023-05-04T23:18:56.782+0000",
    "executionContext" : {
      "dirty" : false,
      "empty" : true,
      "values" : [ ]
    },
    "exitStatus" : {
      "exitCode" : "EXECUTING",
      "exitDescription" : ""
    },
    "terminateOnly" : false,
    "filterCount" : 0,
    "failureExceptions" : [ ],
    "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",
    "jobParameters" : {
      "parameters" : { }
    },
    "jobExecutionId" : 1
  },
  "stepType" : "",
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/jobs/executions/1/steps/1"
    }
  }
}42.14.3. 作业步骤执行进度
通过作业步骤执行终结点,您可以获取有关作业步骤执行进度的详细信息。以下主题提供了更多详细信息:
请求结构
GET /jobs/executions/1/steps/1/progress HTTP/1.1
Host: localhost:9393/jobs/executions/{id}/steps/{stepid}/progress
| 参数 | 描述 | 
|---|---|
| 
 | 现有作业执行的 ID(必需) | 
| 
 | 特定作业执行的现有步骤执行的 ID(必需) | 
请求参数
此终结点没有请求参数。
示例请求
$ curl 'http://localhost:9393/jobs/executions/1/steps/1/progress' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/hal+json
Content-Length: 2676
{
  "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" : "2023-05-04T23:18:56.781+0000",
    "endTime" : null,
    "lastUpdated" : "2023-05-04T23:18:56.782+0000",
    "executionContext" : {
      "dirty" : false,
      "empty" : true,
      "values" : [ ]
    },
    "exitStatus" : {
      "exitCode" : "EXECUTING",
      "exitDescription" : ""
    },
    "terminateOnly" : false,
    "filterCount" : 0,
    "failureExceptions" : [ ],
    "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",
    "jobParameters" : {
      "parameters" : { }
    },
    "jobExecutionId" : 1
  },
  "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" : 152.0,
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/jobs/executions/1/steps/1"
    }
  }
}| stepExecutionHistory 中的以下字段已弃用,并将在将来的版本中删除:rollbackCount、readCount、writeCount、filterCount、readSkipCount、writeSkipCount、processSkipCount、durationPerRead。 | 
42.15. 有关应用程序的运行时信息
您可以获取有关运行系统已知的应用程序的信息,无论是全局还是单独。 以下主题提供了更多详细信息:
42.15.1. 在运行时列出所有应用程序
要检索有关所有应用程序的所有实例的信息,请查询/runtime/apps使用GET.
以下主题提供了更多详细信息:
请求结构
GET /runtime/apps HTTP/1.1
Accept: application/json
Host: localhost:9393示例请求
$ curl 'http://localhost:9393/runtime/apps' -i -X GET \
    -H 'Accept: application/json'响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 209
{
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/runtime/apps?page=0&size=20"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 0,
    "totalPages" : 0,
    "number" : 0
  }
}42.15.2. 查询单个应用程序的所有实例
要检索有关特定应用的所有实例的信息,请查询/runtime/apps/<appId>/instances使用GET.
以下主题提供了更多详细信息:
请求结构
GET /runtime/apps HTTP/1.1
Accept: application/json
Host: localhost:9393示例请求
$ curl 'http://localhost:9393/runtime/apps' -i -X GET \
    -H 'Accept: application/json'响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 209
{
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/runtime/apps?page=0&size=20"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 0,
    "totalPages" : 0,
    "number" : 0
  }
}42.15.3. 查询单个应用程序的单个实例
要检索有关特定应用程序的特定实例的信息,请查询/runtime/apps/<appId>/instances/<instanceId>使用GET.
以下主题提供了更多详细信息:
请求结构
GET /runtime/apps HTTP/1.1
Accept: application/json
Host: localhost:9393示例请求
$ curl 'http://localhost:9393/runtime/apps' -i -X GET \
    -H 'Accept: application/json'响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 209
{
  "_links" : {
    "self" : {
      "href" : "http://localhost:9393/runtime/apps?page=0&size=20"
    }
  },
  "page" : {
    "size" : 20,
    "totalElements" : 0,
    "totalPages" : 0,
    "number" : 0
  }
}42.16. 流日志
您可以获取整个流或流中特定应用程序的流的应用程序日志。 以下主题提供了更多详细信息:
42.16.1. 按流名称获取应用程序的日志
使用 HTTPGET方法与/streams/logs/<streamName>REST 端点,以检索给定流名称的所有应用程序日志。
以下主题提供了更多详细信息:
请求结构
GET /streams/logs/ticktock HTTP/1.1
Host: localhost:9393示例请求
$ curl 'http://localhost:9393/streams/logs/ticktock' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 93
{
  "logs" : {
    "ticktock-time-v1" : "Logs-time",
    "ticktock-log-v1" : "Logs-log"
  }
}42.16.2. 从流中获取特定应用程序的日志
要从流中检索特定应用程序的日志,请查询/streams/logs/<streamName>/<appName>端点使用GETHTTP 方法。
以下主题提供了更多详细信息:
请求结构
GET /streams/logs/ticktock/ticktock-log-v1 HTTP/1.1
Host: localhost:9393示例请求
$ curl 'http://localhost:9393/streams/logs/ticktock/ticktock-log-v1' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 55
{
  "logs" : {
    "ticktock-log-v1" : "Logs-log"
  }
}42.17. 任务日志
您可以获取特定任务执行的任务执行日志。
以下主题提供了更多详细信息:
42.17.1. 获取任务执行日志
要检索任务执行的日志,请查询/tasks/logs/<ExternalTaskExecutionId>端点,使用 HTTPGET方法。。
以下主题提供了更多详细信息:
请求结构
GET /tasks/logs/taskA-cac9337d-03e8-4156-b7af-f29ee3a94816?platformName=default HTTP/1.1
Host: localhost:9393请求参数
| 参数 | 描述 | 
|---|---|
| 
 | 启动任务的平台的名称。 | 
示例请求
$ curl 'http://localhost:9393/tasks/logs/taskA-cac9337d-03e8-4156-b7af-f29ee3a94816?platformName=default' -i -X GET响应结构
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 10041
"stdout:\n2023-05-04 23:19:03.586  INFO 4069 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@ba8a1dc: startup date [Thu May 04 23:19:03 UTC 2023]; root of context hierarchy\n2023-05-04 23:19:03.982  INFO 4069 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'configurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$f850fffa] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n\n  .   ____          _            __ _ _\n /\\\\ / ___'_ __ _ _(_)_ __  __ _ \\ \\ \\ \\\n( ( )\\___ | '_ | '_| | '_ \\/ _` | \\ \\ \\ \\\n \\\\/  ___)| |_)| | | | | || (_| |  ) ) ) )\n  '  |____| .__|_| |_|_| |_\\__, | / / / /\n =========|_|==============|___/=/_/_/_/\n :: Spring Boot ::        (v1.5.2.RELEASE)\n\n2023-05-04 23:19:04.205  INFO 4069 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at: http://localhost:8888\n2023-05-04 23:19:04.287  WARN 4069 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Could not locate PropertySource: I/O error on GET request for \"http://localhost:8888/timestamp-task/default\": Connection refused (Connection refused); nested exception is java.net.ConnectException: Connection refused (Connection refused)\n2023-05-04 23:19:04.289  INFO 4069 --- [           main] o.s.c.t.a.t.TimestampTaskApplication     : No active profile set, falling back to default profiles: default\n2023-05-04 23:19:04.305  INFO 4069 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@63d4e2ba: startup date [Thu May 04 23:19:04 UTC 2023]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@ba8a1dc\n2023-05-04 23:19:04.827  INFO 4069 --- [           main] o.s.cloud.context.scope.GenericScope     : BeanFactory id=1e36064f-ccbe-3d2f-9196-128427cc78a0\n2023-05-04 23:19:04.912  INFO 4069 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$f850fffa] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n2023-05-04 23:19:04.921  INFO 4069 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$dc36fcfd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)\n2023-05-04 23:19:05.539  INFO 4069 --- [           main] o.s.jdbc.datasource.init.ScriptUtils     : Executing SQL script from class path resource [org/springframework/cloud/task/schema-h2.sql]\n2023-05-04 23:19:05.572  INFO 4069 --- [           main] o.s.jdbc.datasource.init.ScriptUtils     : Executed SQL script from class path resource [org/springframework/cloud/task/schema-h2.sql] in 32 ms.\n2023-05-04 23:19:05.961  INFO 4069 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup\n2023-05-04 23:19:05.973  INFO 4069 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Bean with name 'configurationPropertiesRebinder' has been autodetected for JMX exposure\n2023-05-04 23:19:05.974  INFO 4069 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Bean with name 'environmentManager' has been autodetected for JMX exposure\n2023-05-04 23:19:05.978  INFO 4069 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Bean with name 'refreshScope' has been autodetected for JMX exposure\n2023-05-04 23:19:05.980  INFO 4069 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Located managed bean 'environmentManager': registering with JMX server as MBean [taskA-cac9337d-03e8-4156-b7af-f29ee3a94816:name=environmentManager,type=EnvironmentManager]\n2023-05-04 23:19:05.995  INFO 4069 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Located managed bean 'refreshScope': registering with JMX server as MBean [taskA-cac9337d-03e8-4156-b7af-f29ee3a94816:name=refreshScope,type=RefreshScope]\n2023-05-04 23:19:06.007  INFO 4069 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Located managed bean 'configurationPropertiesRebinder': registering with JMX server as MBean [taskA-cac9337d-03e8-4156-b7af-f29ee3a94816:name=configurationPropertiesRebinder,context=63d4e2ba,type=ConfigurationPropertiesRebinder]\n2023-05-04 23:19:06.112  INFO 4069 --- [           main] o.s.c.support.DefaultLifecycleProcessor  : Starting beans in phase 0\n2023-05-04 23:19:06.129  WARN 4069 --- [           main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Failed to start bean 'taskLifecycleListener'; nested exception is java.lang.IllegalArgumentException: Invalid TaskExecution, ID 1 not found\n2023-05-04 23:19:06.129  INFO 4069 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans on shutdown\n2023-05-04 23:19:06.130  INFO 4069 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans\n2023-05-04 23:19:06.131 ERROR 4069 --- [           main] o.s.c.t.listener.TaskLifecycleListener   : An event to end a task has been received for a task that has not yet started.\n2023-05-04 23:19:06.141  INFO 4069 --- [           main] utoConfigurationReportLoggingInitializer : \n\nError starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.\n2023-05-04 23:19:06.150 ERROR 4069 --- [           main] o.s.boot.SpringApplication               : Application startup failed\n\norg.springframework.context.ApplicationContextException: Failed to start bean 'taskLifecycleListener'; nested exception is java.lang.IllegalArgumentException: Invalid TaskExecution, ID 1 not found\n\tat org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178) ~[spring-context-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]\n\tat org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:50) ~[spring-context-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]\n\tat org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:348) ~[spring-context-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]\n\tat org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:151) ~[spring-context-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]\n\tat org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:114) ~[spring-context-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]\n\tat org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:879) ~[spring-context-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]\n\tat org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545) ~[spring-context-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]\n\tat org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737) [spring-boot-1.5.2.RELEASE.jar!/:1.5.2.RELEASE]\n\tat org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370) [spring-boot-1.5.2.RELEASE.jar!/:1.5.2.RELEASE]\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-1.5.2.RELEASE.jar!/:1.5.2.RELEASE]\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:1162) [spring-boot-1.5.2.RELEASE.jar!/:1.5.2.RELEASE]\n\tat org.springframework.boot.SpringApplication.run(SpringApplication.java:1151) [spring-boot-1.5.2.RELEASE.jar!/:1.5.2.RELEASE]\n\tat org.springframework.cloud.task.app.timestamp.TimestampTaskApplication.main(TimestampTaskApplication.java:29) [classes!/:1.2.0.RELEASE]\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_372]\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_372]\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_372]\n\tat java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_372]\n\tat org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [timestamp-task-1.2.0.RELEASE.jar:1.2.0.RELEASE]\n\tat org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [timestamp-task-1.2.0.RELEASE.jar:1.2.0.RELEASE]\n\tat org.springframework.boot.loader.Launcher.launch(Launcher.java:50) [timestamp-task-1.2.0.RELEASE.jar:1.2.0.RELEASE]\n\tat org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) [timestamp-task-1.2.0.RELEASE.jar:1.2.0.RELEASE]\nCaused by: java.lang.IllegalArgumentException: Invalid TaskExecution, ID 1 not found\n\tat org.springframework.util.Assert.notNull(Assert.java:134) ~[spring-core-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]\n\tat org.springframework.cloud.task.listener.TaskLifecycleListener.doTaskStart(TaskLifecycleListener.java:200) ~[spring-cloud-task-core-1.2.0.RELEASE.jar!/:1.2.0.RELEASE]\n\tat org.springframework.cloud.task.listener.TaskLifecycleListener.start(TaskLifecycleListener.java:282) ~[spring-cloud-task-core-1.2.0.RELEASE.jar!/:1.2.0.RELEASE]\n\tat org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:175) ~[spring-context-4.3.7.RELEASE.jar!/:4.3.7.RELEASE]\n\t... 20 common frames omitted\n\n"43. 开放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 可在/v3/api-docs和/swagger-ui/index.htmlURI(例如localhost:9393/v3/api-docs)。
| Swagger UI 最初为空白。在“探索”栏中输入“/v3/api-docs/”,然后单击“探索”。 | 
| 如果您在 Swagger UI 中试用 API 并收到与 "No property string found for type"尝试将 pageable 参数替换为或删除其{ }"sort"属性。 | 
有大量可用的 OpenAPI 和 Swagger UI 属性可用于配置该功能。