WP REST API简介

自2003年成立以来,WordPress已从仅博客平台发展为功能完善的内容管理系统。 在过去的几年中,它已经足够成熟,可以满足绝大多数在线受众的需求,这就是它为当今超过20%的网络提供支持的原因。

随着WordPress中增加了许多新功能,REST API即将成为最新的功能之一,REST API允许其他应用程序和平台与WordPress进行交互。 这是一项革命性的功能,它将帮助开发人员使用WordPress构建自定义应用程序和集成系统。 由于它提供了从任何其他客户端或站点添加和检索内容的功能,而无需在该站点上安装WordPress,因此它允许WordPress与任何编程语言或平台一起使用。

在这个由多个部分组成的系列文章中,我们将研究WP REST API以及如何将其用于创建用户体验,而这些体验在其他情况下是不可能的,或者至少对于WordPress而言是困难的。 我们将首先研究包括REST和JSON在内的基本概念,然后探索可通过WP REST API提供给我们的选项。

以下是一些我发现对一些基本概念有用的资源,包括HTTP,REST和JSON。 我强烈建议您查看以下内容:

在开始本主题之前,让我们简要了解一下什么是REST体系结构,并熟悉其通用术语。

借助REST回到学校

首先的话题,让我们来看看REST(表象泰特小号 贸易交接)架构和它的一些最常见的概念。 在使用REST体系结构样式开发应用程序时,了解它们是必不可少的。

REST是一种架构样式,可帮助创建和组织分布式系统。 它将Web描述为分布式超媒体应用程序,其链接的资源通过交换资源状态的表示进行通信。

资源是REST体系结构的主要构建块。 实际上,就网络有时被称为“面向资源的”而言,它们是网络本身的主要构建块。

在谈论WordPress时,这些资源是离散的实体,例如帖子,页面,评论,用户和自定义帖子类型等。为了与资源进行交互,使用了URI (统一资源标识符),顾名思义,它是一个标识符。资源。

RESTful服务将URI作为解决基础资源的主要方式。 这些资源可能有几个 表示 。 例如,图像文件可能以.JPG,.GIF或.PNG格式提供。 资源和URI之间的关系是一对多的。 URI只能指向一个特定的资源,但一个资源可能具有多个URI。

WP REST API当前支持的所有资源的列表如下:

  • 帖子
  • 页数
  • 媒体
  • 自定义帖子类型
  • 发布元
  • 修订版
  • 注释
  • 条款
  • 用户数

我们可以使用HTTP动词对这些资源执行不同的操作。

HTTP动词

REST API基本上允许使用HTTP对资源执行CRUD(创建读取更新删除)操作。 为此,REST使用有限的一组HTTP请求动词,如下所示:

  1. GET :用于读取或检索资源
  2. POST :用于创建新资源
  3. PUT :用于更新资源
  4. DELETE :用于删除资源
  5. HEAD :用于检查资源是否存在而不返回其表示形式
  6. OPTIONS :用于检索资源支持的所有动词

在RESTful服务中,这些动词具有明确的含义。 上面列表中的前四个动词是CRUD操作的一部分,即它们检索,创建,更新和删除实体。 最后两个动词可帮助客户端确定资源是否存在以及可用于其执行进一步操作的HTTP动词。

GET请求检索信息并且是幂等的,即客户端可以多次调用它,但不会影响资源的状态。

要使用WP REST API获取所有帖子,我们使用以下端点

GET wp/v2/posts

上面的端点将返回一个集合 所有职位实体中。

触发以下端点时,它将返回特定实体,即id为100的帖子:

GET wp/v2/posts/100

POST请求创建一个新实体,而PUT请求将该实体替换为新版本。

以下POST请求可用于使用WP REST API创建新的帖子(沿着请求正文发送,我们将在本系列的后续部分中介绍):

POST wp/v2/posts

以下PUT请求将更新ID为100的帖子:

PUT wp/v2/posts/100

DELETE请求从系统中删除资源。 这种请求以及PUT请求是可重复的,这意味着调用这些方法将对系统产生相同的影响。 例如,如果您对资源多次调用PUT请求(使用相同的参数),则结果将相同。 对于DELETE请求也是如此。 多次删除资源将具有相同的效果,即资源将被删除(如果已删除资源,则将返回错误)。

