easyopen 1.0.3 发布,简单易用的接口平台

栏目: 软件资讯 · 发布时间: 6年前

内容简介:easyopen 1.0.3 发布,此次更新内容有: 调整文档页面样式 代码优化,完善注释 easyopen的由来 一次偶然的机会了解到淘宝开放平台,比较喜欢它的API调用方式(介绍),京东开放平台也是用此类似方式。它的所有接口...

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。

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

结构图

easyopen 1.0.3 发布,简单易用的接口平台

文档页面

easyopen 1.0.3 发布,简单易用的接口平台

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

easyopen项目托管在了码云:

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


【声明】文章转载自:开源中国社区 [http://www.oschina.net]


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Domain-Driven Design Distilled

Domain-Driven Design Distilled

Vaughn Vernon / Addison-Wesley Professional / 2016-6-2 / USD 36.99

Domain-Driven Design (DDD) software modeling delivers powerful results in practice, not just in theory, which is why developers worldwide are rapidly moving to adopt it. Now, for the first time, there......一起来看看 《Domain-Driven Design Distilled》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码