---
title: "什么是 webhook?"
description: "如何设置和使用 webhook 实现 Web3 实时通知"
---

# 什么是 webhook?

Webhooks（网络钩子）使开发者能够以自动化的方式实现两个应用程序之间的实时通信。相较于持续轮询服务器获取信息，webhooks 速度更快、设置更简便，常被视为构建完整 API 服务的轻量级替代方案。

使用[Alchemy Notify API](https://www.alchemy.com/notify)，开发者可以针对地址活动、交易上链等关键事件向用户推送实时通知。

例如，借助 webhooks，构建具有[实时交易通知](https://www.alchemy.com/docs/reference/webhooks-overview)功能的去中心化应用变得可行且更加简单。使用 webhooks 能显著改善终端用户体验，无需从零开始构建耗时且复杂的通知系统。

本文将阐述什么是 webhook、它的工作原理、web3 通知的多种应用场景，以及[如何开始使用 Web3 webhooks](https://www.alchemy.com/docs/reference/notify-api-quickstart)。

## **什么是 webhook？**

**webhook 是一种自动化媒介，一个应用程序可通过它向另一个应用程序推送实时数据。** webhook 只能实现两个服务之间的单向通信，比轮询端点更快，且所需的开发工作更少。

### 什么是 webhook URL？

webhook URL 是接收发送方应用程序数据的地址。通常，webhook 用于连接两个不同的应用程序，其中一个是事件信息的“发送方”，另一个是“订阅方”。当发送方应用程序上发生某个事件时，它会将该数据发送到订阅方应用程序的 webhook URL。

#### 什么是 webhook 端点？

**webhook 端点是为发送方应用程序配置好的 webhook URL，用于向订阅方应用程序提供数据。** 为了让发送方应用程序向订阅方应用程序提供数据，它需要一个 webhook URL 来传递所请求的信息。

实际上，webhook URL 就是端点，为了使两个应用程序之间的信息流动顺畅，它需要是公开的。请求被触发、数据被解析后，订阅方应用程序即可发送带有 HTTPS 状态码的回调消息，以确认收到数据。

### 什么是 webhook API？

与持续轮询某个端点以确定状态是否发生变化不同，webhook 会在信息可用时立即提供。换言之，webhook 可以被视为“反向 API”，因为通信是由提供数据的程序发起的，而不是由请求数据的程序发起。

与传统 API 一样，webhook 也是在两个软件接口之间共享信息和功能。凭借使用 webhook 所带来的效率和实际收益，开发者将这种媒介视为一种可行的、轻量级的实时数据更新和 web3 通知解决方案。

### 什么是 webhook 集成？

webhook 集成使开发者能够通过一个唯一的 URL，实现一个应用程序与另一个应用程序之间消息的自动化。例如，开发者可以使用 Zapier——一款无需编写新代码即可实现两个或多个应用程序之间重复性任务自动化的软件工具。如果没有 Zapier，用户将不会收到通知，响应也只会是另一个响应，通常是一个 JSON 对象。

相反，[将 Zapier 与 Alchemy webhooks 集成](https://www.alchemy.com/docs/reference/webhooks-overview)可以将 Web3 数据分享到 Discord、Twitter、Slack 等大量第三方应用程序中。因此，当链上事件发生时（例如被追踪的钱包中出现新活动），Zapier 可以向指定的 Slack 频道、Discord 服务器或 Twitter 账号发送消息。实际上，像 Zapier 这样的服务改善了通信闭环，为开发者和用户都创造了更实用的产品。

将 Zapier 与 Alchemy webhooks 集成相对简单直接。事实上，开发者不需要过多的工具来完成集成，只需要[一个 Alchemy 账户](https://www.alchemy.com/)和一个 Zapier 账户。

### webhook 有什么作用？

webhook 使应用程序能够向其他应用程序共享实时数据，从而增强功能。为加快 Web3 应用开发，基于 webhook 构建的 [Alchemy Notify API](https://www.alchemy.com/docs/reference/webhooks-overview) 帮助用户在 Ethereum、Polygon、Optimism 和 Arbitrum 区块链网络上监控地址活动、交易上链等情况。

开发者可以使用 Alchemy Notify 构建四种类型通知的功能：

- 交易上链 webhook 可用于在通过你的 API key 发送的交易成功上链时通知你的应用程序。当需要在交易执行的那一刻立即告知客户时，此通知非常有用。
- 交易被丢弃 webhook 用于在通过你的 API key 发送的交易被丢弃时通知你的应用程序。
- webhook 还可用于追踪多达开发者所需数量的 Ethereum 地址上的所有 ETH、[ERC20](https://www.alchemy.com/overviews/erc20-solidity) 和 ERC721 转账事件。

webhook 可用于多种目的，用来通知用户新活动或 dApp 更新。

<VideoCta
  title="查看 Alchemy 控制台的实际使用效果"
  description="30 分钟引导演示：现场演示控制台中的每一个工具。"
  ctaHref="/resources/dashboard-demo"
  thumbnail={{
    src: "https://media.alchemy.com/alchemy-dashboard-demo-thumbnail.png",
    alt: "Alchemy Dashboard Demo",
  }}
/>


### webhook 示例

由于 Ethereum 区块链本身不支持通知功能，dApp 用户若想及时了解交易状态，只能不断刷新应用程序或查看 etherscan，没有其他方式。总体而言，这是一个耗时的过程，会打消用户再次使用该应用程序的念头。

现在，使用 Alchemy Notify 和 [Alchemy 的 pending 交易 WebSocket](https://www.alchemy.com/docs/reference/subscription-api)，用户可以[无缝追踪已上链和待处理的 ETH 交易](https://www.alchemy.com/docs/how-to-send-transactions-on-ethereum)。

上述教程的最终成果，使开发者能够在交易生命周期内的任何活动发生时，向用户发送短信通知。这带来了更优质的用户体验，能在当今竞争激烈的市场中形成优势。

### 为什么 Web3 开发者应该使用 webhook？

随着 Ethereum 等区块链网络日益普及，去中心化应用在架构上变得更加复杂。然而，Web3 生态系统的终端用户体验仍落后于 Web2。

Web3 用户体验基础设施中缺失的一环是实时通知。例如，终端用户希望知道他们的交易何时成交、交易何时失败，以及他们的拍卖出价何时被接受等等。

开发者需要意识到，除了交易焦虑和确认延迟外，对 webhook 支持不足还可能导致 dApp 用户彻底放弃使用其服务。

一直以来，由于从零构建系统所涉及的复杂性、时间成本和难免出现的错误，在[应用](https://www.alchemy.com/dapps/top/defi-dapps)中搭建实时通知一直是开发者的一个痛点。

### webhook 是如何工作的？

开发者可以将 webhook 通知类比为短信通知。打算发送消息的终端用户拥有你注册的电话号码，该号码充当接收信息的地址。随后你回复消息确认已收到，由此便建立起双向通信系统。

#### **如何调用 webhook**

调用 webhook 需要开发者通过三个步骤提供一些输入：

1. 开发者确定应接收数据的应用程序的端点或 webhook URL

2. 需要将该 webhook URL 集成到发送数据的应用程序中，以便正确解析 payload 和查询变量，不出现问题。

3. 指定 webhook 的规则，这些规则最终将触发向终端用户发送某种事件类型的通知。

如今，开发者可以[通过 Alchemy 的控制台或以编程方式设置 webhook](https://www.alchemy.com/docs/reference/notify-api-quickstart)。若想在 Web3 教程中实践调用 webhook，可参考[如何在 Telegram 中构建巨鲸提醒机器人](https://github.com/alchemyplatform/webhook-examples)。

#### **搭建 webhook 需要多长时间？**

**让 webhook 正常运行所需的时间有限。** 事实上，开发者可以查阅这篇关于[如何搭建 webhook 服务器](https://github.com/alchemyplatform/webhook-examples)的教程，其中展示了使用 node-express 配置或基于 python-django 构建的 webhook 服务器配置，通过三个简单步骤搭建 Alchemy Notify webhook 服务器。

总体而言，安装、运行并在本地测试 webhook 服务器所需精力不大，只需几条命令即可完成。

## 开始在你的 Web3 应用中使用 webhook

由于支持 Ethereum、Optimism、Arbitrum 和 Polygon 上的 Webhook，web3 开发者应评估使用 Alchemy Notify 来改善其去中心化应用用户体验的各种场景。

随着 web3 领域涌现出更多的开发者和竞争者，用户体验设计成为钱包等面向消费者的应用能够在竞争对手中脱颖而出的重要领域之一。
