HTTP-REST 插件支持两种类型的 REST 主机,您可以使用这两种主机向 REST 端点发出请求 - 永久主机和临时主机。

永久主机和临时主机之间的差异

下表比较了这两种类型的 REST 主机。
永久主机 临时主机
存储在 vRealize Orchestrator 数据库中。 未存储在 vRealize Orchestrator 数据库中。

临时主机是执行脚本时驻留在内存中的虚拟对象。

存储在 vRealize Orchestrator 清单中。

也可以在 RESTHost 类型的表单下拉菜单中查看永久主机。

未存储在 vRealize Orchestrator 清单中。
重新启动、故障切换和升级后可用。

当工作流令牌中断时,如果工作流项目将永久 REST 主机作为输入,它可以从中断的位置继续。

使用永久主机作为工作流项目的输入/输出。您可以在脚本开始时创建它们,并在不再需要时将其删除。

重新启动和故障切换后不可用。

当工作流中断时,无法还原承载临时 REST 主机的工作流项目输入。

对不使用的服务器发出隔离请求时,应在脚本中使用临时主机。

可以作为资源元素导出和导入。 可在不同的 vRealize Orchestrator 实例之间传输,因为它们完全通过脚本进行创建和管理。

在多个环境中工作且无需迁移永久主机时,应使用临时主机。

每个永久主机都有一个专用的 HTTP 客户端,用于管理对端点的请求。 主机重用相同的 HTTP 客户端实例。
永久主机和临时主机支持并行请求。
  • 如果激活并行请求,将使用单独的上下文执行每个请求,并且不会在请求之间保留状态(包括 Cookie)。
  • 如果停用对并行请求的支持,连续请求将共享相同的 HTTP 上下文。

临时主机的注意事项

创建临时主机时,请考虑以下事项。
  • 在工作流项目之间作为输入/输出传递的临时主机可能无法在所有情况下都正常工作。临时主机依赖于工作流缓存,例如,当异步工作流启动时,工作流缓存不起作用。嵌套工作流也可能会失败。
  • 只有 GETHEAD 请求会自动重定向。URL 重定向使用 default 策略。
  • 不支持主机名验证。
  • 不支持客户端证书身份验证。

故障排除

如果使用不支持并行请求的临时主机,则在升级 vRealize Orchestrator 环境或将 HTTP-REST 插件升级 到版本 2.4.1.19272162 或更高版本后,可能会遇到脚本回归问题。从 vRealize Orchestrator 8.7 开始,不支持使用不同的临时主机实例来运行请求(对于 Cookie,这些请求相互依赖)。

要避免出现此问题,请使用以下方法之一。
  1. 不要使用临时主机,而使用永久主机和操作。您可以通过两种方式之一创建永久 REST 主机。
    1. 使用添加 REST 主机工作流创建指向服务器的 REST 主机。
      不要使用临时主机,而在需要向其创建请求的任何位置使用 REST 主机作为输入。
      • 不要创建指向此主机的临时操作。改为创建常规操作。
      • 必须停用对并行请求的支持,否则不会保留 Cookie。

      如果在工作流中向此主机并行发出多个请求,则不建议使用此方法。

    2. 从脚本中为每个工作流运行创建一个 REST 主机,然后将其删除。
      如果向服务器发出并行请求,请使用此方法。例如,如果您有两个并行请求,请创建两个不同的主机。
      1. 克隆工作流。
      2. 添加脚本元素,以创建要用于未来请求的主机。
      3. 将主机用作工作流的输出,并用作向该主机发出请求的所有其他脚本的输入。
      4. 要清除状态,请在脚本末尾添加一个元素以删除您创建的主机。
  2. 对给定工作流中的所有相关请求使用一个临时主机,并根据需要在工作流项目之间作为输入/输出对其进行传递。

    未正式支持在多个工作流元素之间传递临时主机,但预计可以正常工作。请注意,在重新启动期间,工作流状态可能会丢失,并且工作流可能无法成功恢复。

    如果使用临时主机,并且希望针对 Cookie 发出相互依赖的请求,则必须在所有请求中使用相同的临时主机实例。如果请求跨多个工作流项目,请在第一个工作流项目中创建主机,然后将其作为输入传递给其余工作流项目。

  3. 使用当前的临时主机,但通过添加相应的头修改失败的请求以包含必需的 Cookie。

    您可能必须解析先前响应中的 Cookie,并在后续请求中使用它们。