WordPress REST API:如何访问、使用和保护它(完整教程)

已发表: 2023-03-23

如果您打算成为一名 WordPress 开发人员,您会遇到一种叫做“REST API”的东西。 这是一个扩展 WordPress 功能的界面,使您能够将平台与其他应用程序连接起来。 一些开发人员发现它作为他们流程的一部分非常有用——尤其是当他们希望实现高级功能时。

幸运的是,您无需成为经验丰富的开发人员即可获得 WordPress REST API 的专业知识。 一旦您对界面及其工作原理有了深入的了解,您就可以轻松地将其应用到您的网站建设项目中。

在这篇文章中,我们将提供 WordPress REST API 的深入指南。 我们将讨论它是什么、如何使用它以及如何保护它免受威胁。 我们还将向您展示如何修复常见的 REST API 错误、如何将接口与其他框架一起使用,以及它与其他 WordPress API 解决方案的比较。 最后,我们将讨论一些常见问题。

什么是 WordPress REST API?

要了解 WordPress REST API,我们需要分解它的各个组件。 让我们从介绍 API 开始。

什么是 API?

应用程序编程接口 (API) 是一种使两个应用程序能够相互通信的程序。 它充当两个软件之间的中介,促进无缝协作。

例如,如果您想在您的网站上显示 Google 产品(如地图),则需要使用 Google Maps API。

谷歌云 API 库

这使您的 WordPress 站点能够与 Google 地图进行通信,因此它可以提取显示这些地图所需的所有相关数据和功能。

像 Google 一样,其他公司也有 API 并将它们提供给 Web 开发人员。 这些产品可能非常有吸引力,因为它们消除了从头开始编写功能(如地图)代码的需要。 相反,您可以使用第三方软件并通过 API 将其连接到您的站点。

什么是休息?

Representational State Transfer (REST) 是开发人员在创建 API 时必须遵循的一组准则。 因此,REST API 是根据这些标准构建的接口。

通常,REST API 遵循以下原则:

  • 客户端-服务器分离: API 应该使客户端(或网站)和服务器保持彼此分离,并继续彼此独立地运行。
  • 缓存: REST API 应尽可能使用可缓存数据,以提高性能并让网站知道哪些信息可以缓存。
  • 无状态: REST API 不能在其服务器上存储有关它们连接到的网站的任何信息,并且只应提供处理请求所需的信息。
  • 统一的接口:资源请求应该以相同的方式处理,无论其来源如何。
  • 分层架构: REST API 是围绕分层系统构建的,每一层都履行特定的角色,并且与其他层分开工作。 这使 API 更安全且更易于更新。

由于 REST API 符合这些标准,因此它可以提供更高的安全性和效率。

WordPress REST API 有什么作用?

WordPress 有自己的 REST API。 这使该平台能够与几乎所有其他 Web 应用程序和网站进行通信,无论它们使用何种编程语言。

使用此 API,第三方应用程序将能够访问您的 WordPress 数据库并从中提取数据。 事实上,大多数 WordPress 插件和主题都使用平台的 REST API 来正常运行。

WordPress REST API 在 4.7 版中作为核心软件的一部分发布。 在此之前,它只能作为插件使用。

虽然 WordPress 软件是用 PHP 构建的,但 REST API 以 JSON(JavaScript 对象表示法)对象的形式发送和接收数据,这为开发人员开辟了新的可能性。

最常见的 REST API 命令是什么?

REST API 旨在通过 HTML 命令接收和响应特定请求。

您将使用的最常见命令是:

  • GET:您可以使用此命令从服务器获取特定资源,例如帖子或数据。
  • POST:此命令允许您通过添加代码来修改服务器上的资源。
  • PUT:使用此命令,您可以编辑服务器上已有的资源。
  • DELETE:此命令从服务器中删除资源。

这些命令后跟一行,提供有关请求的更多信息。 这些被称为端点。

