一致的基础架构
REST API一致且易于阅读。它是自我记录。
GET wp-json/wp/v2/posts
很清楚它的作用。这GET
是一些帖子。
您有一个名称空间:wp
,一个版本: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只是一种访问 REST API 的技术。以前,您必须想出一堆抽象的ajax函数名称,例如:
get_price_for_lineitem( $order, $line )
。那将只是返回一个数字还是一个JSON对象?我不确定文件在哪里。哦...是ajax电话get_order_line_price
或get_lineitem_price
。
开发人员不必做出这些决定,因为在创建自己的端点时,现有的wp-json
api提供了一个很好的基础模型。当然,插件或api开发人员可以违反这些规则,但是通常来说,遵循已经设置的标准会更容易,并且大多数开发人员宁愿遵循已经设置的模式(请参阅现在的jQuery模式如何普及)。
没有分心的抽象
我是否在乎POST /wp-json/mysite/v1/widgets title=Foobar
工作原理?不。我只想创建一个新Widget
的ID,然后返回ID。我想从前端的表单中完成此操作,而无需刷新页面。如果我向URL发出请求,则不管它是PHP,C#,ASP.NET还是任何其他技术。我只想创建一个新的小部件。
REST API将后端与前端解耦。从技术上讲,如果您的API足够好,则可以更改整个后端堆栈。只要您维护相同的REST API结构,任何依赖于API的内容都不会受到影响。
如果您的REST API简单且足够一致,则使用一个名词(如Widgets
对象的集合)和名词/标识符(如Widget/2
指示单个实体),以一种与众不同的技术来编写该API或多或少是基本的数据库工作,这真的很简单码。
使用标准HTTP请求动词。
REST API充分利用了网络工作原理的核心,以及您使用的VERB(映射为action)映射到标准数据CRUD函数。
CREATE : POST
READ : GET
UPDATE : PUT/PATCH
DELETE : DELETE
HTTP动词更多,但这是基础。互联网上的每个请求都使用这些动词。REST API位于基于请求构建Web的模型的顶部。两者之间不需要任何通信层或抽象模型。这只是对URL的标准http请求,它返回响应。您不能比这更简单。
从本质上讲,它使开发人员更清楚地了解网络的实际工作原理,并且当您进一步了解底层协议的工作原理时,最终会生产出更高效,更好的产品。