跳到主要内容

使用REST API提升您的WordPress工作流程

REST API

在过去的12年中,WordPress已经从一个小型项目发展成为一个强大的项目。从数百个中可以清楚地看出这一点WordPress主题WordPress教程现在可用。最近的研究估计,网络上几乎四分之一的可见网站都是由它提供支持的。然而,虽然WordPress一直在增长,但网站已经发展。

我们已经看到Web应用程序的兴起,这些应用程序采用简单的HTML页面,并通过复杂的JavaScript和API交互来增强它们。这使网站和软件远远超过仅仅发布到更具互动性的东西,使用网站作为完整平台。与此同时,WordPress一直在努力构建传统网站,但对于那些需要此功能的人来说,它没有标准选项。至少,直到现在。

+$For more APIs to explore, take a look at our guides to the best+$JavaScript APIs+$HTML APIsGoogle API

在过去三年中,一小组核心贡献者一直致力于解决这个问题:REST API(Wp-api.org)。该项目于2012年底开始,然后在2013年中期成为Google Summer of Code项目的正式项目。从那时起,该插件一直在由功能团队积极开发,有70多个贡献者。

REST API

可通过demo.wp-api.org获得带控制台的API演示

目前,API的核心已经集成到WordPress中,因此用户可以为插件和主题构建API。只需安装WordPress.org提供的功能插件,也可以使用API进行开发。这是WP开发新风格的一部分,其中的功能是作为可安装的插件开发的,因此您可以在发布之前试用它们。

为WordPress 4.5安排了完全集成,并将使API可用于每个站点。 REST API已经被生产网站广泛使用,包括Wired.com和纽约时报的实时博客平台。

设置好

虽然在撰写本文时尚未最终确定API,但我们今天可以开始构建它。因为它只是WordPress的常规插件,所以您可以按照与普通插件相同的安装过程进行操作。

要使用API的第2版,您需要下载插件

对于更高级的创建和更新步骤,您将需要基本Auth插件。你还需要确保你有很多永久链接 - 虽然没有它们可以使用API,但它会使事情变得复杂一些。

REST API

可以在浏览器中安装JSONView,以便更轻松地查看JSON数据

激活插件后,API将在您网站上的/ wp-json /处提供。例如,如果您的网站位于http://example.com/,则可以从http://example.com/wp-json/获取该API。如果您的网站位于http://example.org/foo/,则可以从http://example.org/foo/wp-json/获取该API。这被称为API根,我们将使用它很多,所以请记住它。

要在浏览器中查看,您可以安装JSONView,适用于Firefox和Chrome。这将允许您查看可用数据并单击API中的链接以查找可用的所有内容。

REST API

Postman是一个REST API客户端,旨在简化与API的交互。在这里,我们发送POST请求以创建新帖子

对于更高级的用途,邮差为Chrome要么Paw For Mac是功能齐全的API客户端,使您能够以更复杂的方式使用API。现在,我将使用JSONView来查看数据。

REST API

Paw是一个功能齐全的独立REST API客户端。它包括许多语言的代码生成

现在我们安装了API,我们已经准备好开始查看数据了。在API根目录,您将找到索引。这为您提供了有关站点和API本身的一些信息,包括可用的身份验证方法和插件API。

您还会注意到可用的“路线”列表。路由是用于通过API访问各种对象和集合(对象列表)的URL。这包括WordPress中的所有核心对象:帖子,评论,术语和用户。

我们来看看帖子路线。在索引中,您将看到名为/ wp / v2 / posts的路由。此路由是一个集合,它列出了一堆对象并包含指向各个项目的链接。 / wp / v2 / posts路线使您可以访问网站上的所有帖子。它还公开了过滤此功能以搜索和浏览网站上的所有帖子数据的功能。

这为您提供了通过API的WP_Query的灵活性,包括文本搜索,作者过滤以及按标签和类别查询。点击发布路线或转到API根目录后的/ wp / v2 / posts(例如,类似'example.com/wp-json/wp/v2/posts')。

你会发现自己在看这样的事情:

[{“id”:89,“date”:“2015-06-26T02:44:23”,“title”:{“render”:“Hello world!”,},“content”:{“render”: “ 

欢迎使用WordPress。 ...

“},...} {”id“:1,”date“:”2015-06-03T22:12:40“,...}]

这是您网站上各种帖子的JSON列表(用方括号表示,并用逗号分隔的项目)。默认情况下,项目数限制为10.每个帖子都是一个JSON对象(用大括号表示),提供有关其上可用的帖子和字段的数据。

这里的数据基本上是WordPress与对象相关的所有内容。对于帖子,这包括正常字段,如帖子标题和内容,发布日期和状态,自定义元和附加到帖子的标签。您还会看到指向/ wp / v2 / posts / 42的单个帖子的链接,其中42是帖子ID。

API返回的所有数据都遵循相同的模式。 WordPress对象由JSON对象表示。您可以通过单个链接直接访问这些链接(看起来像/ wp / v2 / / ),或者您可以访问他们所属的集合(这看起来像/ wp / v2 / )。单个链接始终是对象,集合始终是对象列表。

写网

REST API不仅仅是用于从WordPress中提取内容和数据。它还可用于编写新帖子或更新现有帖子。但是不要害怕,它实际上非常容易!

数据的输入格式与输出格式匹配,因此要更新帖子,您只需发回刚收到的确切数据,但要更改的任何字段都填充新数据。或者,如果您想保持简单,您可以只发回更改的字段。这个数据作为JSON对象发送,就像你收到它一样。

