Webhook vs API:它们之间有什么区别?

Webhook入门教程

英文原文:https://sendgrid.com/blog/webhook-vs-api-whats-difference/

SendGrid团队2014年5月15日•3分钟阅读

当您熟悉SendGrid的服务甚至许多Internet公司的服务时,您会发现“ API”一词的使用非常广泛。您可能还会越来越多地看到有人提到“网络挂钩”。

在SendGrid,我们有意识地在文档中对两者进行了区分,并且无论何时我们编写或谈论有关简化电子邮件的七项服务。这是我们分解Webhooks和API之间差异的方法。

什么是API?

API代表应用程序编程接口,但这实际上意味着什么?与其说是什么,不如说我更容易谈论API支持什么。API可以共享数据或功能。例如,您可以使用places API按位置或名称查找餐厅,从而提取有关每个位置的大量数据。然后,您可以将其与映射API结合使用,将其用作显示数据的接口。

向API发出请求的程序员将收到响应。例如,使用我们的Web API发送电子邮件,您将在请求中传递电子邮件内容。如果一切顺利,您将收到一封声明成功的回复。

什么是Webhook?

有时人们将webhooks称为反向API,但更准确地说,webhook可让您跳过一步。对于大多数API,在请求之后是响应。Webhook不需要任何请求,它仅在可用时发送数据。

要使用Webhook,请向提供服务的公司注册URL。该URL是应用程序中的一个位置,它将接受数据并对其进行处理。在某些情况下,您可以在希望接收数据时告知提供商情况。每当有新东西出现时,网络挂钩都会将其发送到您的URL。

“当他热身时给我打电话”

棒球经理可以真正使用网络挂钩。随着比赛的进行,他们经常想更换投手。要做到这一点,需要新投手首先在牛棚中进行预热,牛棚通常距离团队的棚户区300英尺。如果您在电视上看棒球,经常会看到经理在掩护处接电话。他正在打电话给牛棚检查新的投手。

  • “他热身了吗?”
  • “还没”

然后他挂断电话。几分钟后,他将不得不再次致电。程序员会称这种轮询为双方,这是过程密集型的。一个网络挂钩让您说,“他热身时给我打电话。”

示例Webhooks

SendGrid有两个与电子邮件流向有关的不同的Webhooks:

  1. 事件Webhook提供有关您发送的电子邮件的数据,例如退信以及收件人单击链接的时间。
  2. 入站解析Webhook允许您的应用程序在收到消息后立即接收电子邮件。

一些非SendGrid的Webhooks:

  • Twilio的webhook向您的应用程序发送文本消息和语音呼叫。
  • DropBox 刚刚宣布了 Webhooks,以提供有关Dropbox中文件更改的实时通知。
  • Metwit 在其天气API中添加了webhooks,以在特定位置发生特定类型的天气时提供通知。我的帖子启发了我,为什么每个API都需要Webhooks。

希望您能对Webhook是什么以及它与API有何不同提供一些想法。

现在是时候开始对那些Webhooks进行操作了。您可以使用webhooks进行以下四项操作,包括在本地计算机上对其进行测试或将其连接到其他服务。


其他资料

一、概述

Webhook是一个API概念,并且变得越来越流行。我们能用事件描述的事物越多,webhook的作用范围也就越大。Webhook作为一个轻量的事件处理应用,正变得越来越有用。

准确的说webhoo是一种web回调或者http的push API,是向APP或者其他应用提供实时信息的一种方式。Webhook在数据产生时立即发送数据,也就是你能实时收到数据。这一种不同于典型的API,需要用了实时性需要足够快的轮询。这无论是对生产还是对消费者都是高效的,唯一的缺点是初始建立困难。

Webhook有时也被称为反向API,因为他提供了API规则,你需要设计要使用的API。Webhook将向你的应用发起http请求,典型的是post请求,应用程序由请求驱动。

二、使用webhook

消费一个webhook是为webhook准备一个URL,用于webhook发送请求。这些通常由后台页面和或者API完成。这就意味你的应用要设置一个通过公网可以访问的URL。

多数webhook以两种数据格式发布数据:JSON或者XML,这需要解释。另一种数据格式是application/x-www-form-urlencoded or multipart/form-data。这两种方式都很容易解析,并且多数的Web应用架构都可以做这部分工作。

三、Webhook调试

调试webhook有时很复杂,因为webhook原则来说是异步的。你首先要解发他,然后等待,接着检查是否有响应。这是枯燥并且相当低效。幸运的是还有其他方法:

1、明白webhook能提供什么,使用如RequestBin之类的工具收集webhook的请求;

2、用cURL或者Postman来模拟请求;

3、用ngrok这样的工具测试你的代码;

4、用Runscope工具来查看整个流程。

四、webhook安全

因为webhook发送数据到应用上公开的URL,这就给其他人找到这个URL并且发送错误数据的机会。你可采用技术手段,防止这样的事情发生。最简单的方法是采用https(TLS connection)。除了使用https外,还可以采用以下的方法进一步提高安全性:

1、首先增加Token,这个大多数webhook都支持;

2、增加认证;

3、数据签名。

五、重要的问题

当作为webhook的消费者时有两件事需要铭记于心:

