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

API类型和集成规范指南

在我们的常见应用中,往往包含着大量服务于各种数据交换的API类型、以及各种常见的API架构与协议。下面,我将从集成的角度和您讨论,在准备将多个服务相互集成时,使用不同类型、架构和协议的API意味着什么?我们可以使用哪些工具,又应该注意什么呢?

API的类型和集成的复杂性

通常,我们有四种常见的API类型:公共、私有、伙伴和复合。其中:

公共API

公共API有时也被称为开放或外部API。顾名思义,任何人都可以公开的方式,在没有限制、或限制相对较少的情况下使用它。此类API通常是方便第三方与本公司开发的Web应用进行通信的一种方式。一些常见的、为大多数中小企业提供服务的公共API有:PandaDoc、BigCommerce、DocuSign、NetSuite等等。

如何与公共API集成

与公共API集成相对比较容易。不同的公司都会为您提供必要的API文档,其中描述了各种端点、验证与授权其API的使用和调用方法等。事实上,大多数企业的集成平台都是围绕着公共API的概念来构建的。他们提供的所谓集成连接器,在本质上都是各个Web应用的API抽象层。不过,它们在工作机制上的复杂性和范围,则取决于API的设计与文档说明。

总的来说,与公共API集成相关的主要策略有两种:要么像iPaaS那样使用第三方软件;要么自行开发。在您选择后者时,请准备好为数据映射(Data Mapping)而设计的相应策略。虽然许多应用程序会使用相同的模式,来命名前端的公共字段,但这些字段在后端可能有着截然不同的标签。适当的策略应该能够保证追溯性、准确性和相对快速的项目实施,以及对于一些容易避免的错误予以避免。

值得一提的是,如果您正在为自己的项目寻找一些可公开访问的API,GitHub上就有一个较为详尽的​​公共API列表​​。它涵括了诸如天气预报等Web应用所需要用到的、完整的API密钥和OAuth授权。

私有API

作为公共API的对立面,私有API仅适用于单个公司。企业开发人员经常使用它们来实现Web应用之间在某种程度上的数据交换、提供对企业数据库和其他内部共享服务的访问权限、以及与其他内部API通信、或为公司员工构建内部应用。

事实上,越来越多的公司认识到使用自己的API的价值。据此,他们可以节省更多的时间和资源,提高应用的敏捷性和灵活性,并有助于降低整体运营成本。

如何与私有API集成

由于私有API通常驻留在具有高度安全性的环境中,因此与它们的集成需要通过非常严格的防火墙或VPN服务,来发起调用(当然首先需要能够允许外部到访问)。这意味着,如果您想知道本公司的集成中间件是否确实有用,就应该去检查它是否具有某种安全机制/层,去访问本地系统和Web应用。

同样值得注意的是,那些对于公共API的成功至关重要的某些方面,却可能在私有API中显得无关紧要。例如,由于已被假定为受到了公司现有安全策略的保护,因此安全性机制在私有API并不重要。同时,由于开发人员经常在文档中使用内部或技术性的名称,因此版本控制不一定会被包含在设计中。

无论您准备采用手动编码,还是某个集成式中间件,新加入团队的成员或其他部门,在集成私有API时都会面临一些挑战。因此,如果您正在负责设计私有API的话,我建议您像设计公共API那样,去准备好API的各项最佳实践和检查。

伙伴API

伙伴API属于内部API的一个类别,但这些API通常在业务伙伴和B2B客户之间共享,而不是在某个组织内自己使用。此类API的一个常见用例是,在供应链集成或销售点的集成中,连接两个内部业务软件的应用程序。在这种情况下,API往往充当的是经典的EDI(电子数据交换,Electronic Data Interchange)集成的替代方案。

伙伴API通常具有更加强大的授权、身份验证和安全功能。它们能够允许外部各方去访问某些敏感数据。例如,伙伴CRM或ERP应用的客户数据,或者是医疗机构患者医疗数据等。

如何与伙伴API集成

由于伙伴API不是公开可用的,因此您可能无法找到允许即时“连接”的集成方案。如果您打算集成此类伙伴API的话,就需要提供良好的手动编码、或者去寻找支持自助服务、以及自定义连接器的集成中间件的帮助。

有时您可能需要将伙伴API与基于EDI的Web应用相连接,那么您就需要进行诸如从EDIFACT到JSON的各种数据格式的转换。当然,一个良好的企业集成平台,往往能够支持此类功能。此外,您也可以使用各种专用的解析器,例如:用于UN/EDIFACT文档的​​Javascript流解析器​​。