例如,如果您想检索您网站上已发布帖子的列表,您可以使用以下端点:

 GET http://mysite.com/wp-json/wp/v2/posts/?status=published

让我们看另一个例子。 如果要添加新页面,可以使用以下命令:

 POST http://mysite.com/wp-json/wp/v2/posts/page

使用这四个命令可以做很多事情。 您可以在 WordPress 开发人员资源页面上找到端点列表。

WordPress REST API 的真实示例

现在您对 WordPress REST API 的工作原理有了基本的了解,让我们从 WordPress.com 开始看一些现实生活中的例子。

WordPress.com 管理仪表板(称为“Calypso”)是通过 REST API 完全用 JavaScript 构建的。

WordPress Calypso 仪表板,使用 REST API

Calypso 是一款网络和桌面应用程序,用户可以使用它添加新内容、编辑现有帖子等。 它使用 REST API 访问 WordPress.com 网站上的数据。

另一个例子是块编辑器。 在自托管 WordPress 中,块编辑器使用 REST API 与您的数据库交互并创建块。

许多在线出版物,如今日美国,也使用 WordPress REST API。 这使他们能够自动在其他新闻应用程序(如 Apple News)上发布文章。

如何在 WordPress 中启用和禁用 REST API

您无需执行任何操作即可启用 REST API——它内置于 WordPress 中。 在帖子的后面,我们将向您展示如何访问它。

虽然 REST API 是使用 WordPress 构建应用程序的强大工具,但它会使您的站点容易受到分布式拒绝服务 (DDoS) 攻击和恶意软件的攻击。 此外,黑客可能能够通过与其他应用程序的连接来访问您的数据。

不建议禁用 WordPress REST API。 那是因为这样做会导致块编辑器和您网站上的任何插件出现问题。

如果您仍想继续并禁用它,最简单的方法是使用像 WPCode 这样的插件。

WP Code首页图片

在站点上安装并激活插件后,导航到 WordPress 仪表板中的代码片段 → 库

WP代码片段库

在这里,寻找一个名为Disable WordPress REST API的选项。 当您找到它时,将鼠标悬停在它上面并选择Use snippet

使用“禁用 REST API”片段

这将启动一个带有代码预览的页面。

编辑 WPCode 片段

如果向下滚动到“插入”框,则可以选择“自动插入”选项,以便插件自动将此代码应用到您的站点。

使用自动插入功能

然后,滚动回到顶部并将切换开关从Inactive移动到Active。 最后,单击更新以使这些更改生效。

如何使用 WordPress REST API

现在,让我们看看如何使用 WordPress REST API。 我们已经在上面介绍了一些示例,但在本节中,我们将向您展示如何访问和获取数据。

第 1 步:访问 REST API

如果您想从实时 WordPress 网站获取数据,您可以直接从浏览器访问 REST API。 您所要做的就是在搜索栏中输入以下地址(替换为您自己的域名和扩展名):

 mysite.com/wp-json/wp/v2

这将显示您的 WordPress 网站的 JSON 文件。

查看 REST API

然后,您可以向此 URL 添加元素以访问特定数据,我们将在下一步中向您展示。

第 2 步:向 REST API 发出请求

正如我们之前提到的,您可以使用端点访问站点上的特定数据。 如果您想检索所有帖子的列表,只需将端点/posts添加到您的地址:

 mysite.com/wp-json/wp/v2/posts

如果您想检索特定帖子,只需添加其 ID(您可以在 WordPress 仪表板的帖子页面上找到它):

 mysite.com/wp-json/wp/v2/posts/4567

同时,如果您想获取有关用户的数据,您可以使用以下请求:

 mysite.com/wp-json/wp/v2/users

这些只是简单的示例,但您可以做更多的事情。 例如,您可以获取包含特定术语的帖子,将帖子的状态从“草稿”更改为“发布”等等。

第 3 步:验证您的请求