之前,当我们想要获取对象的数据时,我们在浏览器中访问它。在幕后,这涉及通过HTTP发送GET请求,要求服务器获取给定URL(资源)的数据。使用REST,我们使用POST进行创建,如果您编写过HTML表单,这将是您所熟悉的。为了更新,我们使用PUT,其工作方式与POST类似。

首先,我们将创建一个新帖子。为此,我们希望使用以下数据将POST请求发送到我们网站上的/ wp / v2 / posts:

{
"title": "Hello!",
"content": "Hi, this is my new post."
}

要实际创建它,我们还需要发送身份验证。最简单的方法是使用HTTP基本身份验证,它以纯文本形式传递您的用户名和密码。这不是最安全或最安全的身份验证方式,但它适用于开发(有关详细信息,请参阅第120页的boxout)。这不是内置于API中,因此您需要确保已激活Basic Auth插件。基本身份验证使用username:password作为字符串,然后在传入标头之前进行Base64编码。

这是我们的请求应该与标题和我们的身体一样:

POST / wp-json / wp / v2 / posts主持人:example.com授权:基本dXNlcm5hbWU6cGFzc3dvcmQ = {“title”:“你好!”,“内容”:“嗨,这是我的新帖子。”}

当我们将其发送到服务器时,我们应该返回一个看起来就像我们之前收到的帖子,包括发布日期,自动生成的摘录和作者数据。这应该会给你一个201 Created状态代码,加上一个Location标题,指示你可以访问帖子的位置(这是一个类似于http://example.com/wp-json/wp/v2/posts/42的URL )。

{“id”:42,“title”:{“render”:“ 

嗨,这是我的新帖子。

“,}”status“:”draft“,”date“:”2015-05-01T04:50:00“,...}

如果您检查网站管理员,现在应该会看到帖子已显示在信息中心内。恭喜!帖子附有一堆默认数据,如评论状态,自动生成的slug和粘滞状态。您会注意到该帖子默认也具有草稿状态,因此它不会在您的实际网站上显示。

让我们通过收看之前收到的帖子并发布它来解决这个问题。要做到这一点,我们需要更新我们刚刚获得的帖子。要更新项目,我们将向我们在Location标头中返回的URL发送PUT请求。我们只需要发送我们想要更改的数据,因此我们将status属性设置为“publish”。我们还需要发送身份验证以及请求。

PUT / wp-json / wp / v2 / posts / 42主持人:example.com授权:基本dXNlcm5hbWU6cGFzc3dvcmQ = {“status”:“publish”}

我们应该从服务器返回200 OK响应,表明帖子已成功更新。我们还会回复正文中的更新帖子,我们应该看到“状态”:“发布”。检查您的网站,您应该看到该帖子现已上线。好哇!

为了完成,让我们删除帖子以清理我们的测试。我们需要向同一个URL发送DELETE请求。我们将遵循与以前几乎相同的过程 - 我们仍然需要发送身份验证,但这次我们不需要发送任何额外的数据。

我们应该有一个如下所示的请求:

DELETE / wp-json / wp / v2 / posts / 42主机:example.com授权:基本dXNlcm5hbWU6cGFzc3dvcmQ =

我们现在应该看到帖子从我们网站上消失了。非常棒的工作 - 我们刚刚使用WordPress完成了完整的发布过程,并且都是通过REST API完成的。

建立插件

API也可以轻松地与基于WordPress的代码一起使用。如果您在站点上运行插件或主题,则可以轻松使用REST API。事实上,身份验证是通过WordPress的内置cookie身份验证系统自动处理的 - 您只需要传递额外的跨站点请求伪造令牌以及您的请求。

REST API插件还包括您可以使用的基于JavaScript的API。这包括从站点访问数据的方法,以及创建,更新和删除此数据的方法。所有这些都是通过Backbone支持的数据模型和集合实现的。

要使用API,您需要在主题或插件中排队脚本。只需调用wp_enqueue_script('wp-api')。让我们从之前的示例开始,首先访问帖子:

var posts = new wp.collections.Posts(); var post = posts.get(42);

要创建新帖子,我们使用类似的代码,但在JavaScript中:

var post = new wp.models.Post(); post.set('title','你好!'); post.set('内容','嗨,这是我的新帖!'); post.save();

我们刚刚复制了之前的创建过程,而不必担心身份验证或HTTP请求的复杂性。然后我们可以发布这个:

post.set('status','publish'); post.save();

下一步

REST API

完整文档可在v2.wp-api.org上获得,包括有关身份验证过程的指南

您刚刚学会了如何通过普通的HTTP API请求和JavaScript API与API进行交互。尽管如此,我们几乎没有触及API的可用表面。幸运的是,它包含有关可能的路线和方法的内置文档,以及可用的数据。花点时间从API根目录中的索引浏览API,并发现它们的内容。

REST API已经在4.4版本中集成到WordPress中,合并的最后阶段将在2016年初进行。欢迎评论项目愿景,错误报告和功能请求,因为我们在集成之前收集反馈。只需转到GitHub并在新的GitHub问题上留下反馈。

API能够改变和改进我们使用WordPress的方式。我们期待看到您现在和将来使用它构建的内容。快乐的黑客!

瑞安麦考

Ryan McCue是Human Made的高级工程师。本文最初发表于275期网络杂志

喜欢这个?阅读这些!



翻译字数超限