复合API

我个人觉得复合API的使用场景最广泛。例如在购物车中创建订单时,就需要对多个端点进行多次API调用,其中包括:创建新的客户、创建新的订单、向该订单添加新的商品、展示分类商品等。一个复合API往往可以在一次性调用中,完成所有这些工作。这无疑加快了多任务处理的能力和效率。例如,下面是Salesforce的​​复合REST API​​的属性文件:

{
"compositeRequest" : [{"method" : "POST","url" : "/services/data/v52.0/sobjects/Account","referenceId" : "refAccount","body" : { "Name" : "Sample Account" }},{"method" : "POST","url" : "/services/data/v52.0/sobjects/Contact","referenceId" : "refContact","body" : { "LastName" : "Sample Contact","AccountId" : "@{refAccount.id}"}}]
}

在上述文件中,其API在一次性调用中,最多可以有25个所谓的子请求。

复合API的另一个实用场景是,从多个服务中提取信息,以完成微服务架构模式中的单个任务。不过,复合API也不一定需要创建全新的API。在许多情况下,您可以通过在一个序列中包装多个调用或请求,来扩充现有API的设计。

如何与复合API集成

在集成方面,复合API与常规公共API并没有太大的区别。事实上,如果您的集成平台方案已经具有被用于REST或SOAP的通用连接器的话,您可以轻松地使用它来连接到复合API处。

与不同的API架构和协议集成

下面,让我们简要地讨论一下,在使用具有不同架构和/或协议的API时,该如何定义可接受的数据类型和命令。当然,在大多数时候,您可能会用到REST和SOAP等API。其中,REST是一种架构风格,而SOAP是一种协议。它们之间有着各种相似之处,可以通过HTTP和XML进行通信,因此彼此的集成非常容易。

当然,两者之间也有着显著的差异。例如,

  • 为了在服务器上公开Web应用业务逻辑的特定部分,SOAP会使用服务接口,而REST则使用URI。
  • REST API支持包括:纯文本、XML、JSON和CSV在内的多种数据格式,而SOAP仅支持XML。
  • REST通常被认为比SOAP更轻量级、而且消耗的资源也更少。

就两者的集成而言,我们需要在这两种API之间进行某种“翻译”。当选择手动集成这些API时,您可以使用Postman等工具来自动执行此类操作。例如,您可以调用一个Web应用程序的SOAP API,并将返回的XML解析为您需要的数据。之后,您可以将该XML转换为诸如JSON格式,并将这些数据推送到另一个Web应用程序的REST API处。可见,当您的公司部署了可以默认处理REST和基于SOAP的Web应用与服务之间的数据转换集成API之后,它将使您的工作变得更加轻松,应用的效率大幅提升。

用工具

成功的前端工程师很会善用工具,这些年低代码概念开始流行,像国外的 Mendix,国内的 JNPF,这种新型的开发方式,图形化的拖拉拽配置界面,并兼容了自定义的组件、代码扩展,确实在 B 端后台管理类网站建设中很大程度上的提升了效率。

开源地址:JNPF体验中心

代码量少,系统的稳定性和易调整性都会得到一定的保障。基于代码生成器,可一站式开发多端使用 Web、Android、IOS、微信小程序。代码自动生成后可以下载本地,进行二次开发,有效提高整体开发效率。同时,支持多种云环境部署、本地部署给予最大的安全保障,可以快速搭建适合自身应用场景的产品。

相关文章:

API类型和集成规范指南

在我们的常见应用中,往往包含着大量服务于各种数据交换的API类型、以及各种常见的API架构与协议。下面,我将从集成的角度和您讨论,在准备将多个服务相互集成时,使用不同类型、架构和协议的API意味着什么?我们可以使用哪些工具&am…...

[ES]mac安装es、kibana、ik分词器

一、安装es和kibana 1、创建一个网络,网络内的框架(eskibana)互联 docker network create es-net 2、下载es和kibana docker pull elasticsearch:7.12.1 docker pull kibana:7.12.1 3、运行docker命令部署单点eskibana(用来操作es) doc…...

YOLO目标检测——视觉显著性检测MSRA1000数据集下载分享

MSRA1000数据集是一个常用的视觉显著性检测数据集,它包含了1000张图像和对应的显著性标注。在以下几个应用场景中,MSRA1000数据集可以发挥重要作用:图像编辑和后期处理、图像检索和分类、视觉注意力模型、自动驾驶和智能交通等等 数据集点击下…...

