摘要: 一个简单易用的接口开放平台,平台封装了常用的参数校验、结果返回等功能,开发者只需实现业务代码即可。

easyopen介绍

一个简单易用的接口开放平台,平台封装了常用的参数校验、结果返回等功能,开发者只需实现业务代码即可。

  • 码云地址:https://gitee.com/durcframework/easyopen
  • 开发文档:http://durcframework.gitee.io/easyopen

easyopen的功能类似于淘宝开放平台,它的所有接口只提供一个url,通过参数来区分不同业务。这样做的好处是接口url管理方便了,平台管理者只需维护好接口参数即可。由于参数的数量是可知的,这样可以在很大程度上进行封装。封装完后平台开发者只需要写业务代码,其它功能可以通过配置来完成。

得益于Java的注解功能以及Spring容器对bean的管理,我们的开放接口平台就这样产生了。

使用场景

如果你的系统对外提供接口服务就可使用,类似于淘宝开放平台,腾讯开放平台,京东开放平台。

结构图

  • 服务器启动完毕时,从Spring容器中找到被@ApiService标记的业务类
  • 循环业务类,找到被@Api标记的方法,并保存对应的参数,method,对象信息。
  • 客户端请求过来时,根据name-version可定位到具体的业务类中的某个方法,然后invoke方法。
  • 包装结果返回。

功能特点

  • 开箱即用,写完业务代码直接启动服务即可使用,无需其它配置。
  • 采用数字签名进行参数验证,签名算法见:easyopen-core\签名算法.txt
  • 采用appKey-secret形式接入平台,即需要给接入方提供一个appKey和secret。
  • 校验功能和结果返回功能实现各自独立,方便自定义实现或扩展。
  • 平台开发者只需关注业务代码,其它功能由框架来完成。
  • 采用注解来定义接口,维护简单方便。
  • 支持i18n国际化消息返回。

快速开始

eclipse下(idea原理一样)

  • 下载或clone项目https://gitee.com/durcframework/easyopen.git 下载zip
  • eclipse右键import... -> Exsiting Maven Projects。选择easyopen目录
  • 导入到eclipse后会有三个工程,等待相关jar包下载。
  • 全部jar下载完毕后,启动easyopen-server项目,由于是spring-boot项目,直接运行EasyopenSpringbootApplication.java即可 在easyopen-sdk中找到SdkTest.java测试用例,运行单元测试。

工程说明

  • easyopen-core:easyopen核心代码
  • easyopen-server:开放平台服务端(spring-boot),接口提供方
  • easyopen-sdk:接口对应的开发包,配合server使用
  • static:文档静态资源
  • index.html:文档首页,配合Pages功能使用

业务类

找到easyopen-server下面的GoodsApi类,这个就是我们要写的业务类,内容如下:

// 业务类必须加上@ApiService注解,@ApiService继承了@Service类可以被Spring管理
@ApiService
public class GoodsApi {@AutowiredUserService userService; // 在方法上面加@Api注解便可以对外提供了这个接口了,name表示接口名@Api(name = "goods.get") public Goods getGoods(GoodsParam param) {if(StringUtils.isEmpty(param.getGoods_name())) {throw GoodsErrors.NO_GOODS_NAME.getException(); // 抛出异常}System.out.println("user:" + userService.getUser());Goods goods = new Goods();goods.setId(1L);goods.setGoods_name("iPhoneX");goods.setPrice(new BigDecimal(8000));return goods; // 返回业务结果}   }

更多功能可查看easyopen开发文档http://durcframework.gitee.io/easyopen

easyopen——一个简单易用的接口开放平台相关推荐

  1. 一个简单易用的容器管理平台-Humpback

