当前位置: 首页 > news >正文

API协议设计的十种技术

文章目录

  • 前言
  • 1.REST
  • 2. GraphQL
  • 3. gRPC (google Remote Procedure Calls)
  • 4.Webhook
  • 5. 服务端的事件发送——SSE(Servver - Sent Events )
  • 6. EDI(Electronic Data Interchange)
  • 7. 面向API 的事件驱动设计
  • 8. WebSocket
  • 9.简单对象访问协议(SOAP)
  • 10. Message Queuing Telemetry Transport (MQTT )


前言

在这个数字时代,我们的日常生活中充斥着各种应用程序和系统之间的交互。无论是社交媒体、在线购物还是智能家居设备,它们都需要通过API(应用程序接口)来实现数据的传输和通信。然而,这些看似简单的操作背后隐藏着复杂的协议。

API协议包含了一组规则和标准,用于定义不同系统之间如何进行通信和共享数据。它们充当了不同应用程序之间的桥梁,使它们能够相互理解和交流。API协议的设计和实现需要考虑到安全性、可靠性和效率等因素,以确保数据的准确传输和系统的正常运行。

为了深入了解API的世界,这里对10个常见的API协议设计进行了梳理。


1.REST

REST 是现代 web 开发中最流行的 API 开发技术。它为数据传输提供了一种无状态的体系结构。客户端请求包含满足请求所需的所有详细信息,而服务器不保留客户端的状态。

在这里插入图片描述

在RESTful API中,每个资源都可以通过唯一的URL进行标识和访问。客户端可以通过发送HTTP请求来执行各种操作,如获取资源、创建新资源、更新现有资源或删除资源。RESTful API的设计遵循一些基本原则,如资源的表达、客户端-服务器架构、无状态性和缓存等。REST API 支持本地 HTTP 缓存头,并使用 HTTP 方法(POST、 GET、 PUT、 PATCH 和 DELETE)来操作数据。任何人都可以很容易地开始使用 REST,很简单,而且学习曲线平滑。它还具有良好的可读性和可维护性,因为其使用标准的HTTP方法和状态码来表示不同的操作结果。

然而,RESTful API也有一些限制。由于其无状态性,每次请求都需要包含所有必要的信息,这可能会导致数据传输量较大。随着应用程序的扩展,端点的数量急剧增加,更新数据库模式或数据结构也并不容易。此外,对于复杂的业务逻辑,RESTful API可能不够灵活,需要额外的架构和设计来满足需求。
如果没有任何特定的需求,REST 是最好的选择。例如,如果是开发新手,那么使用 REST 是完美的匹配,因为它的学习曲线比较浅。此外,它还有一个很大的生态系统,可以很容易地找到任何问题的解决方案。另外,在处理许多请求和有限的带宽时,最好使用 REST。在这种情况下,可以使用

相关文章:

  • OpenHarmony教程指南—Ability的启动模式
  • C# 使用DocX生成word文档
  • 使用Python改变图片像素
  • 使用Python制作自己的wheel文件
  • [赛码网、牛客刷题、ACM模式] python读取输入
  • MyBatis操作数据库(SQL注入)
  • Autosar教程-Mcal教程-GPT配置教程
  • LayerNorm的图是不是画错了
  • 先缓存第二集抖音接入 ,最近加班猛,就分享简单的知识,如何使用:关于使用replace的用法正则表达式
  • Redis场景总结
  • Java算法之动态规划
  • 集合拆分Lists.partition的使用
  • Redis--线程模型详解
  • [uni-app ] createAnimation锚点旋转 及 二次失效问题处理
  • Mysql按照月份分组统计数据,当月无数据则填充0
  • “大数据应用场景”之隔壁老王(连载四)
  • Apache Spark Streaming 使用实例
  • avalon2.2的VM生成过程
  • Java 23种设计模式 之单例模式 7种实现方式
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • SpriteKit 技巧之添加背景图片
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 分布式任务队列Celery
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 前端之React实战:创建跨平台的项目架构
  • 前端之Sass/Scss实战笔记
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 小程序 setData 学问多
  • 学习使用ExpressJS 4.0中的新Router
  • 一份游戏开发学习路线
  • #laravel 通过手动安装依赖PHPExcel#
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (26)4.7 字符函数和字符串函数
  • (3)选择元素——(17)练习(Exercises)
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (篇九)MySQL常用内置函数
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (四)库存超卖案例实战——优化redis分布式锁
  • (五)Python 垃圾回收机制
  • (循环依赖问题)学习spring的第九天
  • (转)linux 命令大全
  • (转载)Google Chrome调试JS
  • ./和../以及/和~之间的区别
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .bat批处理(一):@echo off
  • .htaccess 强制https 单独排除某个目录
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .Net的DataSet直接与SQL2005交互
  • .net反混淆脱壳工具de4dot的使用
  • .NET连接MongoDB数据库实例教程