禅道项目管理通过底层的框架实现了灵活的API调用机制。通过禅道的API机制,大家就可以实现很多非常有意思的功能。下面我们以一个实际的例子来向大家展示禅道的API机制。

[b]一、API机制介绍:[/b]

[color=red]1.1 禅道提供的API机制都可以通过http协议获得,返回的数据格式都是json格式的。[/color]

[color=red]1.2 禅道通过框架共实现了两种API机制。[/color]一种为直接的页面调用,一种通过超级model调用接口,直接调用model层的方法。

1.2.1 页面的调用

当你访问禅道的时候,将访问的url地址中的html换成json,看到的就是json格式的数据。
比如[url]http://pms.zentao.cn/project-task-8.html[/url],返回的网页格式,把后面的.html改成.json,返回的是什么?对了,返回的是json格式的数据。
如果是GET 方式,那么只需要将t参数改成json,[url]http://pms.zentao.cn/?m=project&f=task&t=json[/url].

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&params=account=$account
PATH_INFO方式:api-getmodel-bug-getUserBugPairs-account=$account.json

[color=red]1.3 API调用步骤:[/color]

禅道的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来获取相应的数据了。

[b]二、实际例子:[/b]

请参考,[url]http://zentaoms.googlecode.com/svn/trunk/bin/getbugs.php[/url]。

执行时,需要修改里面的相应参数。
[/size]


[img]http://dl.iteye.com/upload/attachment/284525/219b25c6-3658-3d18-ae95-0906b2938373.png[/img]