通用接口开放平台设计与实现——(1)开篇

article/2025/9/22 22:20:25

首先简单聊下背景,大概是几年前,工作中遇到这么一个复杂的应用场景,大型企业中的物流系统,需要跟众多的内外部系统交互,对接的系统达到十几个,接口数量在50个左右,并且后续还会大量增加新的对接方,并且很多对接方是类似的,例如跟汽运物流厂商的运输管理系统TMS,进行运输委托、运力反馈、运费结算、签收回传等交互。

如何还是按照传统模式去做点对点集成,会消耗大量成本,包括时间和费用,并且上线后还会搭上大量的运维成本。同时,伴随的问题,当业务发生变更时,接口的升级更新,也是大麻烦,往往涉及到多方协调、开发、联调、上线。

基于这个背景,思考一种优雅的解决方案,能低成本、高效率解决这个难题。

最终思路是实现一套物流系统的接口开放平台,由平台对外提供一套标准的Rest风格的API服务作为服务接口,相关方系统通过这些API服务进行数据查询或数据更新。

同时,为了规避相关方系统需要定时轮询来获取数据变动的弊端,另外提供一套服务的消息服务机制,接口开放平台作为消息服务中心,接收物流系统作为生产者产生的业务消息,如委托单创建、车辆入厂、用户签收,然后查找订阅该消息主题的相关方系统,实时以消息推送的方式通知相关方系统。

由平台技术框架部分,承担通用的逻辑实现,如数据验证、服务分发与调用、权限、日志、异常,而具体的业务API服务和业务系统的开发,仅需关注业务逻辑的实现即可。

总结下,也就是依托面向对象设计理念,对接口和消息进行组织:功能模块->业务实体->功能接口及消息
在这里插入图片描述

API服务实现业务数据交换,消息服务实现数据变动通知。

该平台主要由两部分组成,API服务和消息服务。
API服务:物流接口平台对外提供统一的数据接口服务,其他应用系统通过调用API服务,一方面,可以查询权限范围内的物流数据,另一方面,可以将自身系统产生的数据推送至物流系统。
消息服务:物流接口平台提供消息服务,主动将物流系统的数据的变化以消息的形式推送给其他系统。消息服务基于Socket技术,调用方系统与物流接口平台建立长连接,实时接收消息通知,避免调用方定时轮询,提高API调用效率,降低双方服务器负荷。

这样做,最大的优点就是实现了标准化,相关方来对接时,如果现有的API能满足需求,只需提供标准化的服务接口,做简单的初始化配置(账号、密钥、权限、角色等)即可,最多加一点技术支持(解答疑问、联调);如果现有的API服务不能满足需求,则只需要设计和实现新的业务API服务就行了,并且新服务开发发布后,以后还能复用。

按照这种模式来实现,接口开发平台自身的设计和开发比较复杂,投入大一些,但一旦搭建出平台后,后续的业务开发成本就很低了,特别是对接工作和运维工作将非常简单,没有耦合和依赖。例如,我们做物流跟踪,市面上有多家服务提供商,如果是按照这种模式来,如跟某厂家合作一段时间后,对其服务能力不满意,则可以轻松更换一家,不需要进行接口的定制和调整。

该平台并并不局限于某一特定系统或行业,具备通用性。

接下来,我会将整个平台的设计与实现,包括中间方案的选择,进行的重构和优化,用一系列文章进行介绍和说明,欢迎评论、交流、收藏和转发。

开源地址:传送门


http://chatgpt.dhexx.cn/article/yxShVnHq.shtml

相关文章

六大接口管理平台,总有一款适合你的!

前后端分离绕不开的接口测试 先聊一聊前端和后端分离的优点。前后端分离优点如下: 真正的实现前后端解耦,前端服务器使用 nginx;易于发现bug,可以快速定位是谁的问题,不会出现互相踢皮球的现象;减少后端服…

2022中国十大API接口服务平台排行榜(推荐五颗星)

Api接口也就是所谓的应用程序接口,api接口的全称是Application Program Interface,通过API接口可以实现计算机软件之间的相互通信,开发人员可以通过API接口程序开发应用程序,可以减少编写无用程序,减轻编程任务&#x…

python基础教程:startswith()和endswith()的用法

startswith()方法 Python startswith() 方法用于检查字符串是否是以指定子字符串开头如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。str.startswith(str, beg0,endlen(string)); 参数 str --检测的字符串。strbeg …

C# 为什么要用StartsWith而不是Substring进行字符串匹配?

