1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

新闻 easyopen 1.0.3 发布,简单易用的接口平台 下载

Discussion in '软件资讯' started by 漂亮的石头, 2018-02-24.

  1. 漂亮的石头

    漂亮的石头 版主 Staff Member

    Joined:
    2012-02-10
    Messages:
    488,119
    Likes Received:
    47
    easyopen 1.0.3 发布,此次更新内容有:


    • 调整文档页面样式


    • 代码优化,完善注释

    easyopen的由来

    一次偶然的机会了解到淘宝开放平台,比较喜欢它的API调用方式(介绍),京东开放平台也是用此类似方式。它的所有接口只提供一个URL链接,然后通过参数名来区分不同的接口。做过web开发的都知道,一般一个接口url对应后台程序是一个方法,比如springmvc中Controller的一个方法。那么只提供一个url,它是如何来区分具体的哪个方法呢。因为没有看到源码不敢下结论,这里我只想到了两种思路:

    第一种方法:服务端做个代理,然后具体请求到对应url

    比如客户端请求url是:http://xxx/api/rest?name=goods.get,代理服务器拿到name转发到http://xxx/api/rest/get_goods。也就是说要将goods.get和http://xxx/api/rest/get_goods关联起来。

    第二种方法:服务端将goods.get跟方法关联起来

    这个怎么关联呢,可以在方法上加一个注解@Api(name="goods.get"),然后服务启动的时候扫描这个类,找到方法,找到方法后就能找到对应@Api注解,拿到name,然后通过一个Map<name,MethodInfo>把他们关联起来。

    关联起来后,如何调用呢?客户端请求过来是可以拿到name的,然后通过name找到对应的MethodInfo,就可以进行invoke操作了。整个流程走通之后接着就可以做其它的事情了,比如数字签名验证等功能。

    其实这种思想有点类似springmvc的原理,是行得通的。如果用springmvc实现的话,就只有一个Controller,伪代码如下:

    @RequestMapping(method = RequestMethod.POST)
    public void index(HttpServletRequest request, HttpServletResponse response) throws Throwable {

    String name = request.getParameter("name");

    MethodInfo methodInfo = map.get(name);

    Param param = methodInfo.getParam();

    param.validate(); // 校验

    Object obj = methodInfo.invoke(); // 执行
    writeResult(obj); // 返回结果
    }

    easyopen的实现原理就是第二种方法。可以看到这种设计的一个好处是可以做到统一的参数校验,统一的结果返回。开发人员只需要写好service层的代码即可。

    easyopen的功能


    • 开箱即用,写完业务代码直接启动服务即可使用,无需其它配置。


    • 参数自动校验,支持国际化参数校验(JSR-303)。


    • 校验功能和结果返回功能实现各自独立,方便自定义实现或扩展。


    • 采用注解来定义接口,维护简单方便。


    • 支持i18n国际化消息返回。


    • 自动生成文档页面,类似swagger。


    • 采用数字签名进行参数验证,签名算法见:easyopen\签名算法.txt。


    • 采用appKey-secret形式接入平台,即需要给接入方提供一个appKey和secret。

    更多功能可参考开发文档,在最下方。

    结构图


    [​IMG]

    文档页面

    [​IMG]



    文档页面一般提供给客户端,开发人员也可以进行一些简单测试。

    easyopen项目托管在了码云:

    地址:https://gitee.com/durcframework/easyopen
    开发文档:http://durcframework.gitee.io/easyopen
    easyopen 1.0.3 发布,简单易用的接口平台下载地址
     
Loading...