WordPress REST API快速入门指南

wordpress rest api精选

在过去的十年里,网络有了长足的发展,而WordPress则略微落后。越来越多的应用程序通过JavaScript被带到web上,越来越多的动态网站正在使用Python和Ruby等语言构建。

WordPress core的开发人员,甚至一些专业的WordPress开发人员,都觉得WordPress对PHP的过度依赖和对JavaScript的极少使用已经变得太过时了。这是WordPress REST API想要解决的问题。

这并不意味着WordPress正在远离PHP,但这确实意味着开发人员如果想利用这个API提供的功能,就应该考虑学习JavaScript。

什么是WordPress REST API?

RESTAPI不是一个新概念。事实上,RoyFielding在2000年定义了术语“代表性状态转移”,当时他用它来设计HTTP 1.1和统一的资源标识符,更广为人知的是“URI”

您可能已经知道,API是软件应用程序的结构,其中包含开发人员可以用来构建这些应用程序的工具和协议集。RESTAPI与之类似,只是它通过HTTP协议执行请求并接收响应。

常规API通常使用PHP、Python和Ruby来构建应用程序。你可以使用其他语言,但这些语言是最流行的。RESTAPI通过使用HTTP协议,使使用其他编程语言(如JavaScript)变得更容易。

WordPress REST API

我已经解释过,WordPress REST API更多的是为了让WordPress更接近web的其他部分,而不是为了摆脱PHP。它让开发人员更容易使用JSON和JavaScript等语言,这样WordPress就可以成为一个成熟的平台,能够用来构建比传统网站和博客多得多的内容。

以下是WordPress对在WordPress REST API中合并JSON的解释:

WordPress REST API为WordPress数据类型提供API端点,允许开发人员通过发送和接收JSON(JavaScript对象表示法)对象远程与站点交互。JSON是一种开放的标准数据格式,它轻量级且可读,看起来像JavaScript中的对象;因此得名。当您向API发送内容或向API发出请求时,响应将以JSON格式返回。这使开发人员能够从客户端JavaScript或外部应用程序(甚至是用PHP以外的语言编写的应用程序)创建、读取和更新WordPress内容。

它本质上是为了弥合构建在PHP WordPress核心和许多web应用程序当前使用的JavaScript之间的差距。WordPress REST API的基础设施于2015年12月在4.4版(代号“Clifford”)中添加到WordPress core中。您当时需要一个插件来使用REST API。然而,该API的其余部分,确切地说是内容端点,于2016年12月添加到WordPress core的4.7版(代号“Vaughan”)中,不再需要WP REST API插件。

WordPress REST API的工作原理

为了理解WordPress REST API是如何工作的,您需要了解HTTP请求和响应是如何工作的。当您在浏览器的地址栏中输入URL时,这是一个请求。当服务器显示该URL的网站或应用程序时,这是一个响应。

当您开始使用WordPress REST API时,您将看到几种不同类型的请求或“HTTP方法”。以下是web使用的四种主要HTTP方法:

  • 获取–用于从服务器检索数据
  • 发布–用于向服务器发送数据
  • 放置–用于更改或更新服务器上的数据
  • 删除–用于从服务器中删除数据

考虑到这些简单的定义,在浏览器中输入URL就是GET请求。输入网站的登录信息是一个POST请求。将当前密码更改为新密码是PUT请求,而终止帐户是DELETE请求。

您会注意到的其他术语是“路由”和“端点”路由通常是您试图访问的URL或URL的一部分,而端点通常是您从服务器收到的响应。

当外部源向承载WordPress站点的服务器发送HTTP请求时,REST API通过使用公共体系结构和自己的一组协议响应这些请求,以安全的方式公开您的数据。

这允许WordPress内容(如帖子、页面和评论)作为原始数据进行处理。我们马上就会看到这一点。总的来说,这是为了允许您在不访问WordPress管理区域的情况下更改站点内容。这就是如何使用JSON对站点进行更改的方法,JSON的响应为开发人员提供了许多与站点交互的不同方式。

让我们把手弄脏一点,看看这一切是怎么回事。

使用WordPress REST API

我们将讨论如何使用WordPress REST API,但不幸的是,我们需要先了解一些关键概念,以便一切都有意义。以下是构成此API的关键概念:

  • 管线和端点
  • 请求
  • 响应
  • 架构
  • 控制器类

让我们开始吧。

管线和端点

路由的技术定义是可以通过不同HTTP方法映射的URL。路由和HTTP方法之间的映射称为“端点”您可以访问WordPress REST API,并通过在URL末尾添加路由“/wp-json/”来查看站点可用的路由和端点。

你可以在WordPress上看到这一点。按访问组织https://www.wordpress.org/wp-json/:

WordPress WP Json

安装名为JSON查看器对于Chrome(可用于Firefox的JSON查看器在这里)要清理这个烂摊子:

WordPress WP Json清理

如果不使用漂亮的永久链接,请使用“?rest\u route=“而不是”wp json“。不管怎样,您在这里看到的是一个路由和端点的示例。“/wp json/”和“/?rest\u route=/”是路由。它们允许您通过GET-HTTP方法访问WordPress REST API。显示给您的WordPress REST API或数据(如果您愿意)是通过JSON响应提供给我们的端点。

请求

WordPress REST API使用名为WP\u REST\u Request的类处理请求。它是WordPress REST API基础结构中的一个主要类。它用于存储和检索所有请求的信息。

