Skip to content

HTTP

HTTP 任务用于调用通过 HTTP/HTTPS 暴露的远程服务。它支持各种 HTTP 方法、请求头、请求体内容以及其他与 API 或远程服务交互所需的配置。

HTTP 任务会评估提供的参数,相应地构建 HTTP 请求,并将其发送到指定的 URI。它通过提取有用的信息(如状态码、响应头和响应体内容)来处理响应,这些信息可以在工作流的后续任务中使用。

任务参数

为 HTTP 任务配置以下参数。

参数描述必填/可选
inputParameters.uri服务的 URI。使用 vipAddress 时可以是部分值,也可以是服务器地址。必填
inputParameters.methodHTTP 方法。支持的方法:GETHEADPOSTPUTPATCHDELETEOPTIONSTRACE必填
inputParameters.accept服务器所需的 accept 请求头。默认值为 application/json。支持的类型:application/java-archiveapplication/EDI-X12application/EDIFACTapplication/javascriptapplication/octet-streamapplication/oggapplication/pdfapplication/xhtml+xmlapplication/x-shockwave-flashapplication/jsonapplication/ld+jsonapplication/xmlapplication/zipapplication/x-www-form-urlencodedaudio/mpegaudio/x-ms-wmaaudio/vnd.rn-realaudioaudio/x-wavimage/gifimage/jpegimage/pngimage/tiffimage/vnd.microsoft.iconimage/x-iconimage/vnd.djvuimage/svg+xml您可以将其他请求头作为变量传递。可选
inputParameters.contentType请求主体的 MIME 类型。支持的值:application/jsontext/plainapplication/xmlimage/svg+xml您可以将其作为变量传递可选
inputParameters.headers要包含在请求中的 HTTP 头。支持的值:Accept—响应的预期 MIME 类型。支持的值:application/jsontext/plainapplication/xml您可以将其他请求头作为变量传递。可选
inputParameters.bodyPOST、PUT 或 PATCH 方法的请求体。可以是文本或参数,如字符串、数字、布尔值、null 或对象/数组。POST、PUT 或 PATCH 方法必填
inputParameters.encode确定 URI 是否需要编码。设置为 true 时,Conductor 将在发送 HTTP 请求之前自动对查询参数进行编码。如果 URI 已经编码,则设置为 false。默认值为 true。可选
inputParameters.asyncComplete启用时,任务完成是异步的,任务保持进行中状态,同时等待外部 API 或事件来完成任务。可选

任务配置

这是 HTTP 任务的任务配置。

{
  "name": "http",
  "taskReferenceName": "http_ref",
  "type": "HTTP",
  "inputParameters": {
    "uri": "https://www.taskflow.cn/api",
    "method": "GET",
    "accept": "application/json",
    "contentType": "application/json",
    "encode": true,
    "headers": {
      "Authorization": "Bearer ${workflow.secrets.api_key}",
      "Accept": "application/json"
    },
    "body": {
      "key": "value"
    }
  },
  "asyncComplete": true
}

任务输出

HTTP 任务将返回以下参数。

参数描述
response表示响应的 JSON 对象(如果存在)。
headers包含响应元数据的对象。
statusCode表示请求成功或失败的 HTTP 状态码。
reasonPhrase与 HTTP 状态码关联的原因短语。
body包含 API 返回数据的响应体。

在 UI 中添加 HTTP 任务

添加 HTTP 任务的步骤:

  1. 在工作流中,选择 (+) 图标并添加 HTTP 任务。
  2. 从 Method 下拉列表中选择用于发送请求的 HTTP 方法。
  3. 在 URL 中,添加 HTTP 任务要调用的 URI。
  4. 在 Accept 中,选择服务器所需的 accept 请求头。
  5. 在 Content-Type 中,选择服务器的内容类型。
  6. (可选)在 Other-headers 中,添加要随请求一起发送的任何额外 HTTP 请求头。
  7. 在 Body 中,使用 PUT、POST 或 PATCH 方法时添加请求体。
  8. (可选)启用或禁用 Encode 以指定是否需要编码 URI。
  9. (可选)如果任务要异步完成,则将 Async complete 设置为 true。

示例

以下是使用 HTTP 任务的一些示例。

发送 POST 请求

发送 HTTP POST 请求的示例工作流:

//任务定义

{
  "name": "http_post_example",
  "taskReferenceName": "post_example",
  "inputParameters": {
    "http_request": {
      "uri": "https://jsonplaceholder.typicode.com/posts/",
      "method": "POST",
      "body": {
        "title": "${get_example.output.response.body.title}",
        "userId": "${get_example.output.response.body.userId}",
        "action": "doSomething"
      }
    }
  },
  "type": "HTTP"
}

编排长时间运行的 API

探索关于编排长时间运行的 API 的完整教程。

使用 'Async Complete' 选项的示例工作流

HTTP 任务配置中的 asyncComplete 选项允许异步标记任务为已完成,为工作流执行提供灵活性。以下是启用 'asyncComplete' 的示例:

{
  "name": "async_complete_example",
  "description": "编辑或扩展此示例工作流。设置工作流名称以开始",
  "version": 1,
  "tasks": [
    {
      "name": "http_task_85tf2",
      "taskReferenceName": "http_task_85tf2_ref",
      "inputParameters": {
        "http_request": {
          "uri": "https://www.taskflow.cn/api",
          "method": "GET",
          "connectionTimeOut": 3000,
          "readTimeOut": "3000",
          "accept": "application/json",
          "contentType": "application/json"
        }
      },
      "type": "HTTP",
      "asyncComplete": true
    }
  ],
  "schemaVersion": 2,
  "ownerEmail": "john.doe@acme.com"
}

现在,让我们在开发者游乐场中运行它。

  1. 在 Workflow Name 下,选择 async_complete_example
  2. 点击 Run Workflow

执行时,HTTP 任务保持"已调度"状态而不是立即完成,允许异步完成。可以使用以下方法完成任务:

使用 API

工作流运行后,记下执行页面上工作流名称附近显示的生成的 workflowId

使用此 workflowId 和 taskRefName 通过以下 API 完成任务:

POST /api/tasks/{workflowId}/{taskRefName}/{status}

从 Conductor UI

从工作流执行页面,点击任务并手动将状态更新为"已完成"。

使用这些方法可以异步完成工作流,这在暂停工作流以进行外部干预时很有用。

飞流云