一个模式是元数据,告诉我们我们的数据结构如何。大多数数据库实现某种形式的模式,使我们能够以更结构化的方式推理我们的数据。 WordPress REST API使用JSON模式来处理其数据的结构化。您可以在不使用架构的情况下实现端点,但是您会错过很多事情。你最好决定什么适合你。
JSON Schema
首先让我们来谈谈JSON。 JSON是类似于JavaScript对象的人类可读数据格式。 JSON代表JavaScript对象表示法。 JSON越来越受欢迎,似乎正在冒着数据结构的世界。 WordPress REST API使用JSON的特殊规范称为JSON模式。要了解有关JSON模式的更多信息,请查看JSON Schema网站,这更容易理解JSON Schema的介绍。模式为我们带来了许多好处:改进的测试,可发现性和整体更好的结构。我们来看一下JSON的数据块。
一个JSON解析器会经历这些数据没有问题,不会抱怨任何事情,因为它是有效的JSON。 客户端和服务器什么也不知道数据,期望他们只看到JSON。 通过实现模式,我们实际上可以简化我们的代码库。 模式将有助于更好地构建我们的数据,因此我们的应用程序可以更容易地理解我们与WordPress REST API的交互。 WordPress REST API不会强制您使用模式,但它是鼓励的。 模式数据包含在API中有两种方式: 我们注册参数的资源和模式的模式。
资源架构
资源的模式指示特定对象存在哪些字段。 当我们注册我们的路由时,我们也可以指定路由的资源模式。 我们来看看一个简单的注释模式在JSON模式的PHP表示中可能是什么样的。
如果您注意到,每个注释资源现在都符合我们指定的模式。我们将此开关置于prefix_rest_prepare_comment()中。通过为我们的资源创建模式,我们现在可以通过进行OPTIONS请求查看此模式。为什么这很有用?如果我们想要其他语言(例如JavaScript)来解释我们的数据并验证来自我们的端点的数据,JavaScript将需要知道我们的数据结构。当我们提供模式时,我们为其他作者和我们自己打开门,以一致的方式建立在我们的端点之上。
模式提供机器可读数据,所以潜在的任何可以读取JSON的内容都可以了解它正在查看什么样的数据。当我们通过向https://ourawesomesite.com/wp-json/发出GET请求来查看API索引时,我们返回了API的模式,使其他人能够编写客户端库来解释我们的数据。读取模式数据的这个过程被称为发现。当我们为资源提供架构时,我们可以通过OPTIONS请求发现该资源到该路由。公开资源模式只是我们模式难题的一部分。我们也想为我们注册的参数使用模式。
参数模式
当我们注册一个端点的请求参数时,我们还可以使用JSON Schema来提供有关参数应该是什么的数据。这使我们能够编写可以在我们的端点扩展时重用的验证库。模式是更多的工作,但是如果你要编写一个可以增长的生产应用程序,你应该考虑使用模式。我们来看一个使用参数模式和验证的例子。
在上面的例子中,我们已经使用'my-arg'名称进行了抽象。我们可以为任何其他参数使用这些验证和清理函数,这些参数应该是我们指定的模式的字符串。随着您的代码库和端点的增长,架构将有助于保持代码轻量级和可维护性。没有模式,你可以验证和消毒,但是更难以跟踪哪些功能应该验证什么。通过向请求参数添加模式,我们还可以将我们的参数模式公开给客户端,因此验证库可以被构建为客户端,可以通过防止无效请求被发送到API来帮助执行性能。
注意:如果您对使用模式感到不舒服,仍然可以对每个参数进行验证/消毒回调,在某些情况下,做出自定义验证将是最有意义的。
概述
模式在点上可能看起来很愚蠢,可能是不必要的工作,但是如果您想要可维护,可发现和易于扩展的端点,则必须使用模式。模式还有助于自我记录人类和计算机的端点!