响应

格式化并返回结构化 API 响应

响应块为 API 调用构建结构化响应。它通常放在分支末尾,用于整理该分支的结果;它不是会停止整个工作流的“返回”语句。

响应数据模式
Select...
选择如何定义响应数据结构
响应结构
响应结构
定义响应数据的结构。在字段名中使用 <variable.name> 来引用工作流变量。
响应数据
code
{ "message": "Hello world", "userId": "<variable.userId>" }
将在 API 调用时作为响应体发送的数据。使用 <variable.name> 来引用工作流变量。
状态码
200
HTTP 状态码(默认:200)
响应头
响应头
要在响应中包含的额外 HTTP 头

通常将响应块放在分支末尾。构建响应本身不会停止工作流中其他已连接的路径。

概述

响应块使您能够:

格式化 API 响应:将工作流结果结构化为正确的 HTTP 响应

设置状态码:根据工作流结果配置适当的 HTTP 状态码

控制标头:为 API 响应添加自定义标头

转换数据:将工作流变量转换为客户端友好的响应格式

工作原理

响应块准备 API 响应:

  1. 收集数据:收集来自之前块的变量和输出
  2. 格式化响应:根据您的配置结构化数据
  3. 设置 HTTP 详细信息:应用状态码和标头
  4. 返回数据:生成 response 对象,供 API 在执行完成后用作 HTTP 响应

何时需要响应块

  • API 端点:当您的工作流通过 API 调用时,响应块会格式化返回数据
  • 测试:在测试工作流时查看格式化结果

构建响应的两种方式

构建器模式(推荐)

用于构建响应结构的可视化界面:

  • 拖放字段
  • 轻松引用工作流变量
  • 响应结构的可视化预览

编辑器模式(高级)

直接编写 JSON:

  • 完全控制响应格式
  • 支持复杂的嵌套结构
  • 使用 <variable.name> 语法表示动态值

配置选项

响应数据

响应数据是将发送回 API 调用方的主要内容。它应格式化为 JSON,并且可以包括:

  • 静态值
  • 使用 <variable.name> 语法对工作流变量的动态引用
  • 嵌套对象和数组
  • 任何有效的 JSON 结构

状态码

为响应设置 HTTP 状态码。常见状态码包括:

  • 200: 正常 - 标准成功响应
  • 201: 已创建 - 资源创建成功
  • 204: 无内容 - 成功但无响应体
  • 400: 错误请求 - 无效的请求参数
  • 401: 未授权 - 需要身份验证
  • 404: 未找到 - 资源不存在
  • 422: 无法处理的实体 - 验证错误
  • 500: 内部服务器错误 - 服务器端错误
  • 502: 错误网关 - 外部服务错误
  • 503: 服务不可用 - 服务暂时不可用

如果未指定,默认状态码为 200。

响应头

配置要包含在响应中的其他 HTTP 头。

头信息以键值对形式配置:

键值
Content-Typeapplication/json
Cache-Controlno-cache
X-API-Version1.0

示例用例

API 端点响应

场景:从搜索 API 返回结构化数据

  1. 工作流处理搜索查询并获取结果
  2. 函数块格式化并分页结果
  3. 响应块返回包含数据、分页和元数据的 JSON
  4. 客户端收到带有 200 状态的结构化响应

Webhook 确认

Response 不控制 webhook 确认响应。Webhook 端点先将工作流加入队列,并在执行完成前确认请求。Response 可以构建工作流输出,但其状态码、响应头和正文不会作为该 webhook 的确认响应返回。

错误响应处理

场景:返回适当的错误响应

  1. 条件块检测到验证失败或系统错误
  2. 路由将流程指向错误处理路径
  3. 响应块返回 400/500 状态码及错误详情
  4. 客户端收到结构化的错误信息

输入与输出

  • 响应数据:响应体的 JSON 结构

  • 状态码:HTTP 状态码(默认:200)

  • 响应头:自定义 HTTP 响应头,键值对格式

  • 模式:用于构建响应的构建器或编辑器模式

  • response.data:结构化的响应体

  • response.status:发送的 HTTP 状态码

  • response.headers:响应中包含的响应头

  • HTTP 响应:发送给 API 调用方的完整响应

  • 执行行为:不会停止工作流中其他已连接的路径

  • 放置位置:通常位于分支末尾

变量引用

使用 <variable.name> 语法,将工作流变量动态插入到响应中:

{
  "user": {
    "id": "<variable.userId>",
    "name": "<variable.userName>",
    "email": "<variable.userEmail>"
  },
  "query": "<variable.searchQuery>",
  "results": "<variable.searchResults>",
  "totalFound": "<variable.resultCount>",
  "processingTime": "<variable.executionTime>ms"
}

变量名称区分大小写,必须与工作流中的可用变量完全匹配。

最佳实践

  • 使用有意义的状态码:选择能准确反映工作流结果的适当 HTTP 状态码
  • 保持响应结构一致:在所有 API 端点中保持一致的 JSON 结构,以提升开发者体验
  • 包含相关元数据:添加时间戳和版本信息,以便调试和监控
  • 优雅地处理错误:在工作流中使用条件逻辑设置适当的错误响应,并附带描述性消息
  • 验证变量引用:在响应块执行之前,确保所有引用的变量都存在并包含预期的数据类型