1、缘起

最初,系统系统间都是孤立的。业务是贯穿的,系统间也必然需要交互数据。

实现数据交互的方式有好多种,可以通过ftp交互Excel文件,可以通过互相读写的中间库,可以通过Web Services。

系统间可能是点对点交互,可能是一对多广播,可能是多对一汇总,可能是多对多协同。

在复杂IT场景中,多信息系统各司其职,协作完成工作。交互数据的事情怎样做呢?

数据交互有两个核心问题要解决:一是协议,二是数据格式。这两个都需要通信双方协商。
如果是企业内部的各信息系统,可以搭建统一的数据交互平台解决,强制推行一致的通信协议和数据格式审定流程。

如果在开放环境中,或松散组织中呢?有没有高效、合理的办法?

开放接口是一种良好的机制,可以应对这个场景。

商定如下:每个组织定义自己的“开放接口”,供其它系统调用。发布方定义协议和数据格式。而且,开放接口是面对所有其他系统的,不再针对个别系统做定制性的接口开发。

开放接口的优势:
统一规划系统的对外数据交互和功能调用。针对不同的调用者分别配置,即完成了系统互连的需要,而不是屡屡进行针对性接口开发。

2、技术需求

首先,通信协议要足够灵活,最好实现模块化和可插拔。通信协议可以体现在多个层次,包括HTTP、序列化、加密、压缩等。以应对调用方技术平台、安全等级、网络限制等特殊情况。
需要同时支持发布多个接口,而且每个接口可采用不同的协议。

其次,数据格式要足够灵活,最好实现可配置。

最后,平台需提供安全、监控、流量控制等基础功能。

3、功能规划

3.1、功能架构

功能架构如下图所示。

底层的通信协议,暂时不予关注,为了便于实现,先采用HTTP协议。

安全、权限、流量、序列化等工作由多个可插拔、可配置的组件实现。

服务器端架构如下图所示。

借鉴Servlet Filter思路,多种通信需求由Handler实现。Handler可配置,易扩展,具备极大的灵活性。

3.2、核心功能

开放接口核心功能是数据采集和数据发布。

数据采集的核心功能是格式映射和数据校验。

格式映射包括数据存储结构和数据项名称的映射。数据校验包括字段长度、是否必填项、数字格式、日期格式等校验。

格式映射需要定义配置文件。数据校验也可以在配置文件中定义。

平台需要定义配置文件格式,并依托配置文件在不编写Java代码的情况下实现数据采集和数据发布的功能。

4、功能设计

开放接口平台需要实现以下功能。

4.1、核心引擎

包括:多Handler可配置架构、数据映射文件及转换验证机制。

4.2、支持性功能

异常处理机制、消息格式参考实现等。

4.3、常用Handler参考实现

包括授权、流量控制、日志等。

4.3、外围功能

包括:对调用方的管理(基本信息、各种key、访问限制等)等。

