Web 服务在当今的网页开发世界中成为了一种必需。它有助于为网站增加其他维度的力量,例如:新的网站可以将其文章以 API 的形式出售给其他开发者,他们也可以使用 Joomla! API 来构建一个移动应用程序,用于他们的新闻和文章,帮助他们触及更多观众。
由于 Joomla! 是世界上最有名的 CMS 之一,有数百万个网站都在使用它,因此让 Joomla! 拥有为网站所有者提供 API 的能力将是非常好的。
关于我们
我们是 Mohamed Karam 和 Altay Adademir,我们共同在 Joomla! 的核心中添加对 web服务的支持。以下是我们的一些信息。
Mohamed Karam
我是 Mohamed Karam,来自埃及艾因沙姆斯大学计算机与系统工程系的一名大四学生。我高中的时候开始写代码,使用 PHP。我还在大学学习了 C++,用于解决问题(没有真正的比赛,只是为了乐趣)我还知道 python 和 Django。我对机器学习感兴趣,尤其是自然语言处理。
我去年参与了 Joomla! 的 Google Summer of Code,这是我在 Joomla! 的第二年。
Altay Adademir
我是来自英国南安普顿大学的一名大三软件工程学生。我从很小的时候就对编程感兴趣,并从 2013 年起对面向对象的网页开发产生了兴趣。我也熟悉 Java、Java FX 和 Python。这是我在 Joomla! 和 Google Summer of Code 的第一年。
项目描述
本项目旨在为 Joomla! 4 提供一个 REST 接口。正如导师们讨论的那样,这将是一个独立运行的 web 应用程序,与 Joomla! CMS 扩展集成。这个应用程序将使用 Joomla! 框架 v2 构建,因为这也是一个强大开源框架,由 Joomla! 项目开发和维护。此外,即将发布的 Joomla! 4 也是使用 Joomla! 框架 v2 构建的。
我们将应用程序视为两部分:请求处理和响应处理。请求将由应用程序路由器进行路由,以到达相应的组件并检索与用户请求相关的数据。响应是当组件从路由器接收到请求时,它将运行其逻辑来响应该请求,然后将响应序列化以符合REST规范。我们计划实施JSON API标准作为响应格式。更多详细信息可以在jsonapi.org找到。
那么,现在让我们看看最终用户可以从这个项目中获得什么。
这个项目的用户可以是API消费者,如前端开发者、移动开发者,或者在某个时刻可能是数据分析师或Joomla!组件开发者,他们希望他们的组件拥有REST接口。所有这些类型的用户都必须发现项目的终端易于理解和使用。
对于组件开发者,该项目为他们提供了路由和序列化。路由是组件REST API的入口点,例如,'com_content'的API是
- /api 文章
- 列出文章 (/api/v1/articles)
- 单一文章 (/api/articles/v1/999)
- 获取文章 (GET请求)
- 创建文章 (POST请求)
- 更新文章 (POST请求)
- 删除文章 (DELETE请求)
而序列化是将数据转换成将要发送给消费客户端的形状。组件开发者将使用我们项目中的序列化器来序列化数据。在这个项目中,我们将实现简单的序列化。实体访问级别 - 从模型的getItem()进行序列化,并且为了进一步的开发将实现完整的序列化。
对于API消费者,这个项目的影响不会像对组件开发者那样强烈,但该项目是关于Joomla的Web服务基础设施,所以组件中的任何API都将按照此项目的设计。