最近在项目上接触到webhook,顺带牵扯出Rest, gRPC, GraphQL这几个概念,但没搞清楚其中的差别在哪,于是去网上找相关介绍,却又发现网上的介绍都太过术语化,所以想能不能自己用通俗的语言来说清楚这几个概念的差别。
今天在点外卖的时候突发灵感,这几个概念都是跟服务获取相关,似乎可以用外卖服务来解释这几个概念的差别。
首先是Rest,大家可能都听过Restful API,可能是最普遍的资源获取方式,这就类似我们最常见的点外卖的方式,你通过外卖app,选择你要的外卖,可以是蛋炒饭,兰州拉面,黄焖鸡,下单付款,就可以等着外卖送到家门口了。
第二个概念gRPC,相对Rest,是一种轻量级,效率更高的实现方式,特别是在资源受限的场景,比如你没有手机,但恰好楼下就是外卖店,于是你直接靠喊,告诉老板你要一份蛋炒饭,做好后老板再直接给你送上楼。
至于GraphQL,可以说是Rest的升级版,通过GraphQL,你不但可以指定想要的资源,还能指定资源的组织方式,就像现在外卖店升级了,你不但可以告诉老板你要一份蛋炒饭,还可以告诉老板多加个蛋、不加葱花、不加香菜等个性化需求。
最后一个概念webhook,这个就厉害了,前面几个概念都是你每次点外卖,都告诉老板你要什么,老板再根据你的需求提供相应的外卖,到了webhook,这个关系反过来了,你只需要先跟老板约定你每天都要吃什么,然后约定每天几点给你送餐,老板到了时间就会把外卖准备好,准时的送到你家。
以上是个人对这几个概念的理解,欢迎大家拍砖。
参考链接:https://nordicapis.com/when-to-use-what-rest-graphql-webhooks-grpc/