深入理解 Webhook 与 API 的区别

作为人类,我们希望技术能帮助我们更快捷、更便捷地与更多人交流。但要实现这一目标,我们首先需要找到一种方法让技术能够彼此对话。

这就是 API 和 Webhook 的用武之地。

API 和 Webhook 都能够促进两个应用之间的数据同步和传递。然而,它们的实现方式不同,因此用途略有差异。

为了解除此间的混淆,让我们看看 Webhook 和 API 的区别,以及各自最适用的场景。

Webhook 与 API:简明解释

简单来说,当你请求它时,API 会执行相应操作,而 Webhook 会在满足特定条件或发生特定事件时自动执行操作。让我们深入探讨一下。

API 可以用于从服务器与 example.com 通讯,通过这种通讯,API 可以列出、创建、编辑或删除项。不过,API 需要得到明确的指示。

而另一方面,Webhook 是 example.com 向服务器发出的自动调用。这些调用会在 example.com 上的特定事件发生时触发。例如,如果一个新用户在 example.com 上注册,自动调用可以配置为请求服务器发送一封欢迎邮件。

什么是 Webhook?

有时,Webhook 被称为反向 API,但这不完全正确。它们不是反向运行的,而是不需要你的请求,一旦有新数据,数据就会被发送。

要设置 Webhook,您只需向提供服务的网站注册一个 URL。该 URL 将接受数据,并可以激活一个工作流程,使数据变得有用。在大多数情况下,你甚至可以指定服务提供商将在何种情况下向你传送数据。

Webhook 和 API 在请求方式上有所不同。例如,无论是否有数据更新响应,API 都会发出数据请求。而 Webhook 只会在你连接的外部系统有数据更新时通过 HTTP POST 接收调用。

什么时候使用 Webhook

Webhook 通常用于执行较小的请求和任务,但在某些情况下,Webhook 比完整的 API 更合适。

一个常见场景是当你的应用或平台需要实时更新,但你不想浪费资源。这种情况下,Webhook 会非常有用。

另一个情况是在 API 本身性能不佳,或者根本没有 API 时。你可以创建一个替代解决方案,以获取你的应用运行所需的数据。

然而,需要注意的是,由于 Webhook 不会定期请求数据,只在有新数据时才会这样做,所以如果系统因某种原因离线,你可能永远不能了解到新的更新。而且,你对数据流的全面控制较少,因为你必须接受给定更新时提供的全部数据量。

实际中的 Webhook 示例

许多应用和工具依赖 Webhook,但主要用于较小的数据请求,而不是用于构建其服务的核心。尽管如此,仍有不少 Webhook 被有效使用的例子。

  1. ButterCMS 的 Webhook 在任何人发布新博客文章或更新 CMS 内容时触发。
  2. Zapier 基本上就是一个巨大 Webhook。你将某些应用连接起来,每当一个应用中发生事件时,它会触发另一个应用中的动作。
  3. Stripe 的 Webhook会在订阅付款未能通过时自动向客户发送电子邮件。
  4. 我们可以在 Apifox 来设置 Webhook,支持发送通知事件到 HTTP Server,通过指定 URL 地址接收 POST 请求,可以将事件消息发送到 HTTP Server。

图片.png

什么是 API?

API 代表应用程序编程接口。API 是一种通过通用通信方法让应用程序和平台相互连接的方式。要使 API 工作,需要有一个数据请求,然后是对该请求的响应。数据通常以 JSON 格式传递。

API 往往是许多现有软件和工具赖以存在的框架。例如,创建 Twitter 趋势报告的应用可以依赖 API 不断获取最新数据。大多数大型应用都集成了多个 API,以扩展其服务,如下所示。

什么时候使用 API

当你的数据不断变化时,API 非常有效。如果你需要的数据相对静态,就没有使用 API 的意义。例如,如果你是一个需要定期更新其运输和追踪数据的电商店铺,那么你会不断发出请求。

每次轮询 API 时,你都会获得新数据。如果你的数据未持续更新,则不能保证另一端会有数据准备好。当这种情况发生时,你只是浪费资源。不过,如果你坚持使用 API,可以设置调用限制,限制在特定时间段内的调用次数。有些应用从一开始就限制你调用的次数,以减少其资源使用。

实际中的 API 示例

