浅谈6种API架构模式

news2025/1/21 20:10:43

在摸鱼刷X时,看到一张非常棒的图,是关于不同API架构的,下面学习记录一下。

在这里插入图片描述
(摘自网络)

1、gRPC

gRPC是一种高性能、跨语言、易扩展的远程过程调用(RPC)框架,可用于分布式系统之间的通信。gRPC被广泛地应用于微服务体系结构中。

在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。
在这里插入图片描述

具体参考gRPC 官方文档中文版,地址如下:http://doc.oschina.net/grpc?t=58008

2、SOAP

SOAP是一种比较古老的数据交换方式,常用于在Web服务实现中交换结构化信息的协议,以其严格的标准和基于XML的消息格式而闻名,不过现在新系统的应用已经不多了。
SOAP(Simple Object Access Protocol,即简单对象访问协议) ,是一个轻量级协议,用于在分散的分布式环境中使用XML在对等体之间交换结构化和类型化的信息。或者更简单地说:SOAP是一个基于XML的通信协议
(SOAP被认为是第二代XML协议,第一代具有代表性的技术叫XML-RPC)
SOAP使用XML数据格式,以描述调用的远程接口、参数、返回值和出错信息等等。它可以基于多种传输协议来传递消息(HTTP/HTTPS、SMTP、TCP、UDP等)。
SOAP本身没有定义任何应用程序的语义,如编程模型或特定的实现语义。相反,它通过提供一个模块化的包装模型和编码机制来表达应用程序语义的简单机制,用于在模块中编码数据。这使得SOAP可以被用于从消息系统到RPC的大量系统中。
具体参考大佬相关博客。

3、GraphQL

GraphQL是Facebook开源的一种新颖的架构模式,允许客户端只请求他们需要的数据,可以有效地减少数据的过度获取等问题。
GraphQL是一种用于API的查询语言,是由Facebook公司于2012年开发的一种新型的API架构方式。GraphQL旨在提高客户端应用程序的数据获取效率,通过定义数据的类型和结构使得API更加灵活和可扩展。与传统的API不同,GraphQL允许客户端指定需要哪些数据,从而减少了不必要的数据传输和处理,提高了API的效率和可用性。
GraphQL的核心思想是用一个API来代替多个API,通过GraphQL API,客户端可以获取所需的所有数据,而不需要调用多个API或者进行多次请求。GraphQL还支持实时数据查询和订阅,使得客户端可以实时获取数据更新,从而更好地支持实时应用程序。

具体参考官网,地址如下:https://graphql.org/

4、WebHook

WebHook是一种被动式的实时通信机制,其中应用程序向预定义的URL发送HTTP POST请求以通知并触发另一个系统中的操作。
Webhook 是一个 HTTP 请求,由源系统中的事件触发并发送到目标系统,通常带有数据负载。 Webhook 是自动化的,换句话说,当它们的事件在源系统中被触发时,它们会自动发送出去。
这为一个系统(源)在事件发生时与另一个系统(目标)“对话”(HTTP 请求)提供了一种方式,并共享有关已发生事件的信息(请求有效负载)。
在这里插入图片描述

具体参考地址:https://developer.kookapp.cn/doc/webhook

5、REST

REST是一种用于设计网络应用程序的架构风格,使用标准的HTTP方法(GET、POST、PUT、DELETE)来操作资源。
REST采用无状态的客户端-服务器模型,并使用缓存来减少网络延迟和带宽消耗。REST服务通常使用JSON或其它轻量级的数据格式来交换数据。
在当前的web应用中用来进行数据通信是非常广泛的,也非常主流。

具体参考如下:https://www.runoob.com/w3cnote/restful-architecture.html?_=1492917708

6、WebSocket

WebSocket是一种支持客户端和服务器之间通过单一、长期连接方式进行的双向实时通信协议,非常适合需要低延迟更新的应用程序,如:实时聊天、主动推送、游戏等领域。
在 WebSocket API 中,浏览器和服务器只需要要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。在当前的web应用中也是非常广泛和主流的一种通信技术方式。