【基于空间纹理的残差网络无监督Pansharpening】

Unsupervised Pansharpening method Using Residual Network with Spatial Texture Attention (基于空间纹理的残差网络无监督泛锐化方法) 近年来,深度学习已经成为最受欢迎的泛锐化工具之一,许多相关方法已经被研究并反映出良好…...

2023年信息安全管理与评估(赛项)评分标准第三阶段夺旗挑战CTF(网络安全渗透)

全国职业院校技能大赛 高职组 信息安全管理与评估 (赛项) 评分标准 第三阶段 夺旗挑战CTF(网络安全渗透) 竞赛项目赛题 本文件为信息安全管理与评估项目竞赛-第三阶段赛题,内容包括:夺旗挑战CTF&#xff08…...

开启智能时代:深度解析智能文档分析技术的前沿与应用

开启智能时代:深度解析智能文档分析技术的前沿与应用 本章主要介绍文档分析技术的理论知识,包括背景介绍、算法分类和对应思路。通过本文学习,你可以掌握:1. 版面分析的分类和典型思想 2. 表格识别的分类和典型思想 3. 信息提取的…...

高级时钟项目

高级时钟项目 笔者来介绍一下一个简单的时钟项目,主要功能就是显示时间 1、背景 2、数码管版本(第一版) 3、OLED屏幕版本(第二版) 3.1、Boot 3.2、app 3.3、上位机 界面一:时间天气显示 界面二 &…...

跨境海淘攻略:如何实现自己批量养买家账号海淘

近年来,随着互联网的发展,网购已经成为人们日常生活中不可或缺的一部分。不仅在国内购买商品,在跨境电商行业越来越成熟,很多的消费者开始选择购买国外平台商品,价格相比国内专柜来说会更为优惠。因此,海淘…...

【lua】在微软 windows 系统上安装 lua

https://sourceforge.net/projects/luabinaries...

系统学习Linux-PXE无人值守装机(附改密)

目录 pxe实现系统自动安装pxe工作原理 大致的工作过程如下: PXE的组件: 一、配置vsftpd 二、配置tftp 三、准备pxelinx.0文件、引导文件、内核文件 四、配置dhcp 配置ip 配置dhcp 五、创建default文件 六、新建测试主机用来测试装机效果 七、…...

关于web3.0平台的详细说明

Web3.0是指下一代互联网的发展阶段,它以区块链技术为基础,具有去中心化、安全性强、用户数据私密性保护等特点。在Web3.0的社交平台中,人们可以更好地掌控自己的数据,并获得更加开放和透明的社交体验。 以下是一些关于Web3.0社交…...

Git命令简单使用

1、上传仓库到 git 上传仓库到 git 上之前需要配置用户名和邮箱 git config --global user.name "user_name" git config --global user.email "email_id"在本地仓库中使用名称初始化 git init使用下面的命令将文件添加到仓库 # 添加一个或多个文件到暂…...

Flutter(十)网络请求和文件

目录 文件操作网络请求1.Dio库2.websocket3.JSON转Dart Model 文件操作 APP目录 Android 和 iOS 的应用存储目录不同,PathProvider (opens new window)插件提供了一种平台透明的方式来访问设备文件系统上的常用位置。该类当前支持访问两个文件系统位置:…...

Unity RenderStreaming 云渲染-黑屏

🥪云渲染-黑屏 网页加载出来了,点击播放黑屏 ,关闭防火墙即可!!!!...

Java设计模式:四、行为型模式-04:中介者模式

文章目录 一、定义:中介者模式二、模拟场景:中介者模式三、违背方案:中介者模式3.1 工程结构3.2 创建数据库3.3 JDBC工具类3.4 单元测试 四、改善代码:中介者模式4.1 工程结构4.2 中介者工程结构图4.3 资源和配置类4.3.1 XML配置对…...

【GO】LGTM_Grafana_Tempo(1)_架构

最近在尝试用 LGTM 来实现 Go 微服务的可观测性,就顺便整理一下文档。 Tempo 会分为 4 篇文章: Tempo 的架构官网测试实操跑通gin 框架发送 trace 数据到 tempogo-zero 微服务框架使用发送数据到 tempo 第一篇是关于,tempo 的架构&#xff…...

MFC 与 QT“常用控件”对比