正如前面提到的,API 无处不在。根据 ProgrammableWeb 的最新结果,目前已有超过 17,000 个现有 API。以下是一些依赖 API 的工具:

  1. 作为 API 优先的 CMS,ButterCMS 拥有自己的 REST API,具有可预测的资源导向 URL,并使用 HTTP 响应代码来指示 API 错误——这些功能在这个 React Universal Blog 构建中得到了展示。
  2. Uber 也依赖于 Google Maps API、Twilio API、Braintree API 和 SendGrid API 来支持其应用。
  3. Slack 有一个 API 使你能够将他们的消息功能集成到第三方应用中。

Webhook 和 API 的不同圈子

这不是一个谁更好的问题,因为没有一种方法在所有情况下都优于另一种。问题在于你的应用目的和所需的数据类型。

举个例子,你可以把 API 想象成你发送给朋友的短信,以获取他们举办的活动信息。你提问,他们回应。

而对于 Webhook,你告诉朋友一旦他们在组织新的活动时就给你发短信,让你知道。你提出初始请求,而他们在有新信息时不断发送更新。

最终,大多数应用都会同时使用 API 和 Webhook 来创建一个能够在合适的时候传递合适类型数据的系统。

  • 源于:https://medium.com/hackernoon/webhook-vs-api-whats-the-difference-8d41e6661652

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/776032.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL视图教程(03):列出视图

文章目录 MySQL 列出视图语法使用场景示例结论 MySQL 列出视图 MySQL 是一种流行的关系型数据库管理系统,用于创建和管理数据库中的表、视图等对象。在 MySQL 中,视图是一种虚拟表,可以从一个或多个实际表中检索数据,并根据特定的…

springboot整合Camunda实现业务

1.bean实现 业务 1.画流程图 系统任务,实现方式 2.定义bean package com.jmj.camunda7test.process.config;import lombok.extern.slf4j.Slf4j; import org.camunda.bpm.engine.TaskService; import org.camunda.bpm.engine.delegate.JavaDelegate; import org.…

【一】m2芯片的mac中安装ubuntu24虚拟机集群

文章目录 1. 虚拟机配置2. 复制虚拟机2.1 修改主机名2.2 修改网络 1. 虚拟机配置 在官方网站下载好ubuntu24-arm版镜像开始安装,安装使用VMWare Fusion的社区免费授权版,使用一台m2芯片的mac电脑作为物理机平台。 为什么选择ubuntu24?因为centOS7目前已…

php简单商城小程序系统源码

🛍️【简单商城小程序】🛍️ 🚀一键开启,商城搭建新体验🚀 你还在为繁琐的商城搭建流程头疼吗?现在,有了简单商城系统小程序,一切变得轻松又快捷!无需复杂的编程知识&a…

CTF常用sql注入(三)无列名注入

