1.什么是webhooks?

  • Webhooks是一个API概念,是微服务API的使用范式之一,也被成为反向API,即:前端不主动发送请求,完全由后端主动向前端推送

  • 举个常用例子,比如你在微信发了一条动态,后端会将这条消息推送给你所有的好友的客户端(朋友圈),这就是 Webhooks 的典型场景。

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

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

2.主要用途

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

3.常见Webhooks使用场景

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

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

4.使用说明

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

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

原文出处:https://www.cnblogs.com/zhihuifan10/p/11114816.html

Webhooks应用概述相关推荐

  1. 精读《REST,GraphQL,Webhooks gRPC 如何选型》

    1 引言 每当项目进入联调阶段,或者提前约定接口时,前后端就会聚在一起热火朝天的讨论起来.可能 99% 的场景都在约定 Http 接口,讨论 URL 是什么,入参是什么,出参是什么. 有的团队前后端接 ...

  2. webhooks_在本地开发时如何测试Webhooks

    webhooks by Stefan Doorn 斯蒂芬·多恩(Stefan Doorn) 在本地开发时如何测试Webhooks (How to test Webhooks when you're d ...

  3. 物联网标准和协议概述(postscapes)

    物联网标准和协议概述 本篇文章是物联网设备和应用程序中涉及协议的概述.帮助澄清IoT层技术栈和不同的协议对比. 物联网涵盖了众多行业和用例,从单一受限设备扩展到嵌入式技术和实时连接的云的大规模跨平台部 ...

  4. 物联网设备和应用程序涉及协议的概述

    物联网设备和应用程序涉及协议的概述. 帮助澄清IoT层技术栈和头对头比较. 物联网涵盖了广泛的行业和用例,从单一受限制的设备扩展到大量跨平台部署嵌入式技术和实时连接的云系统. 将它们捆绑在一起是许多传 ...

  5. Java 多线程概述

    多线程技术概述 1.线程与进程 进程:内存中运行的应用程序,每个进程都拥有一个独立的内存空间. 线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换.并发执行,一个进程最少有一个线程, ...

  6. 【SpringMVC】概述

    概述: SpringMVC:是基于spring的一个框架, 实际上就是spring的一个模块, 专门是做web开发的.                       理解是servlet的一个升级 Sp ...

  7. 梯度下降优化算法概述

    本文原文是 An overview of gradient descent optimization algorithms,同时作者也在 arXiv 上发了一篇同样内容的 论文. 本文结合了两者来翻译 ...

  8. Redis概述和基础

    Redis 1.NoSQL NoSQL = Not Only SQL(不仅仅是SQL) 泛指非关系型数据库的,随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!尤其是超大规模的 ...

  9. OpenCL™(开放计算语言)概述

    OpenCL™(开放计算语言)概述 异构系统并行编程的开准 OpenCL™(开放计算语言)是一种开放的.免版税的标准,用于对超级计算机.云服务器.个人计算机.移动设备和嵌入式平台中的,各种加速器进行跨 ...

最新文章

  1. 搭建 LNMP 环境
  2. GMM高斯混合模型学习笔记(EM算法求解)
  3. 查看php 相关信息
  4. 问题反馈模板_使用此模板可获得更好,更有价值的UX反馈
  5. PHP秒杀截流原理,节流阀和去抖动的基本实现方法介绍
  6. 从零开始学Pytorch(三)之多层感知机的实现
  7. Codeforces 343D Water Tree(DFS序 + 线段树)
  8. 为什么玩家会流失:如何理解次日留存率
  9. 关于MPMoviePlayerController类播放视频时,外放没有声音的问题(ios)
  10. 孙鑫VC学习笔记:第十六讲 (一) 利用事件对象实现线程间的同步
  11. 选择JSF不选Struts的十大理由
  12. resnet101网络结构
  13. 如何恢复删除的文件?wps文件恢复,4种方法教你找回来
  14. 斯托克斯定理,de Rham上同调习题
  15. Excel操作:使用Excel制作甘特图
  16. 如何以最快速度将Vue接入在线客服系统?
  17. laravel:如何快速实现数据填充,创建模拟数据(使用seeder)
  18. 什么是敏捷项目管理?
  19. 骨传导蓝牙耳机哪个好,五款热门骨传导蓝牙耳机推荐
  20. 微信小程序开发学习小结之tabBar组件

热门文章

  1. oldwain随便写
  2. VBA -[知识点]: 字典
  3. 灼口综合征的症状这么多呢呀?!
  4. office2019卸载组件_office2019软件安装教程
  5. c语言自动输入一位数字,c语言:要求输入一个四位整数,然后将各位数字按英文输出...
  6. 红牛农场java代码_Java面向对象程序设计实验指导模板代码(171页)-原创力文档...
  7. 好看的登陆界面java_简单又美观的登录界面
  8. C语言经典例题100道
  9. E1使用Padavan固件网口做WAN的设置
  10. 工业相机及镜头的相关概念与相机及镜头的选型