1、webhook通过请求发送数据到你的应用后,就不再关注这些数据。也就是说如果你的应用存在问题,数据会丢失。许多webhook会处理回应,如果程序出现错误会重传数据。如果你的应用处理这个请求并且依然返回一个错误,你的应用就会收到重复数据。

2、webhook会发出大量的请求,这样会造成你的应用阻塞。确保你的应用能处理这些请求。

Webhook入门教程:Webhook vs API 它们之间有什么区别?相关推荐

  1. WebHook入门教程:快速实现自动化运维,如自动热部署、自动重启服务、自动备份数据库等等

    WebHook入门教程 当我们向Github仓库(其他支持webhook的Git仓库都可以)Push代码后,可以通过webhook向特定URL发起一次Post请求,本篇文章所说的WebHook,就是运 ...

  2. TurboLinux入门教程:第六课Linux与其他操作系统的区别(转)

    TurboLinux入门教程:第六课Linux与其他操作系统的区别(转) 第六课 Linux 与其他操作系统的区别 目前运行在 PC 机上的操作系统主要有 Microsoft 的 MS-DOS . W ...

  3. leafLet入门教程兼leafLet API中文文档参考

    leafLet官方文档链接(英文原版):https://leafletjs.com/reference-1.3.4.html#marker-bindpopup 文章目录 leafLet教程 一.简单入 ...

  4. Spring Cloud入门教程 - Zuul实现API网关和请求过滤

    简介 Zuul是Spring Cloud提供的api网关和过滤组件,它提供如下功能: 认证 过滤 压力测试 Canary测试 动态路由 服务迁移 负载均衡 安全 静态请求处理 动态流量管理 在本教程中 ...

  5. html高德地图调用,插件的使用-入门-教程-地图 JS API | 高德地图API

    JS API 提供了众多的插件功能,这些功能不会主动随着 JSAPI 主体资源下发,需要引入之后才能使用这些插件的功能.这些功能包括:服务类,如:POI搜索 PlaceSearch.输入提示 Auto ...

  6. 微信小程序入门教程之四:API 使用

    目录 一.WXML 渲染语法 二.客户端数据储存 三.远程数据请求 四.组件 五.获取用户个人信息 六.多页面的跳转 七.wx.navigateTo() 本篇就介绍怎么使用 API. 所有示例的完整代 ...

  7. html高德地图api使用教程,快速上手-入门-教程-地图 JS API | 高德地图API

    按照「准备」篇完成页面准备工作之后就可以真正开始地图的开发工作了.本篇带您快速了解:地图.图层.点标记.矢量图形.信息窗体.事件的最基本使用方法. HELLO,AMAP! 简单创建一个地图只需要一行代 ...

  8. 界面控件Telerik UI for WinForms入门教程 - Telerik Upgrade API Analyzer

    针对Telerik UI for WinForms的每个版本,技术团队都尽量避免引入影响公共 API 的更改.但是有时需要进行此类更改才能使产品发展,这可能会导致应用程序升级到最新的 Telerik ...

  9. QLExpress 系列入门教程-07-QLExpress 相关 API 简介

    目录 目录 功能扩展API列表 function 相关 API Operator 相关 API 宏定义相关 API java class 的相关 API 语法树解析变量.函数的 API 语法解析校验 ...

最新文章

  1. 自动驾驶技术-环境感知篇:多传感器融合技术
  2. Vue Router 4.0 正式发布!焕然一新。
  3. 【图像去模糊】 deconvolution总结
  4. EtherCAT有什么优点?为何如此受欢迎?
  5. windows下端口占用解决方法-查看和杀死占用端口进程
  6. 征集公开课内容的建议
  7. FR-TO-FR本地交换
  8. mangos架设魔兽世界私服
  9. 4月23 nuTonomy的语义层(人行横道,人行道,交通信号灯,停车线,车道等)的扩展包
  10. MATLAB笔记7:三维曲线plot3和fplot3;三维曲面mesh和surf
  11. 如何在计算机中增加字体,电脑如何添加字体?WinXP系统新增个性字体的方法
  12. 介绍一个可以把安卓手机屏幕投影到电脑上的办法
  13. 云服务器架设大话西游2,端游[大话西游]天演册虚拟机镜像一键启动服务端+客户端+GM工具等...
  14. mysql订单迁移es_京东到家订单中心系统mysql到es的转化之路
  15. 用VS2015编译Qt5.6.0,WebEngine支持XP
  16. 博弈论_奇偶性、单向行走
  17. 这是一份激励自己的文章
  18. ble系统知识介绍(较为完整,持续更新中)
  19. 深度学习(四)-前馈神经网络
  20. 经营自己的强项(manage your best)

热门文章

  1. 如何将lnmp 0.5里面的php5.2.14升级到php 5.3.3???
  2. 腾讯QQ空间g_tk算法
  3. Magento: 自定义用户登录导向页面 Redirect Customer to Previous Page After Login
  4. 在Linux中模拟击键和鼠标移动
  5. DNS攻击原理与防范
  6. php 检测domain信息
  7. JavaScript 字符串转换数字
  8. Oracle客户端安装
  9. Leetcode算法题(C语言)5--存在重复
  10. LeetCode 535. Encode and Decode TinyURL