0x06 无列名 适用于无法正确的查出结果,比如把information_schema给过滤了 join 联合 select * from users;select 1,2,3 union select * from users;列名被替换成了1,2,3, 我们再利用子查询和别名查 select 2 from (select 1,2,3 union select * f…

为什么使用StartAI文生图进行AI绘画?

什么是文生图? 文生图是AIGC中一种先进的图像生成技术,它能够根据用户输入的文字描述,智能地生成相应的图像。无论是抽象的概念,还是具体的物体,文生图都能够以惊人的准确性和艺术性呈现出来。 StartAI文生图如何进行…

南方航空阿里v2滑块验证码逆向分析思路学习

目录 一、声明! 二、介绍 三、请求流程分析: 1.拿验证码 2.提交第一次设备信息 3.提交第二次设备信息 4.提交验证 ​编辑 四、接口响应数据分析: 1.拿验证码 2.提交第一次设备信息 3.提交第二次设备信息 4.提…

暑期大数据人工智能学习-企业项目试岗实训开营

暑期企业项目-试岗实训活动全面开启啦 跟张良均老师学大数据人工智能 不仅可以提供实习证明,有需要话也可以提供实习鉴定报告 √54个热门案例拆解 √40项目实战课程 √27个项目可选 √4个项目方向

8种方案解决移动端1px边框的问题

🧑‍💻 写在开头 点赞 收藏 学会🤣🤣🤣 8 种方案解决移动端1px边框的问题 造成边框变粗的原因 css中的1px并不等于移动设备的1px,这是由不同手机由不同像素密度,在window对象中有一个devic…

Aigtek功率放大器的参数及应用是什么

功率放大器是电子电路中的重要组成部分,用于将输入信号的功率增加到更高的水平。它们在各种电子设备和应用中发挥着关键作用。下面Aigtek安泰电子将介绍功率放大器的主要参数以及它们在不同领域的应用。 1.功率放大器的基本参数 增益 功率放大器的增益是指输出信号的…

C++基于协同过滤算法的超市外卖小程序-计算机毕业设计源码62482

摘要 随着社会生活节奏加快和消费习惯的变化,外卖服务成为人们日常生活中不可或缺的一部分。超市外卖作为新兴业态备受关注,然而传统外卖平台在推荐精准度和用户体验方面存在挑战。 本研究旨在基于协同过滤算法,结合C语言和MySQL数据库&#…

View->裁剪框View的绘制,手势处理

XML文件 <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android…

无人机对地面运动目标定位---获取目标的移动方向和速度

目录 一、引子 我们利用单目无人机通过等时间间隔拍照的形式对地面某移动目标进行定位&#xff0c;当前&#xff0c;我们已经获得了每张相片上该目标的三维坐标&#xff0c;并且知道该无人机在飞行过程中拍照的时间间隔&#xff0c;那么我们就可以通过一定的计算&#xff0c;得…

溶酶体靶向嵌合体制备方法和技术

网盘 https://pan.baidu.com/s/1dhCCryatp71j7yXTDdrrTw?pwdynr4 具有聚集诱导发光性质的比率型溶酶体pH探针及应用.pdf 内体-溶酶体转运靶向嵌合体降解剂及其制备方法与应用.pdf 可降解PDGFR-β的蛋白降解靶向嵌合体及其制备方法和应用.pdf 溶酶体膜包覆纳米颗粒的制备方法.…

华夏女中师生深入同仁堂,感悟中医药文化之精髓

华夏女中师生深入同仁堂&#xff0c;感悟中医药文化之精髓 2024年7月4日下午&#xff0c;北京师范大学实验华夏女子中学15名学生在薛艳老师的带领下来到北京同仁堂中医医院&#xff0c;开展职业影随活动。何泽扬院长对她们的到来表示欢迎。随后&#xff0c;在“冯建春全国名老中…

初识布隆过滤|工作场景

作用 检查一个元素是否在一个集合中 优缺点 优点&#xff1a;空间效率和查询时间比一般算法好&#xff0c;时间复杂度低&#xff0c;O(k) k是函数的个数&#xff0c;节省空间 缺点&#xff1a;有一定的错误几率&#xff0c;没有的也可能判定为存在&#xff0c;删除困难&…

一份适合新手的软件测试练习项目

最近&#xff0c;不少读者托我找一个能实际练手的测试项目。开始&#xff0c;我觉得这是很简单的一件事&#xff0c;但当我付诸行动时&#xff0c;却发现&#xff0c;要找到一个对新手友好的练手项目&#xff0c;着实困难。 我翻了不下一百个web网页&#xff0c;包括之前推荐练…

基于深度学习的图像背景剔除

在过去几年的机器学习领域&#xff0c;我一直想打造真正的机器学习产品。 几个月前&#xff0c;在参加了精彩的 Fast.AI 深度学习课程后&#xff0c;似乎一切皆有可能&#xff0c;我有机会&#xff1a;深度学习技术的进步使许多以前不可能实现的事情成为可能&#xff0c;而且开…

【SpringCloud】Hystrix源码解析

hystrix是一个微服务容错组件&#xff0c;提供了资源隔离、服务降级、服务熔断的功能。这一章重点分析hystrix的实现原理 1、服务降级 当服务实例所在服务器承受的压力过大或者受到网络因素影响没法及时响应请求时&#xff0c;请求会阻塞堆积&#xff0c;情况严重的话整个系统…

【算法笔记自学】入门篇(2)——算法初步

4.1排序 自己写的题解 #include <stdio.h> #include <stdlib.h>void selectSort(int A[], int n) {for(int i 0; i < n - 1; i) { // 修正索引范围int k i;for(int j i 1; j < n; j) { // 修正索引范围if(A[j] < A[k]) {k j;}}if (k ! i) { // 仅在…