欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

easyopen——一个简单易用的接口开放平台

程序员文章站 2022-03-25 13:21:43
...
摘要: 一个简单易用的接口开放平台,平台封装了常用的参数校验、结果返回等功能,开发者只需实现业务代码即可。

easyopen介绍

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

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

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

使用场景

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

结构图

easyopen——一个简单易用的接口开放平台

  • 服务器启动完毕时,从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 {

    @Autowired
    UserService 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