玩转Joomla Web服务(API)- 第一部分
Joomla API是一个非常有趣的话题,因为它非常强大。
但是有很多东西要说,所以我建议开始一个新的文章系列。
在这个文章系列的结尾,你将能够直接从Google Sheets中利用Joomla API将你的文章及其自定义字段导入Joomla网站!
程序如下
JCM 2023年3月
1. 这篇演示是如何诞生的
2. 资源
3. 如何获取Joomla API令牌
JCM 2023年4月
4. 使用API创建、更新、获取和删除Joomla文章
JCM 2023年5月
5. 如何自动运行任何脚本
6. 成为唯一可以运行你的脚本的人
7. 如有必要,更改API令牌
JCM 2023年6月
8. 使用Joomla API直接从Google Sheets导入和更新文章
9. 故障排除
10. 最终技巧
1. 这篇文章是如何诞生的
已经有一些关于Joomla API的演示了。
它们肯定很有趣(展示Postman,解释如何创建与Joomla网站交互的智能手机应用程序等),但我总是有点沮丧,因为
- 这些会议的目标是开发者或已经与API打交道的个人
- 从来没有一个基本的示例或分步流程,允许“降低门槛”
这一切在2022年9月23日发生了变化,我有幸参加了JoomlaDay D-A-CH(汇聚几个德语国家,即德国、奥地利和瑞士)。特别是Peter Martin给出了一个精彩的“如何在Joomla网站中使用API?”(见下面的链接):在Peter的会议结束时,他会提供一些小的PHP脚本,展示如何创建或更新文章。
我向彼得询问他是否能分享他的脚本。他做得更好:有一个新的官方网站,名为Joomla! 程序员文档,其中包含关于Web服务的一页,彼得还在GitHub上提交了Pull Request,添加了示例(见下文)。
回到比利时后,我非常兴奋地想尝试这些示例。
然后我联系了来自马提尼克的热心于Joomla API的Alexandre Elisé,我们一起完善了这些示例。实际上
- 我对Joomla API的实际用例有一些想法
- 而Alexandre有将这些建议变成现实编码技能
因此,经过几周的不断迭代,我们最终得到了一系列“小”脚本。目标确实是
- 展示Joomla API能带来什么
- 提供短小且易于定制的脚本(我喜欢称之为“单页脚本”,因为实际上它们只有大约200到300行代码)
- 让脚本独立
- 不过,它们可以很容易地修改以使用Joomla框架…但那样它就会成为一个可安装的扩展,这超出了本指南的范围
- 独立脚本的优势是它甚至可以在另一台服务器上运行,由cron任务触发(来自您的服务器面板…或来自Joomla 4中引入的本地Joomla任务调度程序)
简而言之,这次演示的目的是让尽可能多的人开始使用Joomla API,与其他CMS相比,它提供了强大的竞争优势。
2. 资源
Peter Martin – “如何在您的Joomla网站上使用API?”于2022年11月23日的JoomlaDay D-A-CH
- https://dach.joomladay.org/programm-2022/programm-samstag-2022/how-to-use-apis-in-your-joomla-website
- https://www.youtube.com/watch?v=AXytRiEkjVc
- https://petermartin.nl/en/presentations/joomla/how-to-use-apis-in-your-joomla-website
- https://slides.db8.nl/md/22-joomla4-api.html
Alexandre Elisé
- Alexandre的博客:https://apiadept.com/blog-joomla-specialist
- Postman的API集合:https://github.com/alexandreelise/j4x-api-collection
- 展示Joomla API的脚本系列:https://github.com/alexandreelise/j4x-api-examples
当您访问https://github.com/alexandreelise/j4x-api-examples时,如果您欣赏Alexandre的脚本及贡献,请点击星号按钮:
Joomla! 程序员文档(建设中)
- https://manual.joomla.net.cn/docs/general-concept/webservices
- Peter Martin的PR:https://github.com/joomla/Manual/pull/41/commits/647588e4f90ee692b731cb468a3037eff4df24c1
- Alexandre Elisé对该内容的改进:https://github.com/alexandreelise/Manual/blob/patch-1/docs/general-concept/webservices.md
Joomla! 文档
- 向Joomla组件添加API https://docs.joomla.org/J4.x:Adding_an_API_to_a_Joomla_Component
3. 如何获取Joomla API令牌
在使用Joomla API(以及下面的任何脚本)之前,我们需要一个Joomla API令牌。
目前,Joomla API令牌只能为超级用户
生成。
因此,务必保密,因为任何以某种方式获取该令牌的人实际上都是一个超级用户
,可以在您的网站上做任何事情,包括删除所有内容。
注意:据我所知,在某个时候,允许非超级用户
访问API(如果您想给只想获取数据的第三方一个令牌,这是必要的)。
[编辑] 2022.11.25,Alexandre在Facebook上分享了以下额外信息
“您不需要是超级用户就可以访问Joomla API。例如,您可以创建一个Web服务用户组,进入全局配置,为该组分配API和网站登录权限以查看令牌。您还需要将您刚刚创建的Web服务组添加到令牌用户插件配置中允许的组列表中。但到目前为止,您仍然不能对每个端点有细粒度的ACL和访问级别。为了提高安全性,您还可以禁用敏感的Web服务插件,如用户Web服务插件,但这样使用令牌的应用程序就无法管理用户信息。我还没有尝试过,但我认为如果您给Web服务用户组指定特定权限,然后只将应用程序用户添加到此组,您就可以达到您想要的效果,即使它仍然不是按路由/端点来划分的。”
“刚刚在全新的joomla 4.2.5安装上进行了快速测试,您不需要是超级用户。而且,Joomla似乎已经可以按端点处理权限,但仅限于核心端点。至少这是我尝试的结果。这意味着如果您创建一个用于管理您的Joomla Web服务所有消费者的Web服务组,并拒绝为该用户组创建、修补、删除用户,那么尝试执行拒绝操作的应用程序/消费者将获得403禁止http状态码。”
无需超级用户即可使用Joomla API > 演示视频(18分钟)
3.1 创建新用户
实际上,您当然可以为您的账户创建一个Joomla API令牌。
但可能是一个好习惯,创建一个不同的用户
- 您可以在任何时候禁用它
- 您可以在用户操作日志中轻松地看到谁做了什么以及何时做的(以及是否是API或您自己)
3.2 给予强密码
3.3 分配到超级用户组
3.4 前往Joomla API令牌标签并读取
3.5 保存
现在,您已保存用户后,Joomla API令牌已创建……但由于安全原因,只有该用户才能看到它(任何人都不可以,甚至其他超级用户)。
3.6 以新用户身份登录并复制令牌
发表在Joomla社区杂志上的某些文章代表了作者在特定主题上的个人观点或经验,可能不符合Joomla项目的官方立场。
通过接受,您将访问由 https://magazine.joomla.net.cn/ 外部第三方提供的服务。
评论 1
标题中的某些东西让我感到困扰。更具体地说,标题中的“API”一词。这似乎是最近在提及Joomla!的Web Service(即REST API)时被滥用最多的术语。Joomla!API不仅支持Web服务,还包括更多内容。因此,我认为仅仅使用“API”一词有些令人困惑。但也许这只是我个人的看法,因为即使是受人尊敬的同事,在我提到Joomla!API时,似乎也感到困惑,他们认为我在谈论Web服务API。
除此之外,这是一篇很酷的文章