1. 什么是 Webhook?

Webhook 是一个 API 概念,是微服务 API 的使用范式之一,也被成为反向 API,即前端不主动发送请求,完全由后端推送;举个常用例子,比如你的好友发了一条朋友圈,后端将这条消息推送给所有其他好友的客户端,就是 Webhook 的典型场景。

简单来说,Webhook 就是一个接收 HTTP POST(或GET,PUT,DELETE)的URL,一个实现了 Webhook 的 API 提供商就是在当事件发生的时候会向这个配置好的 URL 发送一条信息,与请求-响应式不同,使用 Webhook 你可以实时接受到变化。

这又是一种对 客户机-服务器 模式的逆转,在传统方法中,客户端从服务器请求数据,然后服务器提供给客户端数据(客户端是在拉数据),在 Webhook 范式下,服务器更新所需提供的资源,然后自动将其作为更新发送到客户端(服务器是在推数据),客户端不是请求者,而是被动接收方;这种控制关系的反转可以用来促进许多原本需要在远程服务器上进行更复杂的请求和不断的轮询的通信请求;通过简单地接收资源而不是直接发送请求,我们可以更新远程代码库,轻松地分配资源,甚至将其集成到现有系统中来根据 API 的需要来更新端点和相关数据,唯一的缺点是初始建立困难。

2. 主要用途

更新客户端,在资源新建或者更新时提供更新的、指定的数据。

3. 常见 Webhook 使用场景

对于第三方平台验权、登陆等 没有前端界面做中转的场景,或者强安全要求的支付场景等,适合用 Webhook 做数据主动推送,说白了就是在前端无从参与,或者因为前端安全问题不适合参与时,就是 Webhook 的场景;很显然 Webhook 也不是 Http 的替代品,不过的确是一种新的前后端交互方式。

如果客户端要长期监听某个任务的状态,按照正常的 API 调用的方式去做,那么必须不停得轮训服务器来获取当前状态;使用 Webhook 则无需轮训,通过 API 可以确定是否发生了更改,如果更改了只需要等待服务器推送信息过来,然后客户端更新就可以;git webhook其实也是这方面的应用。

4. 使用说明

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

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

作者:MayerBin
链接:https://www.jianshu.com/p/9829986b4363
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

什么是 Webhook?相关推荐

  1. Rokid webhook 指南 手把手教你做个懒人

    若琪用户 Amadeus 在社区里分享过很多视频.当你进门10秒后还未关闭房门,若琪会一直报警提醒:当你走进门后将门反锁的那一刻,若琪会为你播报今天的天气.为你播放设定的轻音乐. 看到这些视频中对传感 ...

  2. 一个简单的例子学会github repository的webhook

    2019独角兽企业重金招聘Python工程师标准>>> github的webhook是个有用的功能,允许开发人员指定一个服务器的url.当开发者对github仓库施加操作,比如提交代 ...

  3. webhook简单部署

    为什么80%的码农都做不了架构师?>>>    1.webhook在Linux里是以www用户运行sheell 的,所以以www用户生成秘钥 //首先将/etc/passwd的www ...

  4. [Gitlab]使用Webhook实现前端项目自动发布

    喜闻乐见的背景故事时间--承接[prerender-spa-plugin]--微型Vue项目的静态化利器,官网上线之后,就开始琢磨,每次改动都得上服务器部署一下,是不是有点麻烦了,是时候该整个自动化部 ...

  5. webhook自定义服务器,GO 使用Webhook 实现github 自动化部署

    1. 下载github-webhook工具: wget http://img.sgfoot.com/github-webhook1.4.1.linux-amd64.tar.gz 2. 运行github ...

  6. 模型转换状态已支持Webhook!

    各位朋友知道,使用Forge转换服务得到Forge Viewer格式,在提交转换请求后,需要再有一个过程,调用另外一个服务,定期询问是否转换完毕.这种方式对于应用程序本身并不是很有效率,而且为避免任务 ...

  7. gitlab 钩子 php,gitlab通过webhook.php自动部署标签

    //git webhook 自动部署脚本 $savePath = "/home/house/wxorder/"; $requestBody = file_get_contents( ...

  8. webhook php自动部署,git利用webhook实现自动部署​

    在项目部署时,之前采用的方式是登录服务器手动去pull代码,这样做很麻烦而且在服务器管理上也存在一些风险,github和gitlab都提供有webhook功能,可以在项目发生某些变化时,系统向指定的U ...

  9. 怎么把项目推到gitlab上_Gitlab利用Webhook+jenkins实现自动构建与部署

    之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台.通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布. 这种方式每次在发版的时候,需要人工去执行j ...

  10. Webhook与Jenkins自动构建(上)

    2019独角兽企业重金招聘Python工程师标准>>> webhook是个在特定情况下通过web触发的一种api,Web 钩子用于在项目发生相关事件时通知外部服务器,gitlab的w ...

最新文章

  1. 算法篇 - 二叉搜索树
  2. groupby多个字段性能_MySQL今天我们说下分组(group by)
  3. Vue — 第五天(路由)
  4. 张正友标定法 【计算机视觉学习笔记--双目视觉几何框架系列】
  5. lee最短路算法_Lee算法的解释:迷宫运行并找到最短路径
  6. 演示数据块整理(合并)的效果
  7. Glide加载相同地址图片,不缓存
  8. matlab barh命令,matlab中的bar, barh
  9. python类型转换方法_整理了最全的Python3数据类型转换方法,可以收藏当手册用...
  10. 0基础入门VTD-实操静态道路建模4
  11. Windows11在Edge浏览器中打开IE浏览器兼容的页面,在Edge浏览器打开加载ActiveX控件的页面
  12. regulator框架
  13. Linux磁盘管理基础——分区(MBR分区格式)
  14. 关闭Excel2016的动画效果
  15. 烟雨峨眉金顶观日出第一次近距离与这座群山环保的小城接触
  16. 【mysql】获取指定日期是当年第几周,指定日期所在周的开始和结束日期
  17. 手机损坏的数据导出方法
  18. 对空间中6个点两两连线,用红黄两种颜色对这些边染色,则同色的三角形至少有几个?
  19. 开公司需要了解的相关法律
  20. 五、angularjs在进入界面前加载数据

热门文章

  1. 【商业落地篇】Gartner第四范式全球首发AutoML系列白皮书(限时免费下载)
  2. rust(52)-二叉最大堆BinaryHeap
  3. 【效率】来了!Github 终于上线收藏夹了
  4. 【机器学习】一篇白话机器学习概念
  5. 大神接棒,YOLOv4来了!
  6. Python中zip()函数的解释和可视化
  7. AI基础:矩阵求导,你一定要收藏
  8. 原创:机器学习代码练习(一、回归)
  9. AI圈最新深度学习量化算法!
  10. 搜索推荐炼丹笔记:Transformer在搜索推荐中的应用