WordPress REST API 使您能够在您的网站上获取任何类型的数据,但并非所有数据都是公开的。 在某些情况下,您需要验证您的请求。

要向 WordPress REST API 发出经过身份验证的请求,您首先需要获得一个 API 密钥。 为此,请导航到 WordPress 仪表板中的用户 → 配置文件

然后,向下滚动到“应用程序密码”部分。 在这里,您需要输入密码名称(供参考),然后单击“添加新应用程序密码”

在 WordPress 中创建应用程序密码

这将为您生成一个 API 密钥,您需要在请求中使用它。 例如,如果您的 API 密钥是“1234567890”,您可以将其包含在授权标头中,如下所示:

 https://mysite.com/wp-json/wp/v2/posts?Authorization=Bearer1234567890

请记住将代码 1234567890 替换为您复制的 API 密钥并删除所有空格。

您还可以检索特定作者撰写的帖子列表,以及他们的用户 ID。 您可以通过转到 WordPress 仪表板中的“用户”部分并单击作者姓名来找到他们的 ID。 该 ID 将显示在其作者页面的 URL 中。

假设作者的名字是“Joe”,他们的 ID 是“123”。 在这种情况下,您可以使用以下 URL 来检索 Joe 撰写的所有帖子的列表:

 https://mysite.com/wp-json/wp/v2/posts?author=123&Authorization=Bearer1234567890

如果您找不到用户的 ID,则他们的个人资料可能已被修改,以致于 ID 不再显示。 在这种情况下,您可以检索用户使用他们的登录名或电子邮件地址而不是 ID 撰写的所有帖子的列表。

为此,您必须在请求中使用“slug”参数而不是“author”参数:

 https://mysite.com/wp-json/wp/v2/posts?slug=joe&Authorization=Bearer1234567890

“slug”参数使您能够指定用户的登录名或电子邮件地址。 WordPress REST API 将返回用户撰写的所有帖子的列表。

何时使用 WordPress REST API

WordPress REST API 可用于范围广泛的项目。 这里有一些例子:

  • 将 WordPress 网站与移动应用程序集成。 如果你是开发者, 您可以使用 REST API 从移动应用程序检索和编辑 WordPress 网站上的数据。 这使您能够构建与您的站点交互的自定义​​应用程序。
  • 创建自定义集成。 使用 WordPress REST API,您可以创建与 CRM 工具等其他软件的自定义集成。
  • 构建自定义脚本。 您可以使用 REST API 自动执行 WordPress 网站上的某些任务,例如安排帖子或更新用户配置文件。

如您所见,REST API 使您能够将 WordPress 与在其他平台上构建的应用程序或网站集成。

何时使用 WordPress REST API

虽然 WordPress REST API 可以是一个强大的工具,但它可能并不总是适合您的项目。 让我们看看您可能不想使用它的几个原因。

您可能还记得,WordPress REST API 是使用 JavaScript 构建的。 因此,如果您正在开发不支持 JavaScript 的应用程序,那么如果您使用的是 REST API,则该应用程序将无法正常运行。

此外,基于 JavaScript 构建的应用程序可能不太容易访问。 例如,它呈现动态内容的方式可能与屏幕阅读器不兼容。 因此,它可能会使有视力障碍的用户无法访问您的内容。

如何保护 WordPress REST API 免受攻击

如前所述,使用 WordPress REST API 会使您的站点容易受到威胁。 API 充当两个平台之间的桥梁,黑客可能会通过此连接找到进入您网站的方法。

因此,在您开始使用 WordPress REST API 之前,创建 WordPress 站点的备份非常重要。 这样,如果出现问题,您可以恢复最新版本的内容。

此外,您需要确保已采取足够的安全措施。 这意味着使用 Jetpack Protect 之类的工具。

Jetpack Protect 主页

此插件附带安全功能,包括恶意软件扫描、漏洞扫描和 Web 应用程序防火墙 (WAF)。

