Joomla Web 服务 API 101 - 令牌、测试和体验
Joomla 4 的新 Web 服务 API 将让您能够为 Joomla 创建一系列新的集成。
Joomla 4 的新特性之一是 Web 服务 API。Web 服务 API 为您提供了一个更干净的方式,让您的网站通过 API 与其他网站进行通信。这种灵活性将带给 Joomla 网站的是您的想象力所能及的。
- 使用 Web 服务 API 在网络中的各种网站之间共享文章和内容。例如,您可能是一位网站实施者,您可以使用 Web 服务 API 创建自己的自定义帮助页面,并将其推送到所有客户网站。
- 您可以使用 Web 服务 API 将您的网站连接到第三方数据源,例如具有自己 API 的企业目录,然后使用 Joomla Web 服务 API 从目录的 API 中填充您的文章。
- 您可以使用 Web 服务 API 管理您网站网络上的横幅广告,并使用 Web 服务 API 将报告和发票直接集成到 Xero 中。
- 如果您对数据分发感兴趣,您可以使用 Web 服务 API 作为无头 CMS 的数据源。
- 在本年的 JandBeyond 上,Carlos Cámara 的演示中包括了 Web 服务。他的一部分课程是对如何使用 Joomla 4 Web 服务 API 和 Flutter 创建移动应用的一个演示。
- 进一步跳出思维定式,您可以使用 Web 服务 API 管理一系列物联网设备。一个简单的例子是,当有人向您的网站提交文章时,您可以设置您的互联网连接灯改变颜色。
- 伦敦 Joomla 用户组在他们的 6 月会议上进行了一次非常深入的讲解。您可以在 YouTube 上观看他们的 代码伴随研讨会(链接将研讨会从开始处启动),其中他们演示了如何将 Joomla 3 和 Joomla 4 网站之间的文章推送到和拉取。
在本文中,我们将向您介绍一些关于在 Joomla 4 中设置您需要使用 Web 服务 API 的关键提示。
我们的文章系列将继续每两个月更新一次,直到2021年,探讨一些更详细的示例,展示您如何使用Joomla Web服务API。如果您有关于如何使用Web服务API的文章想法,我们很乐意撰写关于这方面的内容,请与我们联系。
Web服务API端点
Joomla核心API端点的列表涵盖了Joomla的所有主要核心功能。当您滚动浏览端点时,您可以了解如何创建API调用,以利用Joomla数据并以各种方式返回信息。
除非指定为公开URL,否则每个URL都需要身份验证。在Joomla 4.0.0中,默认API应用程序需要超级用户Joomla API令牌(因为API应用程序是全新的)。随着API的稳定和社区的良好测试,这可能将得到放宽。
新的Web服务插件类型也将允许开发人员扩展他们的扩展,使其也通过Joomla 4 Web服务API可用。如何在Joomla文档中(这里)使用Weblinks组件进行示例。
超级用户Joomla API令牌
随着Joomla 4的成熟,Joomla 4 Web服务API将不断发展,但目前访问仅限于使用超级用户账户的集成。
要获取您的Joomla API令牌以使用Web服务API
- 登录您的Joomla 4管理后端
- 转到用户菜单(屏幕右上角)
- 选择编辑账户
- 点击Joomla API令牌标签
在这里,您可以复制您的令牌,以及启用或禁用令牌,如果需要撤销访问和生成新令牌,可以重置它。请注意,如果您选择重置令牌,您已使用该令牌的任何地方将不再工作,直到您更新令牌到新值。
您还可以通过“用户”>“管理”编辑您的令牌。虽然您无法看到除自己以外的用户的令牌,但您仍然可以启用、禁用或重置它们的令牌。例如,当怀疑他们的令牌已泄露给未经授权的人员时。
在本文的下个部分中设置Postman时,您需要您的Joomla API令牌,因此您现在可以复制它,或者保持标签页打开,以便在设置Postman中的身份验证时返回。
测试Web服务API端点
在实际实施中,API端点通常在服务器级别使用CURL调用,或嵌入到其他编程调用中。但当构建启用Web服务的工具时,能够开始测试您期望看到的数据是API请求实际提取的信息是件好事。
要测试Web服务API端点,您可以使用一系列工具。
- CURL允许您使用命令行测试API调用。
- 您还可以使用PHP Storm等工具,这些工具允许您测试RESTful Web服务。
- 还有一个名为Postman的工具可用,专门设计用于测试API。
Postman是我们要向您展示如何使用的工具,这得益于Alexandre Elise对编译GitHub上的Joomla 4 API端点Postman集合的工作。这个方便的JSON文件涵盖了所有当前的端点,并且随着时间的推移,随着更多端点的可用而增长。
- 首先,您需要下载并安装Postman。
- 接下来,您需要从GitHub下载Joomla 4 API端点Postman集合,其中包含有关将集合导入Postman的步骤说明。
- 安装完组件后,编辑设置并在授权标签页粘贴您的Joomla API令牌。
- 接下来,前往变量标签页,将base_path变量更新为指向您的Joomla 4网站。
- 最后,使用其中一个GET端点测试您的端点是否连接到您的网站。
如果您得到一个有效结果,您就可以开始使用Postman构建自己的查询来测试API了!如果您收到一个禁止错误消息,您可能需要进一步检查您的设置,特别是授权标签页中的API令牌,它需要将键值设置为X-Joomla-Token。
品尝测试
现在您已经配置了Postman,Web服务API有多个层次。我们不会在这里深入讲解Postman的使用,他们有一个学习中心来帮助您。
在像Joomla Web服务API这样的RESTful服务中,在运行命令时通常使用5种HTTP方法。以下是一些您可能如何使用每种方法的示例。
POST - 使用目标端点创建新的记录
- 使用API创建新文章或类别
- 在广告管理工具中创建新记录时创建新的横幅广告
- 创建新的模板样式
- 在网站上创建新用户
为了使POST方法有效,您还需要提供包含您要提交到数据库的信息的JSON字符串。这将是未来JCM文章的焦点。
GET - 使用特定端点从Joomla网站获取数据
- 查询网站上的文章列表
- 查询网站上的特定文章
- 查询网站上使用的标签列表
- 查询网站上的重定向列表
- 在查询中添加变量可以使您将端点请求聚焦于特定记录。例如,在文章端点中添加值以替换{{article_id}},将仅返回单个文章的信息,而不是整个文章列表。
GET方法在Postman中测试起来最容易,因为它们从端点检索数据,然后您可以在Postman中查看返回结果的JSON数据。
PUT - 将数据放回端点
PUT方法是破坏性的,它通过用新记录替换数据库中的记录来更新记录。目前,Joomla 4 Web服务API没有PUT端点,而是选择使用PATCH来更新和修改记录。
PATCH - 通过端点修改数据
- 当广告管理工具需要暂停广告时,使用PATCH修改横幅记录以更改完成发布日期或发布状态。
- 当用户在人力资源系统中更改了角色时,使用PATCH修改用户的记录以动态更新他们的ACL。
- 修改菜单项以修改它们的属性
- 修改语言覆盖以定制网站访问者的季节性问候
PATCH端点比PUT端点更灵活。对于PUT,需要将整个记录重写到数据库,而对于PATCH端点,您可以更新记录中的特定字段。
DELETE - 使用端点删除数据
- 当联系人离开公司时删除联系人
- 当不再需要时删除语言覆盖
- 删除模板样式
- 删除不再需要的标签
DELETE端点是需要谨慎使用的,因为它们会从您的数据库中删除数据!如果您想将文章移动到回收站,请使用PATCH端点。
考虑到这5种HTTP方法,现在您可以查看111个可用的端点(截至出版时),看看哪些可以用于您自己的项目。如果您想出了什么巧妙的点子,请在下方评论,也许我们可以在未来的Joomla社区杂志文章中分享您使用新的Joomla 4 Web Services API所做的事情。
资源
如果您想尽快开始,这里有一些资源可以帮助您
翻译
土耳其语:Joomla! Web Hizmetleri API 101 - Belirteçler, Test ve Tat Testi
发表在Joomla社区杂志上的一些文章代表了作者在特定主题上的个人观点或经验,可能不代表Joomla项目的官方立场
通过接受,您将访问 https://magazine.joomla.net.cn/ 外部的第三方服务提供的服务
评论 7
早上好,
我正在尝试找出这个Web服务API的查询参数在哪里。
我已经使用了端点来获取所有文章或通过ID获取一篇文章,但是,我不明白如何获取,例如,所有标题包含一个单词的文章或属于一个类别的所有文章。
我能在哪里找到这些信息?
感谢您的帮助。
Ignacio
ignacio
通过API进行搜索目前不是一个已实施的功能。所以我认为您目前无法使用API命令来提取匹配范围。这是一个好主意,我会将它转交给Joomla增强团队——这可能是一个未来的Google Summer of Code项目,或者可能是其他开发者想要追求的项目。
查看文档,我目前也无法清楚地看到是否可以通过指定类别来检索文章列表。您可能需要使用Postman进行实验并查看当前的API代码。它可能还需要进一步的开发……以及文档。
你好,Patrick,谢谢你回答。
不,不是这样的,我不能通过指定类别获取文章列表。我所做的是,首先获取所有文章,然后使用TypeScript过滤出匹配我感兴趣的类别ID的文章……这个ID是从像这样的URI中获取的
https://idi.es/#/empresa-clusters/74
但是,遗憾的是,这因为响应时间而变成了一个糟糕的用户体验。
感谢您的帮助。
我已经按照本指南的所有步骤进行,但在尝试其中一个GET端点时,答案是
找不到视图 [名称,类型,前缀]:banners, html, api(端点 http://mysite/api/index.php/v1/banners)
Federico,
URL中的“mysite”要么是你更新了以隐藏域名,要么是问题的原因,因为它不是网站地址。
我会在Postman中测试一切,以确保你得到正确的响应。
如果你仍然有问题,请访问https://joomla.stackexchange.com 和 https://forum.joomla.org 寻求更多帮助。
感谢您的回复,问题是插件引起的。暂停插件后API恢复正常
嗨,能否使用API从特定类别检索新闻?