内容简介: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项目托管在了码云:
地址:https://gitee.com/durcframework/easyopen
开发文档:http://durcframework.gitee.io/easyopen
【声明】文章转载自:开源中国社区 [http://www.oschina.net]
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- ApiAgent v1.0.1 发布 跨域接口代理+接口合并请求
- itest(爱测试)接口测试&敏捷测试管理 6.6.6 发布 ,新增接口 mock
- itest(爱测试)接口测试&敏捷测试管理 7.7.7 发布,接口测试重大升级
- YunGouOS 个人支付接口 2.0.3 版本发布,新增付款到零钱、转账到支付宝接口
- 撮合平台 1.0.1 发布 暴露远程调用接口
- itest work(爱测试) 接口测试&敏捷测试管理平台 9.5.0 发布接口测试及脑图用例升级
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!