字符串的截取匹配操作在开发中非常常见,比如下面这个示例:我要匹配查找出来字符串数组中以“abc”开头的字符串并打印,我下面分别用了两种方式实现,代码如下: using System;namespace ConsoleApp23 {class Program{sta…

C# 为什么高手喜欢用StartsWith而不是Substring进行字符串匹配?

字符串的截取匹配操作在开发中非常常见,比如下面这个示例:我要匹配查找出来字符串数组中以“abc”开头的字符串并打印,我下面分别用了两种方式实现,代码如下: using System;namespace ConsoleApp23 {class Program{sta…

startsWith(),endsWith()的作用和用法

startsWith(),endsWith()的作用,用法,判断字符串a是不是以字符串b开头或结尾 Java代码 if(a.startsWith(b)) //判断字符串a 是不是以字符串b开头. Java代码 if(a.endsWith(b)) //判断字符串a 是不是以字符串b结尾. 一个demo测试 Java…

[PYTHON] python中startswith函数用法

一、当不确定python中某一函数是做什么用的可以进入函数里面分析它的源码 大致意思就是:如果prefix在S中以start开头,以end结尾,返回结果为True,否则返回False 由上得知,其语法如下: S.startswith(prefix[,…

推荐两个漂亮的编程字体

【摘要】推荐两个漂亮的编程字体1. Inconsolata号称最好看的编程字体。2. YaHei Consolas Hybrid中英文混合,是微软专为编程做制作的字体,很优雅很强大。 1. Inconsolata 号称最好看的编程字体。在个别编辑器下中文的显示会有bug(比如笔者用…

编程常用字体Consolas、Fira Code、Source Code Pro

编程时方便查看,且中文符号与英文符号区别大,便于排错 1、Consolas 一种等宽字体、属于最常用的编码字体下载地址 参考图: 2、Fira Code 一种专为代码排版优化的等宽字体,基于 Fira Mono 等宽字体的一个扩展,主要特点…

10个不错的编程等宽字体

1. Source Code Pro Adobe 在发布首款开源字体 Source Sans Pro 后,2012年9月又发布了 Source Code Pro 字体集,它是一款非常适合程序员阅读的等宽字体,适用于 Linux/Unix、Mac OS X 和 Windows 系统,由 Paul D. Hunt 设计&…

学编程必备:3 大编程字体!让你在编程的时候原地起飞!

前言 日复一日的编写代码,有没有感到审美疲劳? 对于编码的我们,一个赏心悦目的字体,可以愉悦身心。 编程字体,需要的是审美感不疲劳,更主要的是能显示出清晰的字体效果。 比如 [‘i’, ‘1’, ‘l’] 与…

适合matlab的编程字体“YAHEI CONSOLAS HYBRID”-下载+安装

“适合matlab的编程字体“YAHEI CONSOLAS HYBRID”-下载安装 前言下载YAHEI CONSOLAS HYBRID安装步骤在MATLAB安装该字体 前言 matlab预设的字体及字号可能不符合大多数国人的使用习惯,YAHEI CONSOLAS HYBRID字体是一款无衬线字体,是很适合程序员使用的…

vscode编程字体设置与修改

vscode编程字体设置与修改 在vocode上写代码,不会向平常一样写出如下符号 这里介绍一下怎么设置,并且使用vocode官方推荐的字体FiraCode 首先 进入https://github.com/tonsky/FiraCode下载文件包,下载到本地后,进入里面的ttf文…

QT设置编程字体

现在记录一下自己思路或者一些常用的知识点,这样以后自己忘记了可以很快查找翻阅一下,可以当个备忘录。同时如果这些东西对其他人有帮助的话,也是特别好的,也会让自己有成就感,给自己更多的前进动力。 这里搜索了很多资…

c语言编程用什么字体,10 款最适合编程的字体

编程需要什么样的字体?什么样的字体适合编程?首先字体是要免费的!其次这种字体能够轻松的区分0O并且1lI,避免有用这些字符的混淆而引起程序的bug。还要字体要好看,容易阅读等。 1. Hack Hack 是基于 Bitstream Vera 和…

10大最适合编程的字体,让代码看起来更美更舒服!

现在有事没事就喜欢写写代码的人越来越多了,对于成天盯着屏幕工作的开发人员来说,编程代码可能是每天见得最多的东西了。可是绝大部分人都一直使用编辑器默认的字体,其实,换一套适合自己的编程字体不仅能让代码看得更舒服&#xf…

编程字体推荐

前言 对于编码的我们,一个赏心悦目的字体,可以愉悦身心。 以下是我推荐一波等宽字体,有兴趣的可以装一波。 字体(不分先后) Fira Code 这个字体我用了四年,编码仪式感满满的(逼格)。 效果图 下载 Github:FiraCode Cascadia Co…

分享一些我常用的编程字体

1.前言 可能有的同学已经放假在家了,我也快了。最近不想聊具体的技术了,过年了聊点轻松的东西。但是又不想偏离编程太远,所以我今天聊聊我们常用的一些编程字体。在阅读代码的时候眼睛需要以不同寻常的方式移动(垂直和水平方向&a…

十款最佳编程字体

简评:之前有看到一篇 Fira Code 的介绍。所以今天整理了一些比较流行而且免费的一些字体,各取所需。 以下的屏幕截图均为相同的代码片段,编辑器为 VSCode。使用相同的设置: "editor.fontSize": 14 ▎1. Hack Hack 是基于…

强烈推荐:9 款用起来超爽的编程字体!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 气泡星云 (NGC 7635) (© NASA) Consolas Consolas 是一套等宽字体的字型,属无衬线字体,由 Lucas de Groot 设计,这套字型使用了微软的 ClearType …