此外,在使您的更改生效之前,最好在 WordPress 暂存站点上使用 REST API。 这样,如果您不小心破坏了您的网站,也不会影响前端的用户体验。

如何修复常见的 REST API 错误和问题

使用 WordPress REST API 时,您可能会遇到一些错误。 因此,让我们来看看一些最常见的问题以及您可以采取的解决这些问题的步骤。

缓慢的响应时间和超时

调用 WordPress REST API 时,您可能会遇到响应缓慢和超时的情况。 这些问题通常是由以下因素引起的:

  • 服务器资源不足。 您的服务器可能没有足够的资源来处理通过 REST API 发出的请求。 在这种情况下,您需要升级到更强大的 WordPress 托管计划。
  • 插件或主题冲突。 WordPress 插件和主题有时会与 REST API 发生冲突。 发生这种情况时,请尝试禁用所有插件并切换到默认主题以查看是否可以解决问题。 如果是这样,您可以一次重新激活一个插件以找出罪魁祸首。
  • 数据大小。 API 调用期间的大数据传输可能会导致超时。 为防止这种情况,您可以尝试减少每页显示的项目数量(我们将在后面的帖子中向您展示如何执行此操作)。
  • 数据库问题。 如果您的 WordPress 数据库未优化,则在调用 REST API 时可能会导致响应时间变慢和超时。 您可以通过删除不必要的数据并安装优化插件来优化它。

此外,您可能希望使用 Google Cloud 的操作套件(以前称为 Stackdriver)和 Microsoft 的 Application Insights 等工具来跟踪 API 的性能。 这些工具可以深入了解 WordPress REST API 的性能,并帮助您确定响应时间缓慢的原因。

调用 REST API 时出现 403 Forbidden 错误

403 Forbidden 错误是一个 HTTP 状态代码,表示客户端无权访问所请求的资源。 让我们看一下此错误的一些常见原因和可能的解决方案:

  • API 密钥不正确。 如果请求需要 API 密钥,请确保您使用的密钥有效并且在请求标头中正确传递。
  • 无效随机数。 “随机数”是使用一次的随机数,以防止请求伪造。 如果它无效,可能会导致 403 禁止错误。
  • 用户权限。 您还需要确保您拥有访问特定 API 端点的必要权限。 如果您不是该网站的所有者,您可能需要请求管理员授予您正确的权限。
  • 安全插件。 安全插件可以阻止 API 调用,因为它将其视为安全威胁。 您可以在插件设置中将 API 端点列入白名单以解决此类问题。
  • 防火墙。 您可能正在使用阻止 API 请求的防火墙。 确保防火墙设置正确,或尝试在使用 API 时将其禁用。
  • 服务器配置。 有些服务器未配置为处理某些 API 调用,因此您可能需要联系您的托管服务提供商寻求帮助。

您还可以使用浏览器的开发人员工具来检查网络请求和请求标头。 如果您使用 Chrome,只需按Ctrl+Shift+C即可打开 DevTools。

此外,您可以检查服务器日志以获取有关该错误的更多信息。 您应该能够通过您的托管帐户访问它们。 如果没有,您可以向您的托管服务提供商寻求帮助。

REST API 遇到意外结果

“REST API 遇到意外结果”错误是一个常见问题。 它通常是由以下因素引起的:

  • 权限。 您可能没有访问所请求资源的正确权限。 如果是这种情况,您需要联系该站点的管理员。
  • 网址配置问题。 如果 API 端点 URL 配置不正确,就会发生此错误。 仔细检查 URL 以确保它是正确的并且包含所有必要的查询参数。
  • 命令不正确。 您可能对请求使用了错误的命令(例如 GET、POST、PUT、DELETE)。 检查 API 文档以确保您对特定端点使用正确的命令。
  • 请求格式不正确。 确保您在请求中使用正确的格式。 在 WordPress REST API 中,数据必须以 JSON 格式发送。
  • 错误的端点。 您可能正在尝试调用不存在的端点。 在这种情况下,请仔细检查终结点 URL 以确保其正确无误。
  • 服务器端问题。 您的服务器可能遇到问题。 这在共享托管计划中更为常见。 如果您遇到这种情况,可能是时候升级到具有更多资源的服务器了。

