9分钟阅读时间 (1764 字)

Joomla Web 服务 API 101 - 令牌、测试和体验

August-API

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 4 API Web服务

法语:Joomla 4:使用Web服务和API

土耳其语:Joomla! Web Hizmetleri API 101 - Belirteçler, Test ve Tat Testi

 

发表在Joomla社区杂志上的一些文章代表了作者在特定主题上的个人观点或经验,可能不代表Joomla项目的官方立场

1
认识一位Joomler:David Jardin
Joomla扩展:在哪里找到它们?
 

评论 7

已经注册了吗? 点击登录
ignacio 在 2022年8月11日星期四 08:03
端点查询参数?

早上好,

我正在尝试找出这个Web服务API的查询参数在哪里。

我已经使用了端点来获取所有文章或通过ID获取一篇文章,但是,我不明白如何获取,例如,所有标题包含一个单词的文章或属于一个类别的所有文章。

我能在哪里找到这些信息?

感谢您的帮助。

Ignacio

0
早上好,我正在尝试找出这个Web服务API的查询参数在哪里。我已经使用了端点来获取[b]所有文章[/b]或[b]通过ID获取一篇文章[/b],但是,我不明白如何获取,例如,所有标题包含一个[i]单词[/i]的文章或属于一个[i]类别[/i]的所有文章。我在哪里能找到这些信息?感谢您的帮助,Ignacio。
Patrick Jackson 在 2022年9月28日星期三 06:50
作者回复

ignacio

通过API进行搜索目前不是一个已实施的功能。所以我认为您目前无法使用API命令来提取匹配范围。这是一个好主意,我会将它转交给Joomla增强团队——这可能是一个未来的Google Summer of Code项目,或者可能是其他开发者想要追求的项目。

查看文档,我目前也无法清楚地看到是否可以通过指定类别来检索文章列表。您可能需要使用Postman进行实验并查看当前的API代码。它可能还需要进一步的开发……以及文档。

0
ignacio:通过API进行搜索目前不是一个已实施的功能。所以我认为您目前无法使用API命令来提取匹配范围。这是一个好主意,我会将它转交给Joomla增强团队——这可能是一个未来的Google Summer of Code项目,或者可能是其他开发者想要追求的项目。查看文档,我目前也无法清楚地看到是否可以通过指定类别来检索文章列表。您可能需要使用Postman进行实验并查看当前的API代码。它可能还需要进一步的开发……以及文档。
ignacio 在 2022年9月28日星期三 12:26
只能检索类别

你好,Patrick,谢谢你回答。

不,不是这样的,我不能通过指定类别获取文章列表。我所做的是,首先获取所有文章,然后使用TypeScript过滤出匹配我感兴趣的类别ID的文章……这个ID是从像这样的URI中获取的

https://idi.es/#/empresa-clusters/74

但是,遗憾的是,这因为响应时间而变成了一个糟糕的用户体验。

感谢您的帮助。

0
您好,帕特里克,感谢您的回复。不,我没有通过指定类别获得文章列表。我这样做,首先获取所有文章,然后使用TypeScript过滤出与我感兴趣的类别ID匹配的文章...这个ID是从如下URI中获取的:https://idi.es/#/empresa-clusters/[b]74[/b],但遗憾的是,由于响应时间,这给用户带来了不好的体验。感谢您的帮助。
Federico Masci 在 2022年9月19日星期一 14:28
访问端点时出现RuntimeException

我已经按照本指南的所有步骤进行,但在尝试其中一个GET端点时,答案是

找不到视图 [名称,类型,前缀]:banners, html, api(端点 http://mysite/api/index.php/v1/banners

0
我已经按照本指南的所有步骤进行,但在尝试其中一个GET端点时,答案是:找不到视图 [名称,类型,前缀]:banners, html, api(端点 http://mysite/api/index.php/v1/banners)
Patrick Jackson 在 2022年9月28日星期三 07:07
作者回复

Federico,

URL中的“mysite”要么是你更新了以隐藏域名,要么是问题的原因,因为它不是网站地址。

我会在Postman中测试一切,以确保你得到正确的响应。

如果你仍然有问题,请访问https://joomla.stackexchange.comhttps://forum.joomla.org 寻求更多帮助。

0
Federico,"mysite"在URL中要么是你更新了以隐藏域名,要么是问题的原因,因为它不是网站地址。我会在Postman中测试一切,以确保你得到正确的响应。如果你仍然有问题,请访问 https://joomla.stackexchange.com 和 https://forum.joomla.org 寻求更多帮助。
Federico Masci 在 2022年9月28日星期三 08:02
访问端点时出现RuntimeException

感谢您的回复,问题是插件引起的。暂停插件后API恢复正常

0
感谢您的回复,问题是插件引起的。暂停插件后API恢复正常
Federico Masci 在 2022年9月30日星期五 09:47
文章端点

嗨,能否使用API从特定类别检索新闻?

0
嗨,能否使用API从特定类别检索新闻?

通过接受,您将访问 https://magazine.joomla.net.cn/ 外部的第三方服务提供的服务