您可以使用我们讨论过的HTTP方法远程发送请求,也可以像通常通过PHP那样在内部发出请求。

响应

使用WP\u REST\u Response类处理响应。响应是您从请求中收到的数据,如前所述。API使用此类返回从端点发送的数据。它还可以返回错误。

架构

模式是WordPress REST API中的一个概念,用于多种用途。API模式定义端点可以使用的数据结构,它包含WordPress REST API可以返回的属性列表。它还包含API可以接受的参数,并通过验证API接收的请求为其提供安全性。

控制器类

WordPress REST API注册路由和端点,处理请求,利用模式定义它可以使用的数据和属性,并在此基础上生成API响应。API和作为开发人员的您需要一种方法来管理所有这些移动部件。这就是控制器类的用途。它们允许您收集所有这些元素,并将它们组织在一个地方。

使用WordPress REST API通过端点访问内容

路由是用于访问端点的URL,端点是从服务器收到的响应。如果您想通过WordPress REST API获取站点的帖子,请使用路径“/wp/v2/posts/”。WordPress解释说,这些较长的路由中不包括“/wp-json/”,因为它是“API本身的基本路径”最后的URL是“example.com/wp-json/wp/v2/posts”。

如果您想通过API访问特定帖子,只需将帖子的ID添加到URL的末尾,如下所示:“example.com/wp-json/wp/v2/posts/123”

如果要搜索使用特定短语或关键字的帖子,请使用以下路径:“/wp/v2/posts?=搜索”[在此处插入关键字]URL如下所示:“example.com/wp-json/wp/v2/posts?search”[在此处插入关键字].

如果要通过API访问特定用户的配置文件,请将“/用户/”以及该用户的用户ID添加到路由中。URL如下所示:“example.com/wp-json/wp/v2/users/2”。类似地,如果要访问站点的用户,请删除ID,使URL如下所示:“example.com/wp-json/wp/v2/users/”。

您可以查看更多端点在这里.

扩展REST API

我们将跳过几个步骤,学习如何使用REST API的属性来扩展它。在执行此操作之前,您应该了解全局参数、分页、链接和嵌入以及身份验证等方面的知识,但为了达到本快速入门指南的目的,我们将跳过前面的内容。

以下是通过扩展REST API可以完成的几件事:

  • 添加自定义端点
  • 为自定义帖子类型和自定义分类创建路由
  • 修改响应

如果您是一名经验丰富的开发人员,那么您可能已经熟悉了向RESTAPI添加自定义端点所需的概念。这只是学习如何将两者联系起来的问题。

首先,您将创建一个简单或复杂的函数,这取决于您试图添加到REST API的功能的复杂程度。以下是WordPress在其手册中提供的简单功能,该功能旨在通过作者获取网站最新帖子的标题:

$data['id',));if(空($posts)){return null;}return$posts[0]->post\u title;}

之后,您需要注册一个路由,通过使用另一个名为register\u rest\u route的函数,使此函数对API可用。WordPress使用以下函数为上一个函数注册路由:

\d+),array('methods'=>'GET','callback'=>'my\u awesome\u func',);});

这里发生了几件事。首先,有三个属性通过此函数。它们是名称空间(“myplugin/v1”)、我们需要注册的路径(“my\u awesome\u func”)和我们想要使用的选项(“author/(?P\d+)。register\u rest\u route函数也在名为“rest\u api\u init”的回调函数上调用。这减少了不使用API时执行的不必要工作的数量。

正如WordPress所解释的,这个路由被设计为匹配任何带有“/author/{id}”的内容,其中“{id}”是一个整数。这是您将访问以使用此路线的URL–http://example.com/wp-json/myplugin/v1/author/(?P\d+). 此特定路由使用一个端点,但路由可以具有多个端点。您可以看到,我们还定义了此端点将使用的HTTP方法。

您需要的其他概念

如果您想扩展REST API,还需要学习一些其他概念,前提是您还不熟悉这些概念。我们在上面的函数中使用了名称空间,这就是为什么上面URL的第一部分是“myplugin/v1”。它们用作前缀,以防止与自定义管线发生冲突。

参数是您应该熟悉的另一个概念,因为它们允许您在注册路由时通过注册它们来运行清理和验证。您还应该熟悉返回值,因为这是用于定义从服务器接收的响应类型的内容。您甚至可以使用它们返回错误,例如,如果作者没有发布任何帖子,就会显示404错误。

回调是您应该知道的另一个概念,例如称为权限回调的函数,它检查用户是否能够在函数尝试调用实际回调之前执行操作。最后,熟悉内部类和控制器模式将有助于管理所创建端点的各个方面。

最后的想法&从这里走到哪里

理解WordPress REST API的关键概念并学习如何使用和扩展它可能会让人不知所措,但WordPress的制造商们相当有信心,它将成为CMS发展所需的力量,远远超出其作为构建简单网站和博客的平台的能力。

正如前面所述,学习JavaScript应该是当务之急,因为这是WordPress的制作者希望开发人员在WordPress项目中经常使用的语言。

您还应该阅读WordPress REST API手册,以更好地了解WordPress对REST API的理解。这个使用REST API第节包含有关如何使用全局参数、分页、嵌入和链接以及身份验证的指南,这些都是此API的关键概念。

一旦你对所有这些都有了很好的理解,你就可以通过扩展REST API第节了解如何深入扩展API。您将了解有关添加自定义端点的更多信息,还将了解如何使用自定义内容类型和修改响应。