1、 常用控件 MFC QT 1.静态文本框/标签 CStatic QLabel 按钮 CButton包含了3种样式的按钮,Push Button,Check Box,Radio Box 4种不同的类 2.按钮:推动按钮 Push Button(同一个类CButton) QPushButton 3.按钮&#xf…...

linux 下安装chrome 和 go

1. 安装google-chrome 1.1 首先下载google-chrome.deb安装包 之后 安装 gdebi包 sudo apt install gdebi 1.2 安装所要安装的软件 sudo gdebi code_1.81.1-1691620686_amd64.deb 1.3 解决Chrome无法启动问题 rootubuntu:~/Downloads# whereis google-chrome google-chrome…...

OpenCV: cv2.findContours - ValueError: too many values to unpack

OpenCV找轮廓findContours报错 ValueError: not enough values to unpack (expected 3,got 2) 问题指向这行代码👇 binary, cnts, hierarchy cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE ) 报错的意思是需要3个返回值但只给了两…...

Vue框架--Vue概述

1.vue概述 Vue是一个渐进式JavaScript 框架,用于动态构建用户界面。 2.vue的特点 (1).遵循MVVM模式 MVVM是Model-View-ViewModel的简写。它本质上就是MVC的改进版 (2).采用组件化模式,提高代码的复用率,且让代码更好的维护。 组件化:简单的说就是使用xxx.vue模式包含一个页面…...

Fiddler安装与使用教程(1) —— 软测大玩家

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。…...

Ubuntu 22.04安装 —— Win11 22H2

目录 Ubuntu使用下载UbuntuVmware 安装图示安装步骤图示 Ubuntu使用 系统环境: Windows 11 22H2Vmware 17 ProUbutun 22.04.3 Server Ubuntu Server documentation | Ubuntu 下载 Ubuntu 官网下载 建议安装长期支持版本 ——> 可以选择桌面版或服务器版(仅包…...

【STM32】IIC的初步使用

IIC简介 物理层 连接多个devices 它是一个支持设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总线中,可连接多个 I2C 通讯设备,支持多个通讯主机及多个通讯从机。 两根线 一个 I2C 总线只使用两条总线线路,一条双向串行数…...

音视频 ffmpeg命令参数说明

主要参数: -i 设定输入流 -f 设定输出格式(format) -ss 开始时间 -t 时间长度 音频参数: -aframes 设置要输出的音频帧数 -b:a 音频码率 -ar 设定采样率 -ac 设定声音的Channel数 -acodec 设定声音编解码器,如果用copy表示原始编解码数据必须…...

Go学习第十天

打印报错堆栈信息 安装errors包 go get github.com/pkg/errors 具体使用 // 新生成一个错误, 带堆栈信息 func New(message string) error//只附加新的信息 func WithMessage(err error, message string) error//只附加调用堆栈信息 func WithStack(err error) error//同时附…...

pytorch中 nn.Conv2d的简单用法

torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, biasTrue,padding_modezeros)参数介绍: in_channels:卷积层输入通道数 out_channels:卷积层输出通道数 kernel_size:卷积层的…...

前端项目工程化之代码规范

目录 一、前言二、ESLint三、Prettier四、项目实战4.1 环境依赖版本4.2 使用pnpm4.3 git提交规范 五、资源 收集六、源码地址 一、前言 前端项目工程化之代码规范是指在前端项目中定义一套代码规范,以确保项目中的代码风格和格式一致,提高代码的可读性和…...

MyBaits Generator

参考文档 MyBatis Generator Core – Introduction to MyBatis Generator MyBatis Generator 详解_enablesubpackages_isea533的博客-CSDN博客 一文解析 MyBatis Generator 的使用及配置 - 掘金 1. Introduction MyBatis Generator (MBG) 是 MyBatis MyBatis的代码生成器。…...

JavaWeb 速通Ajax

目录 一、Ajax快速入门 1.基本介绍 : 2.使用原理 : 二、Ajax经典入门案例 1.需求 : 2.前端页面实现 : 3. 处理HTTP请求的servlet实现 4.引入jar包及druid配置文件、工具类 : 5.Domain层实现 : 6.DAO层实现 : 7.Service层实现 : 8.运行测试 : 三、JQuery操作Ajax 1 …...

vscode c++编译时报错

文章目录 1. 报错内容:GDB Failed with message;2. 报错内容:Unable to start debugging. 1. 报错内容:GDB Failed with message; 例如上图报错,一般就是编译器选择错误,有两种方法解决: 打开 tasks.json …...