除了这些CRUD操作外,RESTful服务还提供了两个动词OPTIONSHEAD 。 当客户需要检查系统上有哪些可用资源以及它们支持哪些操作时,这些动词会派上用场,从而为客户提供了一种自我记录的方式,可以使客户进一步探索系统并执行操作。 在本教程的后面,我们将看到这两种方法的实际应用。

有关路由和端点的更多信息

请注意,在上面的第一个示例中,我们使用了以下端点

GET wp/v2/posts

端点是可以通过API使用的功能,它们执行多种操作,例如检索帖子(我们在上面已经做过),创建新用户或更新帖子元。 或者,我们可以说端点触发了执行特定任务的方法。 这些端点取决于与它们关联的HTTP动词。 在上面的示例中,我们使用GET动词检索所有帖子。

上述端点的路由如下:

wp/v2/posts

路由基本上是访问端点的名称。 路由可以具有基于HTTP动词的多个端点。 因此,上述路线具有以下端点来创建新帖子:

POST wp/v2/posts

当使用提供的参数触发时,此端点将创建一个新的post实体。

考虑以下路线:

wp/v2/posts/100

此路由指向ID为100的Post实体。它具有以下三个端点:

  1. GET wp/v2/posts/100 :可用于检索ID为100的帖子。它将触发get_item()方法。
  2. PUT wp/v2/posts/100 :可用于更新ID为100的帖子。它将触发update_item()方法。
  3. DELETE wp/v2/posts/100 :删除ID为100的帖子。它触发delete_item()方法。

我们将在本系列的最后一部分中了解有关WP REST API的内部结构,类结构以及内部方法的更多信息。

现在,让我们重新了解一些常见的HTTP响应代码及其含义。

HTTP响应码

服务器通过返回包含HTTP状态代码的响应来响应请求。 这些代码是具有预定义含义的数字。 例如,使用Web的任何人都将熟悉404状态代码,该代码总结未找到用户正在寻找的资源。

服务器的响应还取决于我们在发送的请求中使用的HTTP动词或方法的类型,我们将在下面看到。

以下是一些常见的HTTP响应代码及其含义,在使用WP REST API及其含义时,我们将遇到它们:

  • 200 - OK :表示请求已成功完成,服务器已返回响应。 通常在成功的GET请求之后返回。
  • 201 - Created :通常在成功的POST请求后返回。 汇总资源已创建。
  • 400 - Bad Request :当发送带有一些缺失或无效参数的请求时,它会从服务器返回。 通常返回以响应POSTPUT请求。
  • 401 - Unauthorized :表示用户401 - Unauthorized执行某些操作。 例如,用户尝试在不提供身份验证凭据的情况下创建或删除资源。
  • 403 - Forbidden :表示服务器理解了请求,但由于身份验证而拒绝完成请求。 当用户提供身份验证凭据但它没有足够的权限执行操作时,就会发生这种情况。
  • 404 - Not Found :所有状态码中(最)著名。 汇总未找到用户正在寻找的资源。
  • 405 - Method not Allowed :意味着资源不支持请求中提供的HTTP动词。 一个示例可能是用户尝试更新只读资源。
  • 410 - Gone :表示资源已移动到另一个位置。 一个示例可能正在尝试删除已移至回收站的已删除资源。
  • 500 - Internal Server Error :当服务器遇到意外情况且未完成请求时,将返回此500 - Internal Server Error
  • 501 - Not Implemented :表示服务器不支持完成请求的功能。 通常在服务器收到无法识别的请求方法时发生。

在实际开始使用API​​时,我们将更仔细地研究这些HTTP动词和响应代码。 但在此之前,让我们看一下将REST API与WordPress结合使用的原因以及它为开发人员和用户提供的优势。 毕竟,在本系列文章中,我需要您真正有兴趣跟随我。

为什么要对WordPress使用JSON REST API?

REST和JSON共同提供了一种使用WordPress后端创建功能强大的应用程序的机制。 最主要的示例是需要在客户端(设备)和服务器之间交换数据的移动应用程序。 考虑到使用蜂窝数据时的带宽限制,JSON提供了基于XML的解决方案的轻量级替代方案。

