WooCommerce REST API 教程 wordpress rest api详解
自2003年成立以来,WordPress已从仅博客平台发展为功能完善的内容管理系统。随着WordPress中增加了许多新功能,REST API即将成为最新的功能之一,REST API允许其他应用程序和平台与WordPress进行交互。 这是一项革命性的功能,它将帮助开发人员使用WordPress构建自定义应用程序和集成系统。 由于它提供了从任何其他客户端或站点添加和检索内容的功能,而无需在该站点上安装WordPress,因此它允许WordPress与任何编程语言或平台一起使用。
在开始本主题之前,让我们简要了解一下什么是REST体系结构,并熟悉其通用术语。
REST是一种架构样式,可帮助创建和组织分布式系统。 它将Web描述为分布式超媒体应用程序,其链接的数据资源通过交换数据资源状态的表示进行通信。
在谈论WordPress时,这些资源是离散的实体,例如帖子,页面,评论,用户和自定义帖子类型等。为了与资源进行交互,使用了URI (统一资源标识符),顾名思义,它是一个标识符。资源。
RESTful服务将URI作为解决基础资源的主要方式。 这些资源可能有几个 表示 。 例如,图像文件可能以.JPG,.GIF或.PNG格式提供。 资源和URI之间的关系是一对多的。 URI只能指向一个特定的资源,但一个资源可能具有多个URI。
WP REST API当前支持的所有资源的列表如下:
- 帖子
- 页数
- 媒体
- 自定义帖子类型
- 发布元
- 修订版
- 注释
- 条款
- 用户数
我们可以使用HTTP动词对这些资源执行不同的操作。
HTTP动词
REST API基本上允许使用HTTP对资源执行CRUD(创建读取更新删除)操作。 为此,REST使用有限的一组HTTP请求动词,如下所示:
- GET :用于读取或检索资源
- POST :用于创建新资源
- PUT :用于更新资源
- DELETE :用于删除资源
- HEAD :用于检查资源是否存在而不返回其表示形式
- 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服务还提供了两个动词OPTIONS和HEAD 。 当客户需要检查系统上有哪些可用资源以及它们支持哪些操作时,这些动词会派上用场,从而为客户提供了一种自我记录的方式,可以使客户进一步探索系统并执行操作。 在本教程的后面,我们将看到这两种方法的实际应用。
有关路由和端点的更多信息
请注意,在上面的第一个示例中,我们使用了以下端点 :
GET wp/v2/posts
端点是可以通过API使用的功能,它们执行多种操作,例如检索帖子(我们在上面已经做过),创建新用户或更新帖子元。 或者,我们可以说端点触发了执行特定任务的方法。 这些端点取决于与它们关联的HTTP动词。 在上面的示例中,我们使用GET动词检索所有帖子。
上述端点的路由如下:
wp/v2/posts
路由基本上是访问端点的名称。 路由可以具有基于HTTP动词的多个端点。 因此,上述路线具有以下端点来创建新帖子:
POST wp/v2/posts
当使用提供的参数触发时,此端点将创建一个新的post实体。
考虑以下路线:
wp/v2/posts/100
此路由指向ID为100的Post实体。它具有以下三个端点:
- GET wp/v2/posts/100 :可用于检索ID为100的帖子。它将触发get_item()方法。
- PUT wp/v2/posts/100 :可用于更新ID为100的帖子。它将触发update_item()方法。
- 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 :当发送带有一些缺失或无效参数的请求时,它会从服务器返回。 通常返回以响应POST或PUT请求。
- 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等)集成
- 以及更多…
它确实打开了一个无限可能的新世界,其中唯一的极限就是一个人的想象力。