您提到您正在使用 Joomla 2.5(不再积极开发或支持)。如果您可以升级/迁移到 Joomla 3.4.x,那么您就有更多选择。
我最终为 Joomla 3.4.x 开发了一个 RESTful API,由 Slim PHP 微框架提供支持。请注意,这是一个商业 Joomla 软件包,因此,如果您对“免费”感兴趣,那么这不是它。
该套件包括以下内容:
服务控制面板组件
Joomla“服务”附加库,其中包括通过 Composer 获取的 Slim v2.6.2 版本(以及其他几个库),通常可以在供应商文件夹中找到。稍后会详细介绍这一点...
服务 Joomla 插件
服务 REST 插件
服务 Slim 配置插件
Slim JSON API 查看插件
Slim JSON API 中间件插件
您可能会问,“所有这些插件有什么意义?”
答案是,它允许对核心组件的功能进行划分,并为易于扩展的服务路由架构打开了大门。请注意,例如,可以使用 Joomla ACL 限制对这些新路由的访问来轻松添加新插件。
服务控制面板允许为每个用户创建令牌(甚至每个 Joomla 用户创建多个令牌)。它还允许最终用户配置 Slim 微框架参数,甚至包括 API 速率限制功能的阈值(当前基于每分钟请求)。实际上,该部分非常棒,因为它提供了有关响应标头中 API 速率阈值状态的实时反馈。
cAPI 核心包(“cAPI”,“Constant API”的缩写,因为一切都需要产品名称......)就是这样 - 一个核心包。目前有许多附加组件正在开发中,第一个是安全的 LDAP JSON API(连接到 Microsoft Active Directory),还有更多很酷的附加组件即将推出。
所有这一切的要点是,基本上,您的请求已得到答复,现在商业支持的解决方案终于到来了。另外,我没有重新发明轮子,而是基于流行的现有微框架(Slim)进行扩展,使开发人员更容易使用核心的可插拔框架或在其上进行开发。
因此,您可以充分利用 Joomla(强大的 ACL、高级插件架构、丰富的扩展)和 Sim(经过验证、符合标准、成熟的 RESTful PHP 微框架),所有这些都在一个易于安装的软件包中。
通过易于查询的 API 公开网站不应掉以轻心。我希望任何选择这样做的人都能实现 100% HTTPS 访问并强化其服务器的安全性。
您可以在这里找到更多信息:http://getcapi.org
希望这能让您朝着正确的方向前进。
服务端点和 CORS Ajax 调用
/api/v1/user/ - 可用于登录和注销用户,并在响应中返回激活的 Joomla 会话 - 这还提供多模式身份验证(通过标头中的令牌或 URL 字符串中的用户名和密码)。基本上,它可以满足您的需求。 - 您强制用户注销,如下所示:/api/v1/user/logout/username/joomlasessionid
基本上,这是为驱动远程服务或 iOS 或 Android 应用程序量身定制的。
/api/v1/content/ - 提供创建、检索和更新内容的基本能力 - 此功能虽然存在,但我会认为它正在积极开发中,并且随着时间的推移将变得更加强大。
我嵌入了一个示例 jQuery Ajax 语法,后跟可以显示输出的 div 容器的 html。请注意,标头行是可选的(取决于 API 的要求)。
jQuery('button').on('click', function() {
var requestUrl= "https://www.annatech.com/api/v1/slim/swagger";
var start = new Date().getTime();
jQuery.ajax({
url: requestUrl,
type: "GET",
success: function (resultData) {
totalTime = new Date().getTime() - start;
jQuery( "#title" ).empty();
jQuery( "#requestUrl" ).empty();
jQuery( "#totalTime" ).empty();
jQuery( "#output" ).empty();
jQuery( "#version" ).empty();
jQuery( "#output" ).append(resultData.info.description).html;
jQuery( "#version" ).append('Version '+resultData.info.version).html;
jQuery( "#title" ).append(resultData.info.title).html;
jQuery( "#requestUrl" ).append(requestUrl).html;
jQuery( "#totalTime" ).append(totalTime+ 'ms').html;
},
error: function (jqXHR, textStatus, errorThrown) {
alert('error');
},
timeout: 120000
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button>Send CORS</button>
<p>Request URL: <span id="requestUrl"></span></p>
<p>Response Time: <span id="totalTime"></span></p>
<h2><span id="title"></span></h2>
<h3><span id="version"></span></h3>
<div id="output"></div>
不用说,所有 cAPI Core 包的改进都包含在年度订阅费中。附加组件(将)单独计费和支持。
关于文档
请注意,该文档仍在开发中,但如果您想直接与我联系(或通过https://www.annatech.com/annatech-llc.html),我可以和你一起讨论细节。另外,我建议你看一下 Slim 微框架,这样你就可以了解基本的路由设计http://docs.slimframework.com.
如果您还有其他问题,请告诉我。