由于JSON是用于存储数据的基于文本的格式,因此可以与大多数编程语言无缝地使用。 因此,当在不同平台之间交换数据时,JSON可以用作全局连接器,机器和人类都可以读取。

通过使用像正在讨论的那样的API,WordPress网站的内容不仅限于自身,还可以由其他网站和客户端访问。 由于API公开了内部功能的某些部分,因此远程客户端可以与您的站点进行交互以更新或创建新内容。 它还允许从现有的WordPress网站检索某些内容,并将其显示在其他网站上。

随着Angular,Backbone或Ember等客户端JavaScript框架的兴起,现在可以使用其中一种来创建丰富的用户体验,同时仍使用WordPress后端。

话虽如此,WP REST API的一些可能用例是:

  • 行动应用程式
  • WordPress的自定义管理面板
  • 单页应用程序(SPA)
  • 与其他服务器端平台(如Ruby,.NET和Django等)集成
  • 以及更多…

它确实打开了一个无限可能的新世界,其中唯一的极限就是一个人的想象力。

WordPress中JSON REST API的简短历史

在基于JSON的REST API之前,用于与WordPress进行远程交互的API是XML-RPC API ,它仍然是WordPress核心的一部分。 XML的问题在于,它不像JSON格式那样轻巧,并且其解析效率不高。 遍历XML同样令人头疼,而遍历JSON对象就像处理本机JavaScript对象一样容易。

首次为WordPress引入的REST API插件是JSON API ,该插件于2009年发布。它是在现代艺术博物馆为其Blog Inside / Out构建的。 该博客的前端由Ruby on Rails提供支持,因此为了从WordPress后端检索帖子并向WordPress后端添加注释,开发了一个API。 该插件提供用于检索内容并将评论提交到WP后端的接口。 尽管没有更新超过两年,但此插件仍存在于官方存储库中,可供您使用。

除了JSON API插件外,WordPress.com已经通过JetPack插件提供JSON API。

众所周知,WP REST API是一个功能插件,由Ryan McCue作为GsoC(Google Summer of Code)2013的一部分提出。它尚未(完全)包含在以后的版本的WordPress核心中。 该插件的当前2.0版处于beta状态,部分包含在4.4版的WordPress核心中。 这是由Ryan McCueRachel Baker领导的社区驱动的项目。 该插件的官方存储库页面位于GitHub上 ,其官方文档可在其网站上找到

WP REST API的当前状态

如上所述,WP REST API当前处于插件状态,并且正在GitHub上积极开发。 它已部分包含在4.4版的WordPress核心中,Ryan在WordPress.org上的合并提案中描述了该计划。

根据合并提案,WP REST API将分两个阶段合并到WP核心中,如下所述:

基础架构代码合并

根据该建议,在初始阶段,只有基础结构级别的代码将在4.4版中合并到WP核心中。 该基础结构代码是WP REST API的实际基础,因为它包括JSON序列化/反序列化,链接,嵌入以及最重要的-驱动API的路由层。 该代码不包括端点及其控制器类,但确实为在WordPress中构建API提供了基础。

在撰写本文时,此状态已完成,并且基础结构代码已在4.4版的WordPress核心中合并。

端点合并

帖子,页面,用户和分类法等的端点将合并在4.5版的WP核心中,即,晚于基础结构代码合并的一个版本。 端点使API对普通客户端有用。 它们包括很多复杂性,包括将JSON格式的外部数据映射到本机WordPress数据类型,反之亦然。 它们约占5500行,占API本身代码的三分之二。

这里的策略是通过首先在核心中提供基础结构代码来建立开发人员对API的信心。 这将允许主题和插件开发人员构建自定义API,以将其包含在他们的主题和插件中。 但是,由于在此阶段将不包括端点,因此最初将限制API的实用性。

两个版本之间的差距将使WP核心提交者团队有足够的时间来检查API端点。

