api机制简介

2014-09-01 18:20:22
王春生
43715
最后编辑:石洋洋 于 2019-01-15 13:33:21
简介:zentaoPHP还提供了API机制,方便大家来和其他的系统进行集成。

一、API机制介绍:

前面章节讲述的扩展机制是需要直接开发PHP或者html, css, js等代码。zentaoPHP还提供了API机制,方便大家来和其他的系统进行集成。

API机制都是基于http协议的。返回的数据以json格式存储。

zentaoPHP架共实现了两种API机制。一种为直接的页面调用,一种通过超级model调用接口,直接调用model层的方法,下面我们一一来看下。

二、页面直接调用

当你访问使用zentaoPHP开发的页面时,将访问的url地址中的html换成json,得到的就是json格式的数据。

比如http://pms.zentao.net/project-task-8.html,返回的网页格式,把后面的.html改成.json,返回的是什么?对了,返回的是json格式的数据。

如果是GET 方式,那么只需要将t参数改成json,http://pms.zentao.net/?m=project&f=task&t=json。


返回的数据是做了两次json_encode,下面是代码的示例:

$result = file_get_contents('http://pms.zentao.net/project-task-8.json'); 
$result = json_decode($result);
if($result->status == 'success' and md5($result->data) == $result->md5)
{
    $data = json_decode($result->data);
    print_r($data);
}

先判断第一层里面的result是否正确,md5签名是否正确,然后再对data对象进行json_decode。

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

备注:

超级model调用方法暂时只有禅道项目管理软件实现。蝉知门户和然之协同暂时还没有实现。

评论列表
111 2020-02-26 11:28:57
看不懂 给个完整postman 调用的例子么
pauli 2020-02-13 10:29:52
能给一个完成的禅道 API 列表吗?@王春生
王春生 2020-02-13 20:09:36
后台二次开发里面列出来的是所有的api列表。
秦时明月 2020-01-08 18:50:23
参数如果是float类型,含有小数点的话,小数点后的参数获取不到,请问怎么解决呢?
王春生 2020-01-13 09:55:33
编码之后传输。
禅道 2019-12-19 10:59:26
禅道创建任务的api是什么啊
maxuan 2019-12-02 17:26:08
你好,我用超级model接口调用,出现请用手机浏览器登陆,是什么问题?
Java Coder 2019-09-19 10:32:49
禅道部分接口返回数据不是JSON格式,比如提交Bug接口:/zentao/bug-create-[productID]-[extras].json,直接返回的是html文本。接口格式有些混乱
lid 2019-08-05 16:28:07
如何通过api创建一个project,api文档上并未找到入参,出参没有可以访问下看下,但是没有入参的话对于Java开发查找接口就比较麻烦,请问是否有较为齐全的api文档
王春生 2019-08-06 07:55:06
参考我们创建表单页面的参数。POST到api就可以。
mmw 2019-08-02 18:03:36
你好,禅道有获取个人当天的任务信息的公共接口吗?比如通过接口获取个人当天有多少个任务,任务工时,完成状态等数据。
王春生 2019-08-05 07:47:46
组织视图,点击每一个人进去,就可以看到。
xiaobin 2019-07-31 13:18:21
忽略上面的问题,是我自己这边没走对
xiaobin 2019-07-31 13:11:09
超级model调用方法,在后台改了超级model的权限,但调用的时候,debug到common=》model=》checkPriv这里过不去,
在if(isset($this->app->user))里,user是没有的,直接进了else的die了。

不太清楚是不是因为没有成功的把值赋给$this->app->user
1/5
发表评论
评论通过审核后显示。