具体参考:https://geek-docs.com/websocket/websocket-tutorials/websockets-overview.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

金融贷款行业实时高精准获客 ——三网运营商大数据

都说生产是第一因素,但对于任何企业来说,客户来源才是第一因素。 在大多数行业,获得客户的困难已经成为行业的挑战。如今,许多行业和企业获得客户的主要来源是在线促销和客户获取。现在几乎每个人都有一部手机。运营商可以根据移…

每日一练 | 网络工程师软考真题Day33

阅读以下说明,答复以下【问题1】和【问题2】 【说明】 某单位内部网络拓扑结构如图5-1所示,在该网络中采用RIP路由协议。 【问题1】 1.路由器第一次设置时,必须通过Console口连接运行终端仿真软件的微机进行配置,此时…

ByteV联合“智农”打造--数字孪生大棚可视化

ByteV联合“智农”打造的数字孪生大棚可视化,不仅要让粮食稳产、增产,更要对土壤肥力进行改良和提升。不仅能够实现科技引领农业发展,更在智慧农业的基础上实现一站式托管,真正做到技术提升、5G引领、建后管护的闭环管理。让高标准…

预测多基因扰动的转录结果

了解细胞对基因扰动的反应是许多生物医学应用的核心,从识别癌症中涉及的基因相互作用到开发再生医学方法。然而,可能的多基因扰动数量的组合爆炸严重限制了实验验证。在这里,作者提出了图增强的基因激活和抑制模拟器(GEARS&#x…

Linux内核4.14版本——drm框架分析(13)——DRM_IOCTL_MODE_SETPLANE(drm_mode_setplane)

目录 1. drm_mode_setplane 1.1 根据应用的plane_req->plane_id找到plane 1.2 根据应用的plane_req->fb_id找到struct drm_framebuffer 1.3 调用setplane_internal 2. setplane_internal->__setplane_internal 2.1 struct drm_framebuffer是否为空 2.2 判断此p…

Cesium对WMS地图服务进行查询并弹框展示信息

一、简介 Cesium加载WMS地图服务,然后调用接口GetFeatureInfo对要素信息进行查询 二、测试接口 {type: "Point | MultiPoint | LineString | MultiLineString | Polygon | MultiPolygon",coordinates: 数组 } 查询点 http://123.56.67.147:8080/geoserve…

智慧公厕构建城市公共厕所中枢网络,民生服务更高效,城市管理更精准

随着城市化进程的加快,城市人口的不断增长,城市公共厕所问题愈发凸显。大量的人口涌入,公厕资源的不足、管理的不到位,已经成为困扰城市发展的一大难题。然而,智慧公厕的出现,为解决这一问题提供了新的思路…

2023-09-12 LeetCode每日一题(课程表 IV)

2023-03-29每日一题 一、题目编号 1462. 课程表 IV二、题目链接 点击跳转到题目位置 三、题目描述 你总共需要上 numCourses 门课,课程编号依次为 0 到 numCourses-1 。你会得到一个数组 prerequisite ,其中 prerequisites[i] [ai, bi] 表示如果你…

这泼天的富贵,轮到数字化转型升级的企业了

数字化转型是建立在现代信息技术上,利用数字化的一切相关技术创建一种新的、或者对已有的商业模式进行重塑,以此来满足时代变化中传统的业务和市场进行变革。 数字化转型 - 派可数据BI可视化分析平台 出现这种变革是因为经过几十年的经济发展&#xff0…

怎么合并pdf文件到一起?快点过来尝试一下吧

怎么合并pdf文件到一起?pdf文件的使用越来越频繁,相信每个小伙伴都有这样的感受,不管是网上下载到的文件资料,还是合作伙伴发送过来的合作意向书,基本上都会做成pdf格式的文件,因为pdf文件具有更强的稳定性…

记账app排行榜前十名,第2个开店必备!

工欲善其事必先利其器,不管是开店做生意的老板还是个人,想要管理好自己的财富,第一步就是要坚持记账。 现在市面上的记账App有很多,我们选取了秦丝进销存、随手记、智慧记等10款比较有代表性的记账APP,其中有几个是专…

webpack自定义loader解析指定后缀名文件

案例&#xff1a; webpack自定义loader解析.chenjiang后缀名的文件 整体目录&#xff1a; chenjiangLoader.js文件代码 // 正则匹配script标签中的内容 const REG /<script>([\s\S]*)<\/script>/;module.exports function (source) {const __source source.…

拼多多手势验证

国内的好像并没有出现这种&#xff0c;一般都是在海外注册&#xff0c;或者发信才会有。各位大哥想研究的话得需要挂vpn了。 拼多多手势的轨迹其实咋说&#xff0c;难倒是不难&#xff0c;反正要你准确按这个线条描绘出不间断的数据。 它这识别的话&#xff0c;跟狗东的那个还…

运维学习之部署Grafana

sudo nohup wget https://dl.grafana.com/oss/release/grafana-10.1.1.linux-amd64.tar.gz &后台下载压缩包&#xff0c;然后按一下回车键。 ps -aux | grep 15358发现有两条记录&#xff0c;就是还在下载中。 ps -aux | grep 15358发现有一条记录&#xff0c;并且tail …

【03】Charles_ mock服务端返回数据Maplocal

目录 1.适用场景 2.操作方法 3.实现效果 1.适用场景 功能描述&#xff1a; 拦截客户端发出的接口请求&#xff0c;使用本地文档内容&#xff0c;替代服务端返回值。可以使用断点方式&#xff0c;但是断点操作容易超时。 我们可以随时更改本地文档的内容&#xff0c;来模拟各…

提醒一个xampp启动mysql创建函数存在的坑

一直以来本地搭建的项目为了方便我都是使用xampp作为mysql的管理工具&#xff0c;比较简洁可视化比较好。但是最近程序的一个报错暴露了他与mysql之间的一些问题。 使用自增序列nextval函数时&#xff0c;突然抛出来一句&#xff1a; select nextval( SEQ_REGISTER_ID) > …

代码随想录 -- day50 -- 123.买卖股票的最佳时机III 、188.买卖股票的最佳时机IV

123.买卖股票的最佳时机III 动态规划&#xff1a; 关键在于至多买卖两次&#xff0c;这意味着可以买卖一次&#xff0c;可以买卖两次&#xff0c;也可以不买卖。 一天一共就有五个状态&#xff0c; 没有操作 &#xff08;其实我们也可以不设置这个状态&#xff09;第一次持…

微信怎么定时发圈?

定时发圈的妙用 在合适的时间点发布新的产品、促销活动&#xff0c;不仅能够及时提醒用户品牌的存在&#xff0c;还可以引发用户的兴趣&#xff0c;增加品牌的曝光率。 选择最佳的发朋友圈时间段&#xff0c;以确保推广内容得到最大的曝光和关注&#xff0c;提高广告投放的效果…

推进“数智+数治”,中期科技智慧公厕驱动城市公厕更新升级发展

随着城市化的快速发展和人口的不断增加&#xff0c;公共厕所这一基础设施的更新升级成为了亟待解决的问题。过去的传统公厕往往存在着环境脏乱差、无法保证使用者的舒适度等诸多问题。而智慧公厕则能够通过互联网和物联网的技术手段&#xff0c;实现智能化的运行管理&#xff0…

微信小程序 封装请求api

封装请求地址 https.js let baseUrlhttps://XX.XXX.com/index.php/; //自己得服务器地址export {baseUrl}结构目录 封装 request.js import { baseUrl } from ./https.jsmodule.exports {request : function(url, methodType, data){let fullUrl ${baseUrl}${url}// let tok…