HTTP-REST 插件支持两种类型的 REST 主机,您可以使用这两种主机向 REST 端点发出请求 - 永久主机和临时主机。
永久主机和临时主机之间的差异
下表比较了这两种类型的 REST 主机。
永久主机 | 临时主机 |
---|---|
存储在 vRealize Orchestrator 数据库中。 | 未存储在 vRealize Orchestrator 数据库中。 临时主机是执行脚本时驻留在内存中的虚拟对象。 |
存储在 vRealize Orchestrator 清单中。 也可以在 RESTHost 类型的表单下拉菜单中查看永久主机。 |
未存储在 vRealize Orchestrator 清单中。 |
重新启动、故障切换和升级后可用。 当工作流令牌中断时,如果工作流项目将永久 REST 主机作为输入,它可以从中断的位置继续。 使用永久主机作为工作流项目的输入/输出。您可以在脚本开始时创建它们,并在不再需要时将其删除。 |
重新启动和故障切换后不可用。 当工作流中断时,无法还原承载临时 REST 主机的工作流项目输入。 对不使用的服务器发出隔离请求时,应在脚本中使用临时主机。 |
可以作为资源元素导出和导入。 | 可在不同的 vRealize Orchestrator 实例之间传输,因为它们完全通过脚本进行创建和管理。 在多个环境中工作且无需迁移永久主机时,应使用临时主机。 |
每个永久主机都有一个专用的 HTTP 客户端,用于管理对端点的请求。 | 主机重用相同的 HTTP 客户端实例。 |
永久主机和临时主机支持并行请求。
|
临时主机的注意事项
创建临时主机时,请考虑以下事项。
- 在工作流项目之间作为输入/输出传递的临时主机可能无法在所有情况下都正常工作。临时主机依赖于工作流缓存,例如,当异步工作流启动时,工作流缓存不起作用。嵌套工作流也可能会失败。
- 只有 GET 和 HEAD 请求会自动重定向。URL 重定向使用
default
策略。 - 不支持主机名验证。
- 不支持客户端证书身份验证。
故障排除
如果使用不支持并行请求的临时主机,则在升级 vRealize Orchestrator 环境或将 HTTP-REST 插件升级 到版本 2.4.1.19272162 或更高版本后,可能会遇到脚本回归问题。从 vRealize Orchestrator 8.7 开始,不支持使用不同的临时主机实例来运行请求(对于 Cookie,这些请求相互依赖)。
要避免出现此问题,请使用以下方法之一。
- 不要使用临时主机,而使用永久主机和操作。您可以通过两种方式之一创建永久 REST 主机。
- 使用添加 REST 主机工作流创建指向服务器的 REST 主机。
不要使用临时主机,而在需要向其创建请求的任何位置使用 REST 主机作为输入。
- 不要创建指向此主机的临时操作。改为创建常规操作。
- 必须停用对并行请求的支持,否则不会保留 Cookie。
如果在工作流中向此主机并行发出多个请求,则不建议使用此方法。
- 从脚本中为每个工作流运行创建一个 REST 主机,然后将其删除。
如果向服务器发出并行请求,请使用此方法。例如,如果您有两个并行请求,请创建两个不同的主机。
- 克隆工作流。
- 添加脚本元素,以创建要用于未来请求的主机。
- 将主机用作工作流的输出,并用作向该主机发出请求的所有其他脚本的输入。
- 要清除状态,请在脚本末尾添加一个元素以删除您创建的主机。
- 使用添加 REST 主机工作流创建指向服务器的 REST 主机。
- 对给定工作流中的所有相关请求使用一个临时主机,并根据需要在工作流项目之间作为输入/输出对其进行传递。
未正式支持在多个工作流元素之间传递临时主机,但预计可以正常工作。请注意,在重新启动期间,工作流状态可能会丢失,并且工作流可能无法成功恢复。
如果使用临时主机,并且希望针对 Cookie 发出相互依赖的请求,则必须在所有请求中使用相同的临时主机实例。如果请求跨多个工作流项目,请在第一个工作流项目中创建主机,然后将其作为输入传递给其余工作流项目。
- 使用当前的临时主机,但通过添加相应的头修改失败的请求以包含必需的 Cookie。
您可能必须解析先前响应中的 Cookie,并在后续请求中使用它们。