    什么是Humpback? 项目开源地址在此: Humpback Source,觉得有用或者有趣,欢迎给个star~ 在回答这个问题前,我们得先了解下什么的 Docker(哦,现在叫 Moby,文中还是 ...

  2. docker一个简单易用的容器管理平台-Humpback

    什么是Humpback? 项目开源地址在此: Humpback Source,觉得有用或者有趣,欢迎给个star~ 在回答这个问题前,我们得先了解下什么的 Docker(哦,现在叫 Moby,文中还是 ...

  3. 基于ForkJoin构建一个简单易用的并发组件

    2019独角兽企业重金招聘Python工程师标准>>> 基于ForkJoin构建一个简单易用的并发组件 在实际的业务开发中,需要用到并发编程的知识,实际使用线程池来异步执行任务的场景 ...

  4. 开发一个简单易用的SDK的详细步骤(超详细,超适用)

    文章目录 开发一个简单易用的SDK的详细步骤 创建starter步骤 关键点 总结 开发一个简单易用的SDK的详细步骤 创建starter步骤 1.新建一个 spring boot 初始化项目 2.添 ...

  5. java通讯框架_gim: 一个简单易用,稳定高效的及时通讯框架(java、android)

    gim 一个简单易用,稳定高效的及时通讯框架(java) 简介: gim是基于高性能网络框架getty封装的,能简单上手,稳定高效的及时通讯框架 Getty:[https://github.com/g ...

  6. idea log 不输出error_还在使用console.log()吗?Bunyan:一个简单易用的JS日志框架

    Bunyan是一个简单易用的JS日志框架,可以工作在多种环境下,这里以Nodejs为例说明Bunyan的基本用法.是时候替换console.log的写法了. 安装 npm install --save ...

  7. d3.js 旋转图形_一个简单易用但功能强大的图形矢量化软件,扫描图片转换成CAD图的软件等等...

    背景简介 很多童鞋可能可能有想要把图片转成CAD能打开的格式,但是找不到软件,今天要分享的这个软件值得一试. 内容简介 AlgoLabR2VToolkit是一个将光栅图像转换为矢量图像的软件,转换后的 ...

  8. 如何选择一个简单易用的云桌面

    如何选择一个简单易用的企业级桌面云系统 废话少说,服务器虚拟化相信大家都熟悉了,也没啥难度了:但是桌面虚拟化就没那们简单.给你看一个Horizon View的系统架构,复杂不?反正一个新手,不折腾个把 ...

  9. python 消息队列 go_gmq: gmq是基于redis提供的特性,使用go语言开发的一个简单易用的消息队列;支持延迟任务,异步任务,超时任务,优先级任务...

    1. 概述 gmq是基于redis提供的特性,使用go语言开发的一个简单易用的队列;关于redis使用特性可以参考之前本人写过一篇很简陋的文章Redis 实现队列; gmq的灵感和设计是基于有赞延迟队 ...

最新文章

  1. pytorch 反卷积 可视化_手推反卷积
  2. 利用Diferencia和Java微服务进行分接比较测试
  3. IDEA显示类的结构 Alt+F7
  4. 缓存穿透、缓存雪崩、redis并发
  5. java接口允许ajax访问_服务允许AJAX请求,允许跨域请求
  6. cam350 不能打开光绘文件_CAM350使用教程-复制Gerber层
  7. 【GAPPER乡村笔记项目】盘点老龄化社会背景下人工智能及机器人技术的应用
  8. legacy引导gpt分区_装系统用什么分区?gpt分区及mbr分区详细教程(附带bios设置)
  9. Day434.订单库存服务分布式事务的最终解决 -谷粒商城
  10. 计算机组成原理——总线(课程笔记)
  11. rm 删除除了某文件或文件夹之外的其他文件
  12. OMP schedule子句的用法
  13. java 32位兼容_Java 32位与64位兼容性
  14. 十家高质量学习网站推荐给所有人
  15. windows服务与网页交互_「桌面美化」windows 免费开源的动态壁纸桌面软件
  16. 指针<小罗爱c语言>
  17. 传智播客.黑马程序员,学C++不再难!
  18. 【短信插件】JSHOP_V2.4系统短信功能对接流程
  19. CocosCreator零基础制作游戏《极限跳跃》二、制作游戏开始场景
  20. 陕西哪个学校计算机专业比较好,西安的大学计算机专业排名

热门文章

  1. KNN+Dense SIFT+手势识别
  2. 网络路由交换 -- 静态路由 和 缺省路由
  3. 大华摄像头实现web端实时播放以及录像回放
  4. 为什么HashMap的key允许空值,而Hashtable却不允许
  5. 阿里云code上传代码
  6. 关于SuperSlide插件的使用
  7. linux 下 PHP 环境搭建(已测试)
  8. UVM TLM FIFO通信 示例
  9. html实现数独(附源码)
  10. Android中MediaMuxer和MediaCodec用例 - audio+video