api机制简介

2014-09-01 18:20:22
王春生
32944
最后编辑:石洋洋 于 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调用方法暂时只有禅道项目管理软件实现。蝉知门户和然之协同暂时还没有实现。

评论列表
Sharon 2019-04-23 15:29:42
返回json格式的数据,里面还带有html标签,怎么回事啊?
王春生 2019-04-23 16:37:37
那你要检查下是否通过了权限验证。
Sharon 2019-04-23 15:18:18
java怎么处理PHP中json_encode后的数据啊?
王春生 2019-04-23 16:35:00
需要解析两次,其他的没有特别的地方。
gdli 2019-06-13 15:14:52
python示例:https://www.zentao.net/extension-viewExt-139.html
java示例: https://www.zentao.net/extension-viewExt-144.html
xiao 2019-04-03 11:12:48
如何通过api创建1个任务?
王春生 2019-04-03 11:26:25
请参考我们网站的二次开发手册。
tester 2019-03-15 13:15:52
请问bug管理,如何根据bug标题查询编号和状态? 哪个接口可以查?
王春生 2019-03-19 09:02:42
模糊搜索现在没有这个接口。
mray 2019-03-14 11:09:51
可以提供一个交流平台的入口吗,qq群或者其它都可以, 非常感谢
王春生 2019-03-15 08:34:38
1492153927 加这个QQ
mray 2019-03-14 10:58:12
调用提供的getmodel方法的实例时,都会redirect到my module这个页面的视图,我是在浏览器中登陆过后调用的,查看了cookie是有验证信息的,同时查看了个人信息中权限配置里面,getmodel项的值是true,用户角色为dev,我想问一下这种情况下问题出在什么地方
xu 2019-03-13 15:43:05
请问登录的时候可以使用身份身正牌之类的东西吗?向jenkins一样
王春生 2019-03-14 09:24:22
可以的。我们新版本的接口可以使用密钥签名。具体请看我们官网的手册。
mary 2019-01-22 11:17:04
调用超级modelapi 返回结果为html内容,按照文档加了t=json这个参数,但是返回仍然是h5内容,这个问题是什么原因? 非常感谢
王春生 2019-01-23 11:06:10
要先登录的。
水岸 2018-11-30 10:42:45
您好,请问如何获取禅道提供的RestAPi 的完整列表呢,如果一项一项点然后做统计工作量有点大,是否有外部调用Api的文档呢(类似功能,接口(出入参)的对照表)
水岸 2018-11-30 10:45:09
我并不是java开发对php不是很了解,是否有易于理解的可供远程调用的API文档呢
王春生 2018-12-03 13:35:16
后台,二次开发。
2018-10-14 17:31:41
你好
我用python requests去创建用户,用的/zentao/user-create-36.json?account=testuser&password=123456,返回了成功,但是没有加上,请问下,是哪里还有问题?
王春生 2018-10-16 09:24:32
使用POST方式。
liu 2018-10-24 16:52:31
我是post请求的,requests.post('http://xxxx/zentao/user-create-3.json?account=testuser&password=123456&realname=testuser',auth=('user','password')) 还是无法创建
王春生 2018-10-25 14:56:48
post请求的表单不是这样创建的。
1/4
发表评论
评论通过审核后显示。