如何使用Joomla构建RESTful API


11

自v1以来,我一直在构建Joomla扩展,但是我很快需要使自己构建并使用了一段时间的API生效。目前,我正在使用Joomla 2.5,并为此系统编写了插件:

https://github.com/techjoomla/com_api

在上线之前,我希望将来尽可能地对系统进行验证。该API组件直到最近才开始升级以与Joomla v3一起使用,因此目前阻止该网站升级。我还认为,将公共API和用户门户分开是有意义的,因为作为移动应用程序将使用API​​,因此将其作为集成扩展没有任何好处。

当前的计划是在子域上重建API,这将使我们能够升级用户门户。我一直在阅读有关新的Joomla框架的信息,该框架看起来很令人兴奋。这是否适合为我们的移动应用程序构建RESTful API?如果是这样,他们是否有入门提示?我读过FoF可用于构建API,这是一个不错的选择吗?我看到了Kickstarter项目打算完全构建这种API,这是一个潜在的选择吗?我应该只为子域剥离当前的2.5个站点,使其仅运行API吗?

对于构建用于移动交互的基于Joomla的RESTful API的最佳方法的任何建议,将不胜感激。


1
我刚看到的的Joomla扩展目录这种新的扩展,它可能会派上用场你:extensions.joomla.org/extensions/core-enhancements/libraries/...
Lodder

Answers:


8

根据我的经验:

关于Joomla框架

我试图为基于Joomla框架的集成身份验证构建一个简单的RESTful API。它非常复杂,与当前的Joomla API完全不同。同样,当前源代码无法复制粘贴,并且库可能返回意外结果(在不同环境中执行)。我将等到有更多代码可用,并且采用率更高为止。

关于FOF框架

我目前仅使用FOF进行开发。非常方便,大量RAD,自动配置等;并且代码与J2.5 / J3兼容。

对于RESTful API,您只需获取todo-fof-example,然后使用该API添加控制器。例:

public function getIndexStatus()
{
    // CSRF prevention
    if ($this->csrfProtection)
    {
        $this->_csrfProtection();
    }

    $message['status'] = true;
    $message['error_message'] = 'Status Ok';

    $message = json_encode($message);
    echo $message;
    flush();

    JFactory::getApplication()->close();

}

另外,您可以利用自动json视图的优势,例如浏览视图(default.php)可以生成json输出(只需添加default_json.phpecho json_encode...)


1
据我了解,FOF的唯一问题是Joomla核心中的开发人员不再支持它…尽管我知道FOF的一个版本已被重新分支并且正在开发中,只是不是Joomla的一部分?
克雷格

您是对的,但这根本不是问题。Joomla的FOF非常稳定(我尚未升级扩展程序)。新的F0F必须作为新的库安装(...最后,您必须始终将其安装在J2.5中...并且安装程序已准备好用于J3)。目前,有99%的源代码无法更改。
阿尼巴尔2014年

感谢您的建议,我同意Joomla框架非常复杂,但是我很喜欢学习如何使用它。我想尝试为我的API使用该框架,因为它非常简单,但无法使其返回JSON的正确标头。我提出了另一个问题
2014年

6

如果扩展本身不基于FOF / RAD,则com_api绝对是为您的站点构建REST服务的好方法。但是,如果您打算仅为API创建单独的Joomla实例,请多加注意

  • 特定于域的内容(例如:如果您支持用户注册,那么欢迎电子邮件中将包含指向API子域的链接)。可以通过使用PHP服务器变量来缓解这种情况。
  • 同样,除非您使用S3,否则图像路径等也必须正确

除此之外,我敢肯定不会有任何问题,因为直到有一种事实上的Joomla创建API的方式,问题才会继续发展。

免责声明:我是https://github.com/techjoomla/com_api的维护者


感谢您的回答,很高兴知道您正在继续开发它。我喜欢com_api的工作方式,但是我想尝试避免运行整个Joomla CMS只是为了提供一个API。如果我无法按需使用该框架,那么我一定会继续使用它。
乔P

1

我的两分钱:

对于客户,我需要通过智能手机应用程序访问其joomla网站的内容。内容放置在com_content中,因此最初我使用obRSS提要。然后我在JED上找到了jBackend并尝试了它。可在这里http://www.selfget.com/products/jbackend.html 该代码看起来非常干净,并且支持RESTful请求和JSON响应。联机文档数量有限,但对于技术人员来说足够清晰。不幸的是,目前它仅支持com_user和com_content,但就我而言,这很好。现在,我应该将其用于另一个使用K2 CCK的客户。我正在尝试构建一个自定义插件来访问K2文章和类别,但至少我将保存整个请求管理代码。我给开发人员发送了一封电子邮件,他告诉我他也在开发其他模块,例如K2和Kunena论坛,这是非常有希望的扩展。


1

以下站点似乎是有关如何构建RESTful JSON API指南的绝佳资源:

http://jsonapi.org/

对于它的价值,我还为Joomla 3.4.x启动了一个名为cAPI http://getcapi.org的API产品。

这里的主要区别是我将路由框架押在了Slim微框架上。这使我可以将一个已经尝试和测试的健壮框架合并到Joomla应用程序实例中。我还为服务路由创建了一个插件架构,从而为附加组件和Web服务安全打开了大门。

您可以在以下其他文章中找到更多信息:

/programming/26340885/rest-api-for-joomla-3-0/32706378#32706378

如果您有任何问题,请告诉我。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.