用groovy写阿里软件的api

看了阿里软件开发的指南,想到用强大groovy脚本语言,应该会很简练。
于是自己写了几个简单的函数用于处理与alisoft平台的连接。

不过在开发的过程中,也发现了alisoft定义的接口还有些问题,maybe 我自己的理解有偏差吧。。

比如对于下述定义:

alisoft.getUsingUser 调用参数

    系统级参数

名称 类型 是否必须 描述
sip_appkey string 必须 ISV应用的appkey为软件互联平台分配给ISV应用的唯一编号。
sip_apiname string 必须 服务名。
sip_timestamp string 必须 服务请求时间戳(yyyy-mm-dd hh:mm:ss.xxx),支持毫秒。
sip_sign string 必须  请求签名(包括了对前面三个必选参数和所有业务参数按签名规则做签名)。
sip_sessionid string 可选  在ISV应用中用户会话唯一标识。

   应用级参数

名称 类型 是否必须 描述
appInstanceId string  必须  应用实例ID,一般与应用中的公司ID一一对应


如果仅仅把上述传入后做signature的话,得到的签名是无效的,必须要把所有的参数都传入才可以。

整个库中比较关键的是 alisoftutils这个类的getUrl方法 用以构造请求的url string
def getUrl(String methodName, Map params, String sessionid, String appkey, String appsecret, String base){
def qs = [:]

// system
qs.sip_appkey = appkey
qs.sip_apiname = methodName
qs.sip_timestamp = Constants.SIP_TIMESTAMP_FORMATER.format(new Date())

// application
qs.userId = params.user_id
qs.appInstanceId = params.app_instance_id
qs.token = params.token

//optional
qs.sip_sessionid = sessionid
qs.appId = params.app_id

qs.sip_appsecret = appsecret;
String sip_sign= SignatureUtil.Signature(qs, appsecret);
qs.sip_sign = sip_sign

def urlStr = []

qs.each{ urlStr << it.key + "=" + URLEncoder.encode(it.value,"gbk") }

return new URL(base + urlStr.join("&"))
}

在处理alisoft返回值得时候 我也简化了 没有考虑response的status变量 ,这和alisoft官方提供的jar包处理有区别,anyway,也许我这么处理是有隐患的。

最后demo顺利调试成功,还需要继续完善~ 

你可能感兴趣的:(脚本,groovy)