如何做一个简单的开放接口(1)-功能设计相关推荐

  1. 做一个简单的游戏服务器

    为什么其实不重要! 做一个简单网游服务器. 服务由两部分构成,网关和世界服务器,绞尽脑汁,还没有想到一个好听的名字,可以肯定的是要code n行,就暂定CodeN {N >= 0}. 语言选用C ...

  2. 用html5做一个简单网页_用新款ws2812灯带做一个简单的窗花

    本文转自:DF创客社区-未经许可不可转载 原文链接(附件请于原文下方下载): 用新款ws2812灯带做一个简单的窗花-创意生活论坛-DF创客社区​mc.dfrobot.com.cn 作者:屌丝王小明 ...

  3. SmartSql使用教程(1)——初探,建立一个简单的CURD接口服务

    一.引言 最近SmartSql被正式引入到了NCC,借着这个契机写一个使用教程系列 二.SmartSql简介[摘自官方文档] 1. SmartSql是什么? SmartSql = MyBatis + ...

  4. java如何做网页_java怎么做一个简单网页?网页包括什么?

    学了java程序之后,大家就可以将这些运用到生活中去,比如做一个简单的网页.正好也可以检测自己学了怎么样,那么接下来,我们就来给大家讲解一下这方面的内容. 用Java语言编写实现一个简单的WEB浏览器 ...

  5. Python开发——做一个简单的【表白墙】网站

    前言 大家早好.午好.晚好吖 ❤ ~ 今天我们要用Python做Web开发,做一个简单的[表白墙]网站. 众所周知表白墙的功能普遍更多的是发布找人,失物招领, 还是一个大家可以跟自己喜欢的人公开表白的 ...

  6. 做一个简单计算器(两个数的加减乘除)扣扣116119409

    做一个简单计算器(两个数的加减乘除) 一.语言和环境 a)实现语言Java b)环境要求Android Studio 二.要求: 1.可以清空,可以回退(一个一个回退): 2.按下去之后textvie ...

  7. 蚂蚁研究员玉伯:做一个简单自由有爱的技术人

    玉伯 蚂蚁研究员 读完需要 10 分钟 速读仅需 1 分钟 玉伯,蚂蚁研究员,体验技术部负责人.2008 年加入淘宝,2012 年开始在支付宝致力于设计语言 Ant Design.数据可视化 AntV ...

  8. 玉伯:做一个简单自由有爱的技术人

    简介: 前端工程师如何成长?如何管理前端团队?如何打造团队文化?近日,蚂蚁研究员兼体验技术部负责人玉伯,在蚂蚁内部技术人的成长公开课上,分享了他的人生愿景和心路历程. 作者 | 玉伯 前端工程师如何成 ...

  9. 使用有道词典API做一个简单的翻译页面 HTML+JS+有道词典API(代码可直接运行)

    使用有道词典API做一个简单的翻译页面 HTML+JS+有道词典API(代码可直接运行) 代码很简单,适合初学者学习借鉴.可以当成一个小工具使用. 注意: 1.代码应联网使用. 2.在输入密钥和id时 ...

最新文章

  1. android系统自带的Service原理与使用
  2. opencv3——ANN算法的使用
  3. templet 显示字段外键对应名_主外键和外键约束
  4. Python 首超 Java 雄霸5月编程语言指数榜!
  5. Oracle 单实例 迁移到 RAC 实例 -- 使用导出导入方法
  6. 重磅!2021年国内Java培训机构排名前十最新出炉啦
  7. 聚沙——关于禁用UAC的解决办法(Win8 System)
  8. 使用Visual Studio命令提示查看cad中的重整函数
  9. svn里 is already locked
  10. css3图片上下浮动动画
  11. 360全景视频panolens.js 实现代码
  12. JHU计算机专业学费,约翰霍普金斯大学学费多少 贵不贵
  13. 自学用——html+css(要点)
  14. 『Ocelot』.NET开源API网关 – Ocelot详细使用及其说明(可当文档收藏使用)
  15. 《调教命令行09》磁盘很廉价,放小电影最合适了
  16. 计算PI(π)的方法
  17. Unity3d 安卓开发问题总结
  18. IOS 和安卓系统比较
  19. 互动作业显示服务器异常,互动作业打不开怎么办 互动作业打不开解决方法
  20. 计算机资源不足 新用户无法登录怎么办,电脑系统资源不足及解决办法

热门文章

  1. 富士莱医药深交所上市:市值61亿 净利1.2亿同比降15%
  2. RAID磁盘阵列模式
  3. v8引擎处理html,JavaScript V8引擎基础教程
  4. PHP学习之路(一)——初学PHP
  5. 【Redis】--缓存双写一致性分析、解决方案
  6. 自己动手搭建GitLab
  7. 海思[hi3531]编译环境搭建(针对用于编译程序不制作内核和系统的开发者)
  8. 你和阿里资深架构师之间,差的不仅仅是年龄(进阶必看) 1
  9. spring boot通过微信扫码登录
  10. linux内存测试工具memtest,用Memtest86检测电脑内存