REST API purpose?

时间:2016-03-02 作者:N00b

首先,我知道这是目前的一个插件,但无论如何,它肯定几乎是WordPress的一部分。所以我希望这不会被标记为偏离主题。

我读了他们的官方文件,很多其他文章,还看了教程视频,但我仍然没有得到一些要点。。这无疑是WordPress的未来,它对于移动应用程序开发和在不同站点之间使用/共享数据非常方便,但:what does it do for my site only?

<小时>

Consider this:

我目前正在处理评论。我希望仅当用户滚动到comment section时加载comment section(偏移量为-200px,这样就不会有延迟)。

当用户滚动到该点时,我将触发ajax调用,ajax调用会发送一些数据,如post_id etc运行WP_Comment_Query() 在服务器中发送JSON 使用JavaScript将带有注释关系、名称、内容等的数据返回给客户端document.createElement(), innerHTML etc立即创建和输出评论。。Why would I use REST API instead? 这对我有什么用?只是未来证明?

我仍然需要使用JavaScript来输出我得到的所有数据。。我没有找到any 好文章为什么或者为什么我应该使用REST API(除了站点和移动应用程序开发之间的数据传输)。。

7 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

在目前的状态下,它是一个设计糟糕的特性,对于有能力的开发人员来说没有任何真正的优势。

在撰写此答案时,基本思想是将WordPress核心功能公开为JSON REST API。这将实现WordPress“业务”逻辑与UI的解耦,并允许创建不同的完整或部分UI来管理和提取WordPress中的信息。这本身不是一场革命,而是一场进化。只是XML-RPC API的一个替代品,它本身就简化了基于HTTP的提交API。

就像任何进化一样,在每一步中,你可能会问自己,你从前一种状态中得到了什么好处,答案可能是“不多”,但希望这些步骤确实累积到一个很大的差异。

那么为什么这个答案的前言是否定的呢?因为我作为软件开发人员的经验是,如果没有具体的用例来回答,就很难设计出真正有用的通用API。这里有一个具体的用例,可以替代XML-RPC API进行自动wordpress管理,但任何与前端相关的都必须是特定于站点的,而且由于从客户端发送到服务器的每个请求都会带来巨大的性能损失,所以您不能仅仅聚合使用不同的API,以获得用户满意的结果。这意味着对于前端来说,对于非平凡的使用,使用AJAX路由和REST-API路由之间的开发工作差别仍然很小。

SO网友:Milo

两大优势是:

您(最终)可以在没有管理界面的情况下完成所有管理任务关于您的示例-

替换步骤3和;4使用REST API,并将步骤1、2和5替换为主干。js。BOOM,动态web应用程序。或者,您可以更轻松地使用Python完成站点所需的复杂路由。

SO网友:Colt McCormack

嗯,实际上有几件事。

它允许您根据需要运行特定功能,而不需要整个页面加载的所有计算。因此,只需调用API端点并更新页面上的数据,就可以以相当低的开销定期更新注释,而无需页面刷新。这一概念最终将被推广到SPA(单页应用程序)中,SPA可以一次快速加载“客户端”站点,并模拟所有页面的“更改”,而无需每次重新提取页面的HTML。随着Angular、Ember和React等框架的出现,这已经非常流行。站点可能会以极快的速度做出响应,同时将一些计算能力转移给最终用户(渲染周期、非业务逻辑),并显著减少对服务器的调用总数(只提取您需要的数据,而不是每次都重新加载所有数据)。

它将业务逻辑和渲染器分离开来。是的,您可以将该API与另一个PHP站点一起使用,或者像您提到的那样使用Javascript进行处理,但您也可以将其与本机移动应用程序、桌面应用程序等一起使用。不仅如此,您还可以让每个应用程序中的一个都与相同的API进行通信,这些API始终执行相同的业务逻辑,这反过来又在使用API的各种客户端之间创建了一致性和可靠性。

API很好,因为它们将逻辑和显示分离开来。

SO网友:Jeremy Ross

