Heim >CMS-Tutorial >WordDrücken Sie >WP REST API zum Abrufen von Daten
Im vorherigen Teil dieser Serie haben wir untersucht, was die WP REST API ist und wie sie uns dabei helfen kann, mithilfe des WordPress-Backends bessere Anwendungen zu erstellen.
Wir haben uns dann zwei verschiedene Möglichkeiten angesehen, die Authentifizierung auf dem Server einzurichten, um authentifizierte Anfragen zu generieren. Die erste ist die Standardauthentifizierungsmethode, die in Entwicklungsumgebungen nützlich ist und ein schnelles Prototyping ermöglicht, da die Einrichtung nicht viel Zeit in Anspruch nimmt. Die erweiterte Authentifizierungsmethode ist OAuth 2.0, die für Produktionsumgebungen empfohlen wird, da sie viel sicherer ist als die Basisauthentifizierungsmethode.
Da wir nun wissen, wie man die Authentifizierung einrichtet, können wir authentifizierte Anfragen generieren, um die volle Leistungsfähigkeit der WP REST API freizuschalten. Aufgrund der Benutzerfreundlichkeit verwenden wir in dieser Serie die Standardauthentifizierung. Es wird jedoch empfohlen, für Ihre Produktionsserver die OAuth 2.0-Authentifizierung (bereitgestellt vom WordPress REST API-Authentifizierungs-Plugin) zu verwenden.
Das WordPress-REST-API-Authentifizierungs-Plugin erhöht die Sicherheit der WordPress-REST-API, indem es einen Authentifizierungsmechanismus hinzufügt, um den Zugriff auf API-Endpunkte zu kontrollieren. Es verfügt über einige Authentifizierungsmethoden:
Nachdem Sie die Authentifizierung eingerichtet haben, können Sie Zugriffskontrollregeln für verschiedene API-Endpunkte definieren. Sie können damit konfigurieren, welche Benutzer oder Rollen Zugriff auf bestimmte Endpunkte haben. Es bietet außerdem Optionen zum Einschränken des Zugriffs basierend auf Benutzerrollen, Funktionen oder bestimmten Benutzer-IDs.
In dieser aktuellen Folge der Serie werfen wir einen ersten praktischen Blick auf die WP REST API. Wir werden:
GET
Die Struktur der AnfrageOPTIONS
Anfragen zur Selbstdokumentation der API anLassen Sie uns also zunächst die Struktur einer einfachen GET
Anfrage analysieren.
GET
AnforderungsanalyseBevor wir uns mit den Details des Abrufens von Daten mithilfe der WP-REST-API befassen, müssen wir uns mit der Syntax der an den Server gesendeten Anfrage vertraut machen. Dies wird eine solide Grundlage für unsere zukünftigen Interaktionen mit der WP REST API bieten.
Betrachten Sie die folgende an den Server gesendete Anfrage:
$GET https://localserver/wp-json/wp/v2/posts
Der von uns gesendete Anfragetyp ist GET
— 我们在本系列的第一部分中介绍的六个 HTTP 动词之一。 GET
– eines der sechs HTTP-Verben, die wir im ersten Teil dieser Serie behandelt haben.
Unter Berücksichtigung des Anforderungs-URI können wir ihn in die folgenden Teile aufteilen:
https://localserver/
/wp-json
/wp
/v2
/posts
Namespace verhindert Überschreibungen, die beim Ausführen mehrerer Plugins auftreten können, und stellt jeweils eine eigene Abstraktionsschicht für die RESTful-API bereit. Daher arbeitet jede Abstraktion innerhalb ihrer eigenen Grenzen und hat keinen Einfluss auf Methoden und Eigenschaften, die zu anderen Abstraktionen gehören.
Zusätzlich zum Abrufen einer Sammlung von Ressourcen (Beiträgen) mithilfe des oben genannten URI können wir auch eine bestimmte Ressource abrufen, indem wir ihre ID angeben:
$GET /wp/v2/posts/100Die obige Anfrage gibt ein Post-Objekt zurück, da nach der Post-Ressource mit der ID 100 gesucht wird.
Normalerweise müssen wir auch nach Beiträgen suchen, die bestimmte Kriterien erfüllen. Beispielsweise können Sie Beiträge nach Kategorie filtern, wie im folgenden Codeausschnitt gezeigt.
$ GET /wp/v2/posts?categories=20,30
categories
Durch Absenden der obigen Anfrage können wir alle Beiträge abrufen, die zu den Kategorien mit der ID 20 und 30 gehören. Wie Sie sehen, können Sie im Parameter eine oder mehrere Kategorie-IDs übergeben und es sollten Beiträge zurückgegeben werden, denen bestimmte Begriffe innerhalb der Kategorieklassifizierung zugewiesen sind.
WP_Query()
Die obige Syntax entspricht dem folgenden
<?php $query = new WP_Query( array( 'tax_query' => array( array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => array( 20, 30 ), ), ), ) );
GET
Mit der obigen -Anfrage wird also eine Liste von Beiträgen abgerufen, die zu zwei Kategorien mit den IDs 20 und 30 gehören. Die gleiche Syntax kann auch für Array-Parameter mit mehr als zwei Elementen verwendet werden.
GET
请求并提供其参数,是时候看看 OPTIONS
请求了。 OPTIONS
Da wir nun gesehen haben, wie man eine
OPTIONS
Anfragen erleichtern die Navigation in der API und dienen tatsächlich als selbstdokumentierende Möglichkeit, die API zugänglicher zu machen, indem alle verfügbaren HTTP-Methoden auf den Endpunkten zusammen mit den von ihnen unterstützten Parametern protokolliert werden. Verwenden Sie OPTIONS
Anfragen, um durch die API zu navigieren
Wie bereits erwähnt, sind /wp/v2/posts
路由发送 OPTIONS
请求,以检查它支持哪些端点以及我们可以沿 GET
Anfragen sehr hilfreich für die Erkundung der API. Es erwähnt alle zu einer Route gehörenden Endpunkte und stellt eine Liste von Parametern bereit, für die CRUD-Operationen von diesen Endpunkten unterstützt werden.
Senden wir eine
Anfrage an die Route/wp/v2/posts
, um zu prüfen, welche Endpunkte sie unterstützt und welche Parameter wir mit GETAbfragedaten anfordern: <p>
<pre class="brush:javascript;toolbal:false;">$curl -X OPTIONS /wp/v2/posts
</pre>
<code class="inline">OPTIONS
请求 /wp/v2/posts
Ich habe Curl verwendet, um die obige Anfrage zu senden, aber Sie können jedes beliebige Tool Ihrer Wahl verwenden, einschließlich Postman. Geben Sie unbedingt den vollständigen Pfad zur oben genannten Route an, einschließlich des Pfads zu Ihrem Server.
{ "namespace": "wp/v2", "methods": [...], "endpoints": [...], "schema": {...}, "_links": {...} }
/wp/v2/posts
gibt Daten im JSON-Format zurück, das fünf Attribute enthält: 命名空间
方法
端点
schema
_links
namespace
属性标识当前插件的命名空间。在我们的例子中,它是 wp/v2
{ "namespace": "wp/v2", .... }🎜🎜, repräsentiert Version 2 der WP REST API. Den Zweck von Namespaces und ihren Diensten haben wir bereits im vorherigen Abschnitt kennengelernt. 🎜
{ ... "methods": [ "GET", "POST" ], ... }
methods
属性包含当前路由支持的所有方法的数组。通过查看上述请求返回的响应,可以清楚地看到 /wp/v2/posts
路由支持两种方法,即 GET
和 POST
。这意味着我们可以使用 /wp/v2/posts
路由来检索帖子,以及创建新帖子。我们将在本系列的下一部分中处理 POST
方法,因此我们暂时只关注 GET
方法。
下一个属性 — endpoints
— 包含当前路由支持的端点数组。此属性直接链接到前面提到的 methods
属性,因为它列出了支持的方法的端点。
{ ... "endpoints": [ { "methods": [ "GET" ], "args": {...}, "allow_batch": {"v1":true} }, { "methods": [ "POST" ], "args": {...}, "allow_batch": {"v1":true} } ], ... }
endpoints
属性包含对象值,而对象值又包含三个属性,即 methods
、args
和 allow_batch
。 methods
属性包含 HTTP 方法的数组,下一个 args
属性包含这些方法支持的所有参数。最后,allow_batch
属性用于了解端点是否支持批量请求功能。这些是我们以 URI 参数的形式随请求发送的参数。
查看 GET
方法支持的参数,我们发现了 20 多个参数,包括 context
、page
、required
、type
、default
。 required
属性指示该参数是否为必需,而 default
属性表示该参数的默认值。另一方面, type
属性指示应传递的值的类型。除此之外,它还可能包含其他特定于参数的属性。
"methods": [ "GET" ], "args": { "context": { "required": false, "default": "view", "type": "string", "description": "Scope under which the request is made; determines fields present in response." }, "page": { "required": false, "default": 1, "type": "integer", "description": "Current page of the collection.", "minimum": "1" }, "per_page": { "required": false, "default": 1, "type": "integer", "description": "Maximum number of items to be returned in result set.", "minimum": "1", "maximum": "100" }, }
返回的响应中的 schema
属性记录了当前资源的所有属性。该架构定义了 JSON 格式的数据结构。 WP REST API 中使用的架构格式基于 JSON 架构规范草案 4。
最后一个 _links
属性包含一个对象数组,其中包含关联资源的链接。对象中的键指定关系类型(例如 author
、collection
、self
、comments
等) ,其值是指向相关资源的链接。该链接标准基于 HAL(超文本应用语言)。您可以通过阅读 Mike Kelley 撰写的规范来了解有关 HAL 的更多信息。
以类似的方式,我们也可以向其他路由(包括用户、评论、媒体、页面等)发送 OPTIONS
请求,以检查其支持的方法和参数。 OPTIONS
请求是您使用 WP REST API 时最好的朋友。
WP REST API 提供了另一种评估 API 可用性的方法,即向 /wp-json
索引路由发送 GET
请求。这将列出所有路由及其端点及其支持的方法和参数。
$curl -X GET http://wordpress-server/wp-json
上述请求将返回一个包含路由属性的响应对象,如下所示:
此功能非常强大,因为它列出了所有路由及其支持的方法和参数,因此无需在外部记录所有这些内容。当我们对不同的资源执行CRUD操作时,我们将引用这个响应对象。
查看了探索 API 的选项后,现在让我们开始使用 WP REST API 从服务器检索数据。
到目前为止,我们已经熟悉了 OPTIONS
请求,这是一种评估 API 可用性的自记录方式。我们还研究了它如何显示给定路由支持的方法和参数。利用这些知识,我们现在准备使用 WP REST API 从服务器检索不同的资源。
我们将从 <em>posts</em>
资源开始,因为它是 WordPress 的主要构建块。我们将使用不同的标准来检索帖子。通过应用这些知识,您将能够使用 WP REST API 查询帖子,就像使用 WP_Query 类一样。
在本系列中,我们一直在使用 <em>posts</em>
资源来演示示例请求及其响应,并且我们已经知道如何通过 ID 检索帖子集合和单个帖子。所以我们不会再讨论这个了。相反,我们将研究一些使用顶级参数检索帖子的更高级方法。
WP REST API 直接在 GET
端点上公开一些最常用的帖子查询变量。这些参数是:
Parameter | Bedeutung |
---|---|
context |
Gewünschter Umfang. Mögliche Werte können view 、embed 或 edit 。默认为view sein. |
page |
Die aktuelle Seite der Beitragssammlung. Der Standardwert ist 1 . |
per_page |
Gesamtzahl der Beiträge pro Seite. Der Standardwert ist 10 . |
搜索 |
Suchanfrage. Beschränken Sie die Ergebnisse auf übereinstimmende Zeichenfolgen. |
after |
Nur Beiträge zurückgeben, die nach dem in diesem Parameter angegebenen Datum veröffentlicht wurden. |
modified_after |
Nur Beiträge zurückgeben, die nach dem in diesem Parameter angegebenen Datum geändert wurden. |
作者 |
Autoren-ID. Wird verwendet, um die Ergebnisse eines bestimmten Autors einzuschränken. |
author_exclude |
Die Ergebnismenge enthält keine Beiträge, die bestimmten Autoren zugewiesen sind. |
vor |
Nur Beiträge zurückgeben, die vor dem in diesem Parameter angegebenen Datum veröffentlicht wurden. |
modified_before |
Nur Beiträge zurückgeben, die vor dem in diesem Parameter angegebenen Datum geändert wurden. |
排除 |
Array von Beitrags-IDs, die aus den Suchergebnissen ausgeschlossen werden sollen. |
include |
Beschränken Sie die Ergebnisse auf die in diesem Array angegebenen Beitrags-IDs. |
offset |
Suchergebnisse um die angegebene Zahl versetzen. |
order |
Reihenfolge der Abholung. Es kann sein asc 或 desc . |
orderby |
Sortiereigenschaften von Sammlungen. Mögliche Werte können author , date , id , include , modified , parent , relevance , slug 、include_slugs 和 title sein. |
search_columns |
Sie können ein Array von Spaltennamen für die Suche angeben. |
<code class="inline"><strong>slug</strong> slug |
Beschränken Sie die Ergebnisse auf Beiträge mit einem bestimmten Slug. |
status
|
Wird verwendet, um die Sammlung von Beiträgen mit einem bestimmten Status einzuschränken. |
tax_relation
|
Wird verwendet, um die Ergebnismenge basierend auf Beziehungen zwischen mehreren Taxonomien einzuschränken. |
类别
|
Filtern Sie die Ergebnismenge nach Begriffen, die in der Kategorieklassifizierung zugewiesen wurden. |
categories_exclude
|
Filtern Sie die Ergebnismenge nach Elementen mit Ausnahme bestimmter in der Kategorieklassifizierung angegebener Begriffe. |
<strong>标签</strong>
| tag|
tags_exclude
|
|
sticky
|
context
参数用于根据我们正在工作的范围获取帖子。如果我们只是在索引页面上列出帖子,那么我们可以使用 view
上下文。但是,如果我们要检索帖子以进行编辑,则需要使用 edit
上下文:
$GET /wp/v2/posts?context=edit
edit
上下文参数在 title
、content
和 raw
字段="inline">摘录
raw
字段的值可以在编辑器中回显出来,用于编辑内容。
使用 edit
上下文需要您作为具有 edit_posts
权限的用户进行身份验证。
使用 embed
作为 context
参数的值可获取帖子的集合及其属性的最小子集。
上面提到的其他参数非常不言自明,您可以在 HTTP 客户端中使用它们。
这些是允许您根据特定条件查询帖子的基本参数。
除了使用一些基本的顶级参数检索帖子集合之外,WP REST API 还允许您按各种其他条件过滤记录。通过使用此语法,我们可以像使用 WP_Query()
类一样查询帖子。
分页参数是所有过滤器中最重要的,因为它们在帖子列表页面上广泛使用。分页参数允许我们在每页显示特定数量的帖子,并导航到包含帖子的特定数量的页面。
默认情况下,GET
请求会检索每页 10 个帖子的集合。让我们看看如何提交 GET
请求来检索每页仅五个帖子:
$GET /wp/v2/posts?per_page=5
上述请求使用 per_page
变量,如果您使用过 WP_Query()
,您可能会熟悉该变量。
page
参数与 per_page
参数结合使用,用于导航到特定数量的页面。每页检索到五个帖子后,我们将发出以下请求以导航到第二页:
$GET /wp/v2/posts?per_page=5&page=2
在使用 WP REST API 在列表页面上构建分页时,per_page
和 page
过滤器非常方便。
除了上述请求返回的帖子集合之外,服务器还返回许多标头以及包含有用信息的响应,包括帖子总数和页数。这些值包含在 X-WP-TotalPages
和 X-WP-Total
响应标头中。
使用 WP REST API 创建分页时,X-WP-TotalPages
和 X-WP-Total
响应标头非常有用,因为它们列出了页面总数以及帖子总数。
除了分页过滤器之外,您还可以按日期过滤帖子。
因此,如果我们要查找日期为 2015-10-15(yyyy/mm/dd)发布的帖子,可以通过以下查询来实现:
$ GET /wp/v2/posts?modified_after=2015-10-14&modified_before=2015-10-16
我们已经在本教程的上一节中了解了如何使用 categories
参数获取属于特定类别或多个类别的帖子。让我们看看如何显示属于 id 为 5 和 6 的类别的帖子:
$ GET /wp/v2/posts?categories=5,6
上述请求将检索属于 ID 为 5 和 6 的类别的所有帖子的列表。
通过以下方式使用 categories_exclude
参数可以达到相反的效果:
$ GET /wp/v2/posts?categories_exclude=5,6
这将检索帖子列表,同时排除属于 ID 为 5 或 6 的类别的所有帖子。
现在我们已经在 WP REST API 的帮助下查看了查询帖子时的不同选项,我们准备进一步推进我们的旅程并查看 WP REST API 支持的一些其他资源。
帖子修订提供了一种查看和恢复对帖子所做编辑的方法。 WP REST API 提供了一种通过查询 /posts/<id>/revisions</id>
端点来查看帖子的所有修订版本的方法。因此,对于 ID 为 10 的给定帖子,可以通过发送以下请求来检索所有修订:
$ GET /wp/v2/posts/10/revisions
上述请求将返回一个包含修订对象的数组。修订对象包含在发布对象中找到的属性的子集。下面是 Postman 中的修订对象示例:
只要我们知道其 ID,就可以检索特定的修订版本。因此,可以通过以下对象检索 ID 为 10 的帖子上 ID 为 2 的修订:
$ GET /wp/v2/posts/10/revisions/2
上述请求将返回单个修订对象。
除了帖子修订之外,还可以通过以下请求检索特定帖子的类别:
$ GET /wp/v2/categories?post=<post_id>
对于标签,我们使用以下请求,其中 <post_id></post_id>
是帖子的 ID:
$ GET /wp/v2/tags?post=<post_id>
如果我们需要检索 ID 为 10 的帖子的帖子元数据,我们将以经过身份验证的用户身份发送以下请求:
$ GET /wp/v2/posts/10/meta
这将返回一个元对象数组。
请注意,要在 WP REST API 中使用帖子和页面元,您需要安装配套插件,该插件可从 WP REST API 团队在 GitHub 上获取。
到目前为止,我们已经为使用 WP REST API 检索数据奠定了相当坚实的基础。我们已经研究了选项请求以及它如何帮助我们在不需要外部文档的情况下探索 API。
您始终可以向特定资源发送 OPTIONS
请求,并检查它支持哪些端点和参数。如果您需要列出 WP REST API 提供的所有路由,您可以向 /wp-json
处的索引端点发送 GET
请求,正如我们在本教程的开始。
考虑到自我文档的优势,我认为我们不需要进一步探索本教程中的每个单独资源,因为您现在可以自己完成此操作。
在这个冗长的教程中,我们学习了使用 OPTIONS 请求探索 API 并使用 WP REST API 从服务器检索数据。我们只查看了一些资源,包括帖子、修订后和帖子元,因为我们无法仅在一个教程中涵盖所有支持的资源。但您现在应该能够使用我们在本教程中介绍的技术自行探索 API。
WordPress 的经济非常活跃。有主题、插件、库和许多其他产品可以帮助您构建网站和项目。该平台的开源性质也使其成为提高编程技能的绝佳选择。
在本系列的下一部分中,我们将学习执行 CRUD 的其他三个操作,即创建、更新和删除资源。所以请继续关注。
Das obige ist der detaillierte Inhalt vonWP REST API zum Abrufen von Daten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!