api机制简介

2014-09-01 18:20:22
王春生
72876
最后编辑:朱金勇 于 2023-03-20 08:58:03
分享链接
摘要: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调用方法暂时只有禅道项目管理软件实现。蝉知门户和然之协同暂时还没有实现。


注意:本文档是针对禅道16.5版本之前的zentaoPHP框架,禅道最新版本的二次开发文档请参照新版:
https://devel.easycorp.cn/book/extension-new/intro-52.html

评论列表
茶茶 2023-06-27 11:43:54
你好,请问我postman请求 http://xxx/zentao/?m=project&f=all&t=json 接口,为什么得到的是html文本代码,
我的配置文件 my.php 也增加了 $config->features->apiGetModel = true;
王春生 2023-06-27 16:42:56
联系我们的技术支持同事,加我们qq群讨论吧。
茶茶 2023-06-27 10:46:56
你好,我们是 禅道专业版 9.0.3,想通过API创建项目,后台二次开发API文档中,只找到了 GET/POST /zentao/project-create-[productID]-[projectID]-[copyProjectID]-[planID]-[confirm].json 这个好像无法创建项目,而且我们API的超级model调用接口的方式,也无法使用
2022-08-23 15:51:03
请问12.0版本的禅道支持超级model调用接口吗
王春生 2022-08-25 13:28:38
支持。
Jake 2022-02-23 17:46:54
你好,登录过程有demo吗?
爱德华 2021-12-31 13:56:53
我在采用超级api删除用户时,明明删除成功,数据库中deleted已经变成1,但接口返回的status却是fail
王春生 2021-12-31 16:07:02
用的是超级model接口吗?可能是我们没有处理这种情况。
禅道开发 2021-12-31 18:12:21
多谢您的反馈,问题已修复,下个版本会更新。
您可以修改framework/model.class.php的delete方法,强制返回true来临时解决这个问题。
2021-12-04 16:27:59
二次开发中的API机制和语雀中的禅道API(https://www.yuque.com/jinyong-sfqfa/qc179b/xyhg4m)是什么关系?
王春生 2021-12-08 08:37:27
是我们新版本内置的api。
2021-12-20 16:57:04
您好,请问这个新的api 在哪个版本可以测试,以及如何进行测试,期待您的回答
二次开发中的API机制和语雀中的禅道API(https://www.yuque.com/jinyong-sfqfa/qc179b/xyhg4m)是什么关系?
王春生 2021-12-21 08:54:04
最新的16.0.beta1就可以了。
李先生 2021-10-12 15:25:50
您好,我新开发的Model不需要登录就能访问,这块在哪里设置了呀?
王春生 2021-10-18 10:45:32
common模块里面设置open method。
受不了先生 2021-09-16 15:26:12
为什么有的的获取是self.host + '/zentao/api-getsessionid.json'格式,有的是http://bug.soulapp-inc.cn/index.php?m=api&f=getSessionID&t=json,为什么这么多样式?第一种我根本调不通啊?
王春生 2021-09-20 08:35:23
看你调用的入口地址是什么。
dongyanfei 2021-07-08 11:14:27
你好,为什么没有禅道用例相关接口呢?我现在有个需求需要调用禅道获取用例列表接口,请问 这个接口从哪可以拿到呢?望回复,谢谢
2021-06-01 15:11:30
请问可以提供java调用的demo么。
1/7
发表评论
评论通过审核后显示。