禅道项目管理通过底层的框架实现了灵活的API调用机制。通过禅道的API机制,大家就可以实现很多非常有意思的功能。下面我们以一个实际的例子来向大家展示禅道的API机制。
更多开源详情:http://www.zentao.net/
一、API机制介绍:
1.1 禅道提供的API机制都可以通过http协议获得,返回的数据格式都是json格式的。
1.2 禅道通过框架共实现了两种API机制。一种为直接的页面调用,一种通过超级model调用接口,直接调用model层的方法。
1.2.1 页面的调用。
当你访问禅道的时候,将访问的url地址中的html换成json,看到的就是json格式的数据。
比如http://pms.zentao.cn/project-task-8.html,返回的网页格式,把后面的.html改成.json,返回的是什么?对了,返回的是json格式的数据。
如果是GET 方式,那么只需要将t参数改成json,http://pms.zentao.cn/?m=project&f=task&t=json.
1.2.2 超级model调用接口
页面的调用,存在一定的局限,比如返回的数据可能没有你想要的,或者返回了你不需要的数据。为此,我们特地准备了一个超级model调用接口。该接口的使用方式:
首先要为相应的帐号增加超级model调用接口的访问权限。
然后就可以通过api模块的getModel方法,获取任意模块的model的公开方法了。
getModel方法需要三个参数,分别是模块名,方法名,然后是该方法的参数列表,key1=value1,key2=value2这种方式,多个参数之间用英文逗号隔开。
以调用bug模块的getUserBugPairs()方法为例:
GET方式调用: ?m=api&f=getModel&module=bug&methodName=getUserBugPairs¶ms=account=$account
PATH_INFO方式:api-getmodel-bug-getUserBugPairs-account=$account.json
1.3 API调用步骤:
禅道的API调用共分为三个步骤:
1.3.1 获得session。
首先要访问api模块的getSessionID方法,获得session。
GET方式:?m=api&f=getSessionID&t=json
PATHINFO: api-getsessionid.json
返回的格式中包含sessionName和sessionID。在后续的访问中,必须以cookie的方式,或者GET方式,将session传递给服务器。
1.3.2 验证用户身份。
然后可以访问user模块的login方法,来进行用户身份的验证。
用户身份验证,需要提供用户名和密码,以post方式传递给user-login方法。
变量名为: account, password。
1.3.3 调用相应的API。
用户验证通过之后,就可以通过页面调用的api,或者超级model调用的api来获取相应的数据了。
二、实际例子:
请参考,http://zentaoms.googlecode.com/svn/trunk/bin/getbugs.php。
执行时,需要修改里面的相应参数。