Webhook 是一项技术,其灵感来自于独立企业系统之间近乎实时的连接需求。 虽然 ETL 流程、数据导出和导入或企业服务总线已经存在多年,但 Webhook 代表了这些系统之间的新集成模式,并越来越多地在各种类型的软件中实施。
Webhook 可以简单地定义为在某个操作发生(触发器)后在系统之间发送的消息(有效负载),无论该操作或事件是在数据管理系统还是在应用程序中发生的。 这些有效负载消息的大小、内容或范围可能有所不同,但通常存在源系统和目标系统的模式,其中在源中配置了 Webhook,用于将信息发送到目标。 Webhook 不是按基于时间的计划运行,而是通常是实时触发的,例如当特定事件发生时,包括编辑表单、移除文件、创建用户等。
在技术层面上,Webhook 通常被定义为对 HTTPS 端点的 POST 请求,该端点可以匿名访问或通过简单的令牌或密钥进行保护,内容正文采用 JSON 格式。 POST 的内容与刚刚发生的事件相关(请参阅下面的示例),目标接收消息并根据专用逻辑对其进行处理。 这些消息通常是 JSON 文档(按照约定,但不是定义),并且可以包含狭窄或广泛的信息集,具体取决于它们的设计方式。
Webhook 通常被认为是一种有效但并非万无一失的集成方法。 由于它们与目标终端节点松散耦合,因此无法保证来自源系统的消息将到达目标。 网络中断、端点故障或消息正文结构错误等问题都可能导致该消息发送失败。 这意味着 Webhook 并不完全可靠,尽管与任何其他 REST API 或端点没有显著区别,它们可能会面临相同的可靠性挑战。
Webhook 通常是出于特定原因作为一项功能添加到系统或应用程序中,而不是作为所有请求或接口的基本功能或进程。 它们通常用于将信息或基于事件的消息导入其他专注于通知或自动化的系统,例如 Power Automate 或 Zapier。 Webhook 请求也可以发送到自定义 Web 服务或端点,或者发送到 ArcGIS 地理处理工具。
有关 Webhook 的其他建议以及用于接收和处理 Webhook 的示例代码,请参阅 Esri 的 webhook-samples Github 资料档案库。
Webhook 功能在 ArcGIS 系统的多个不同部分中提供,可用于将工作流绑定在一起、集成到其他系统以及触发对 Webhook 中包含的数据进行操作的相关事件。 一些 ArcGIS 应用程序或系统在本机使用 webhook,包括:
ArcGIS Online 中的 webhook 在要素服务的上下文中提供,可配置为根据不同的条件(例如新要素或编辑)发送 webhook,并发送到多个目标,例如,不同的端点可能会接收新要素而不是编辑内容。 这篇博客文章分享了一些如何创建和使用 Webhook 的示例。 webhook 的正文将包含有关已编辑要素集的信息,以供远程系统向 ArcGIS Online 发起反向查询并获取实际的事务更改。
ArcGIS Enterprise 中的 Webhook 还支持基于要素服务的 Webhook,其方式与 ArcGIS Online 非常相似,但也支持其他几种模式。 这些基于要素服务的 webhook 是从 ArcGIS Server Administrator Directory 配置的。 有关如何配置基于要素服务的 webhook 的详细信息,请参阅创建 webhook。
地理处理服务 webhook 可配置为在完成地理处理服务作业时运行,通知远程系统作业已完成,并包括作业结果(成功、失败或已取消)以及远程系统可用于获取状态的 URL。 有关地理处理服务 webhook 的内容说明的更多详细信息,请参阅 ArcGIS Enterprise 文档。
在本博客文章中,举例介绍了如何结合使用要素服务和地理处理服务 webhook,以使用工作管理系统自动执行市民报告工作流。
ArcGIS Enterprise 还支持组织 webhook,这些 webhook 由 ArcGIS Enterprise 部署中的用户、群组和内容的更改触发。 这些 Webhook 可以定义为在特定事件类型(例如创建新群组)或许多事件类型(允许远程系统独立解析和处理事件)上运行。
ArcGIS Survey123 和 ArcGIS Field Maps 都支持 webhook 功能。
Field Maps 提供了一个 Make.com 模块,可简化使用 ArcGIS Online 中托管要素服务的 Field Maps 工作流的集成。 有关详细信息,请参阅自动化 Field Maps。
在 Survey123 中,Make.com 和 ArcGIS Power Automate 都存在类似的工作流,但也可以手动配置 webhook,以将其从外业应用程序(采集数据时)或 Survey123 Web 表单(通过浏览器提交数据时)发送到目标。 有关详细信息,请参阅在 Survey123 网站中配置 webhook。
为了支持与其他系统和工作流的集成,ArcGIS Workflow Manager 提供了一种简单的方法来创建接收 webhook 的端点,通常用于根据外部信息创建作业。 有关详细信息,请参阅使用 Webhook 创建作业。
在设计 Webhook 将在解决方案或工作流程中发挥重要作用的系统或集成时,必须考虑 Webhook 成功所需的一些功能性和非功能性要求。 这些注意事项可确保系统用户和利益相关方正确了解 Webhook 在系统中的作用以及存在的任何限制。