您可能还想禁用插件以查看问题是否已解决。 如前所述,某些工具可能会导致与 WordPress REST API 的兼容性问题。

rest_api_init 不工作

“rest_api_init not working”错误是另一个常见的 WordPress REST API 错误。 一般是插件和主题冲突,以及服务器资源有限导致的。

尽管如此,还有其他因素可能导致 WordPress REST API 无法正常工作,例如:

  • 自定义 REST API 端点。 如果您使用自定义端点发出请求,请确保您使用的是正确的挂钩和函数。
  • .htaccess文件。 您可能需要检查您的.htaccess文件以确保其设置正确。
  • CORS 错误。 如果您尝试发出跨源请求 (CORS) 而 WordPress REST API 不工作,则可能是服务器未配置为接受它们。 您可能需要联系您的托管服务提供商以查看服务器是否接受 CORS。

此外,您可能正在使用不支持 API 的旧 WordPress 安装。 如果是这样,请务必升级到最新版本。

基本身份验证不起作用

尝试使用基本身份验证调用 WordPress REST API 时,可能会出现“基本身份验证不起作用”错误。 基本身份验证是一种内置于 HTTP 协议中的简单身份验证方案。 它使用用户名和密码来验证某人的身份。

以下是此错误的一些常见原因(以及解决方法):

  • 凭据不正确。 检查请求标头中的用户名和密码以确保它们正确无误。
  • 安全套接字层 (SSL) 问题。 确保您安装了有效的 SSL 证书并且配置正确。 如果不是,请查看我们的分步指南,了解如何获得免费且有效的 SSL 证书。
  • HTTP 到 HTTPS 重定向。 某些网站配置为将 HTTP 请求重定向到 HTTPS。 如果浏览器尝试在 HTTP 上进行身份验证,您可能会遇到此错误。 因此,您需要确保在 HTTPS 端点上运行请求。

与其他 REST API 问题一样,此错误也可能是由主题和插件冲突引起的。 再一次,您需要切换到默认主题并停用插件以解决问题。

如果这没有帮助,您可能需要暂时禁用防火墙。 这可能会阻止您的身份验证请求。

如果您正在制作 CORS,您的服务器可能未配置为接受它们。 值得与您的托管服务提供商联系,看看他们是否可以做些什么。

最后,如果您不是站点的管理员,您可能没有正确的权限或角色来完成请求。 在这种情况下,您需要联系网站所有者。

REST API 的高级用例

得益于 WordPress REST API,您可以使用流行的框架和其他编程语言从您的站点检索数据。 让我们看几个例子。

如何将 WordPress REST API 与 React 结合使用

React 是一个流行的 JavaScript 库,用于构建用户界面。 您可以使用 Node-WPAPI 客户端向 WordPress REST API 发出 HTTP 请求。

例如,要检索 WordPress 网站上的帖子列表,您需要在 Node-WPAPI 中输入以下内容:

 import WPAPI from 'wpapi'; const wp = new WPAPI({ endpoint: 'http://example.com/wp-json' }); wp.posts().then(posts => {  console.log(posts); });

有关将 WordPress REST API 与 React 结合使用的更多信息,您可以查看 Node-WPAPI 文档。

如何在 Angular 中使用 WP REST API

Angular 是一个用于开发 Web 应用程序的 JavaScript 框架。 要将它与 WordPress REST API 一起使用,您需要使用@angular/common/http模块。

例如,您可以输入以下代码来检索帖子列表:

 import { HttpClient } from '@angular/common/http'; @Injectable() export class PostService {  constructor(private http: HttpClient) {}  getPosts(): Observable<any> {    return this.http.get('http://mysite.com/wp-json/wp/v2/posts');  } }