WordPress REST API是新的热点。对于单页js驱动的应用程序,WordPress希望成为一个应用程序平台,这很有意义。计划是用REST API替换XML-RPC(仅出于安全原因,这是一件好事!)

https://make.wordpress.org/core/2015/09/21/wp-rest-api-merge-proposal/

<《纽约时报》的新网站就建在它上面,apparently.wp-cli)
SO网友:Divyanshu Jimmy

First things first - REST is lightweight

总之,当我们使用REST API时,我们在客户端进行所有数据渲染(循环、条件和服务器端调用等),节省了带宽,同时我们的应用程序可以用于任何移动平台、第三方集成和模块化(前端和服务器端之间的分离)。

你不想要这个吗?

SO网友:Nick F

除了@Milo提到的两个要点之外,我还专门使用restapi向非WordPress应用程序公开我的数据。我们有一个Chrome扩展,可以从WordPress数据库中提取信息,这是通过使用POST请求访问RESTAPI端点来实现的。

SO网友:Armstrongest

一致的基础架构REST API是一致的,可读性强。这是自我记录。

GET wp-json/wp/v2/posts 非常清楚它的作用。信息技术GET这是一些帖子。

您有一个命名空间:wp, a版本:v2 和对象集合posts

你能猜到什么吗:GET wp-json/wp/v2/posts/5 做怎么样:GET wp-json/wp/v2/posts/5/comments怎么样:GET wp-json/shop/v2/orders/345/lines/11/price

开发人员可以很容易地猜测,这将得到线路的价格11 已订购345 即使没有阅读文档。开发人员甚至可以很容易地判断出它来自shop 插件,因为它是命名空间。

怎么样POST /wp-json/v2/posts title=New Blog Post怎么样PUT /wp-json/v2/posts title=New Title

这也很清楚。这是一个新的帖子。顺便说一下,它返回新帖子的ID。这与AJAX或REST API无关。AJAX只是一种技术accesses REST API。然而,在此之前,您必须提出一系列抽象的ajax函数名,如:get_price_for_lineitem( $order, $line ). 这将只返回一个数字,还是一个JSON对象?我不确定,文件在哪里。哦是ajax调用get_order_line_priceget_lineitem_price.

开发人员不必做出这些决定,因为现有的wp-json api提供了良好的base model 创建自己的端点时遵循。当然,插件或api开发人员可以打破这些规则,但一般来说,遵循已经设置的标准更容易,大多数开发人员更愿意遵循已经设置的模式(看看jQuery模式现在有多普遍)。

没有分心的抽象POST /wp-json/mysite/v1/widgets title=Foobar 作品没有。我只想创建一个新的Widget 我想要身份证作为回报。我想在不刷新页面的情况下,从我前端的一个表单执行它。如果我请求一个URL,我不在乎它是PHP、C#、ASP。NET或任何其他技术。我只想创建一个新的小部件。

REST API将后端与前端分离。从技术上讲,如果您的API足够好,您可以更改整个后端堆栈。只要保持相同的REST API结构,依赖于该API的任何内容都不会受到影响。

如果您的REST API足够简单且一致,请使用Widgets 作为对象和名词/标识符的集合,如Widget/2 为了表示单个实体,用一种截然不同的技术编写该API非常简单,因为它或多或少是基本的数据库管道代码。

使用标准HTTP请求谓词

restapi利用了web工作方式的核心,以及您使用的映射到标准数据CRUD函数的动词(读:action)。

CREATE : POST
READ   : GET
UPDATE : PUT/PATCH
DELETE : DELETE
有更多的HTTP动词,但这些是基本的。互联网上的每个请求都使用这些动词。REST API位于web基于请求构建的模型的正上方。不需要任何通信层或两者之间的抽象模型。它只是对URL的标准http请求,并返回响应。你再简单不过了。

从本质上讲,它使开发人员更加了解web实际工作的细节,当您更接近于了解底层协议的工作方式时,您最终会开发出更高效、更好的产品。