WP REST API将带给WordPress社区的另一个优势是在版本控制项目中使用GitHub。 由于对WordPress的所有贡献都是通过SVN和Trac做出的,因此WP REST API团队非常有信心通过弥合Trac和GitHub之间的差距来改善贡献过程。

在将API合并为核心之后,我们希望看到其他领域的快速发展,包括OAuth 1.0a身份验证。

贸易工具

要开始使用WP REST API进行测试,我们需要一个HTTP客户端,该客户端将用于将请求发送到服务器并查看响应。 这实际上是您选择的问题,但是在本系列中,我将使用Postman for Google Chrome。 Postman的其他替代方法是:

Postman允许我们创建各种方法的快速HTTP请求,查看服务器的响应并测试身份验证的配置。 使用WP REST API时,所有这些功能都将非常方便。

我们需要在服务器上拥有的下一件事是WP-CLI。 使用WP-CLI,我们可以从控制台内远程管理WordPress安装,而无需打开浏览器窗口。 设置OAuth 1.0a身份验证时,我们将在本系列的下一部分中需要使用WP-CLI。 您可以在官方网站上找到安装说明。

除了HTTP客户端和WP-CLI,我们还需要用于WordPress安装的演示数据。 我建议检查主题单元测试 (XML)或演示数据创建器插件,该插件可创建多个帖子,页面和用户。

安装插件

在撰写本教程时,当前的稳定版本是1.2.2,可以在官方资料库中找到。 在本系列中,我们将使用2.0版,因为它是从头开始重新编写的,其中包含许多重大更改。 您可以从其官方插件页面GitHub存储库中获取版本2 beta。

请注意,强烈不建议在生产环境中安装当前的Beta。 我已经建立了本地WordPress环境,建议您这样做是出于开发和测试目的。

要从GitHub存储库安装插件,请打开终端并在进入/ wp-content / plugins /目录后拉出插件:

$ git pull https://github.com/WP-API/WP-API.git

该插件将下载到/ WP-API /目录中。

您可以从WordPress管理员激活它以继续对其进行测试。

为了使WP REST API插件正常工作,您需要使用WordPress启用漂亮的永久链接。 在这里假设您已经知道执行此基本操作。 如果您不这样做,则不必担心,因为WordPress.org 可以满足您的要求

评估API可用性

安装插件后,我们可以评估服务器上API的可用性。 我们不仅限于在我们的网站上使用该API,实际上,您可以在已安装并启用该API的任何网站上使用它。 要检查其他站点上的API,我们可以使用您的HTTP客户端,按照以下方式向该站点发送HEAD请求:

$ HEAD http://someothersite.com/

这将在响应标头中返回类似以下内容的内容:

响应头

Link标头指向WP API的根路由,在本例中为:

http://localserver/wordpress-api/wp-json/

也可以通过浏览器内JavaScript(或jQuery),通过查询DOM中的相应<link>元素来发现API,如下所示:

(function( $ ) {
    var $link = $( 'link[rel="https://github.com/WP-API/WP-API"]' );
	var api_root = $link.attr( 'href' );
})( jQuery );

从这里我们可以开始通过WP REST API从站点检索内容。 请注意,只有经过身份验证的请求才能编辑或更新网站上的内容,而我将保存本系列后面两部分中设置身份验证的主题。

接下来是什么?

在本系列的介绍性部分中,我们了解了很多有关REST体系结构,WP REST API和HTTP本身的知识。 我们首先看了一些基本概念,例如REST体系结构是什么,以及它如何帮助开发人员创建更好的应用程序。 然后,我们了解了HTTP,其动词和响应类型。 我们还查看了有关WordPress中的API的简短历史,以及WP REST API与之前的版本有何不同。

在本教程的最后部分,我们从GitHub安装了插件。 之后,我们熟悉了HEAD请求,该请求可用于确定我们的服务器以及其他服务器上API的可用性。

设置了基本的工作环境后,我们就可以使用WP REST API提供的功能了。 在本系列的下一部分中,我们将研究设置API支持的身份验证方法的方法。 发送请求以检索,创建,更新或删除内容时,将需要这些身份验证方法。 因此,请继续关注。


翻译自: https://code.tutsplus.com/tutorials/introducing-the-wp-rest-api--cms-24533

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值