您可以查看 Angular 文档,了解有关使用其 HttpClient 向 WordPress REST API 发出请求的更多信息。

如何通过 Python 使用 WordPress REST API

您还可以将 WordPress REST API 与 Python 结合使用。 这是一种流行的编程语言,可用于构建 Web 应用程序和其他软件。

首先,您需要使用Requests库。 如果您想获取您的 WordPress 帖子列表,您可以输入以下内容:

 import requests response = requests.get('http://example.com/wp-json/wp/v2/posts') posts = response.json() print(posts)

您可以阅读 Requests 库文档以获取更详细的说明。

REST API 与其他 WordPress API 解决方案相比如何?

您可能想知道 REST API 与其他 WordPress API 解决方案有何不同。 为了给您一个想法,我们将把它与一些最流行的替代方案进行比较。

WordPress REST API 与 AJAX

WordPress REST API 提供了一种访问 WordPress 数据的有效方法。 它使开发人员能够构建自定义应用程序并与 WordPress 集成。

同时,WordPress AJAX API 是访问 WordPress 数据的较旧方法。 它是在 WordPress 2.0 中引入的,使开发人员能够使用 JavaScript 从站点的前端发出异步请求。

WordPress AJAX API 在功能方面可能有些限制,因此不建议在复杂项目中使用。

WordPress REST API 与 WPGraphQL

WPGraphQL 是 WordPress 的 GraphQL 实现,它提供了一种访问 WordPress 数据的替代方法。 GraphQL 是一种用于 API 的查询语言。 它使客户能够准确地请求他们需要的数据,仅此而已。

与 WordPress REST API 不同,WPGraphQL 需要为每个需要访问的用户生成单独的应用程序密码。 另外,由于它使用更复杂的查询语言,它在传送内容时可能会有点慢。

WordPress REST API 与 XML-RPC

在 WordPress 1.5 中引入,WordPress XML-RPC API 使您能够使用 XML-RPC 协议向 WordPress 发出远程请求。

XML-RPC 简单轻量,因此可以更快地交付结果。 问题是,与 Ajax 一样,与 WordPress REST API 相比,它的功能有限。

有关 WordPress REST API 的常见问题

在本指南中,我们涵盖了有关 WordPress REST API 的大部分要点。 但是,为了以防万一,让我们看一下有关这个强大工具的一些常见问题。

WordPress REST API 有返回限制吗?

默认情况下,WordPress REST API 的最大返回限制为每页 100 个项目。 这意味着,如果您向返回项目列表(如帖子、页面或用户)的端点发出请求,API 将仅在响应中显示最多 100 个项目。

幸运的是,您可以使用“per_page”参数将限制增加到每页最多 500 个项目。

例如,如果您希望每页显示 200 个项目,则可以使用以下内容:

 https://mysite.com/wp-json/wp/v2/posts?per_page=200

请记住,您还可以减少每页显示的项目数。

我可以将 REST API 与 WooCommerce 一起使用吗?

WooCommerce 有自己的 REST API。 WooCommerce REST API 使您能够访问和修改 WooCommerce 商店中的数据。 这包括有关产品、订单和客户的信息。 此外,您可以使用 WooCommerce REST API 将 WooCommerce 与其他电子商务平台集成。

开始使用 WordPress REST API

WordPress REST API 使您能够将您的站点与其他应用程序和第三方工具集成。 Web 开发人员可以使用它来获取单页应用程序的数据,将 WordPress 连接到移动应用程序等等。

此外,您可以将 WordPress REST API 与其他框架和编程语言一起使用,包括 React、Angular 和 Python。 尽管 WordPress REST API 是一个强大且可靠的工具,但备份您的站点并使用安全工具来防止通过这些连接进行的攻击仍然很重要。

借助 Jetpack Protect,您可以保护 WordPress 站点免受恶意软件和黑客攻击,并在更安全的环境中使用 WordPress REST API。