このシリーズの前の部分では、WP REST API とは何か、そしてそれが WordPress バックエンドを使用してより良いアプリケーションを構築するのにどのように役立つのかを見てきました。
次に、認証済みリクエストを生成するためにサーバー上で認証を設定する 2 つの異なる方法を検討しました。 1 つ目は Basic 認証方法です。これは開発環境で役立ち、セットアップに時間がかからないため、迅速なプロトタイピングが可能になります。高度な認証方法は OAuth 2.0 です。基本認証方法よりもはるかに安全であるため、運用環境に推奨されます。
認証の設定方法を理解したので、WP REST API の機能を最大限に活用するための認証済みリクエストを生成する準備が整いました。このシリーズでは使いやすさのため基本認証を使用しますが、運用サーバーには OAuth 2.0 認証 (WordPress REST API 認証プラグインによって提供される) を使用することをお勧めします。
WordPress REST API 認証プラグインは、API エンドポイントへのアクセスを制御する認証メカニズムを追加することで、WordPress REST API のセキュリティを強化します。いくつかの認証方法が付属しています:
認証を設定した後、さまざまな API エンドポイントのアクセス制御ルールを定義できます。これにより、どのユーザーまたはロールが特定のエンドポイントにアクセスできるかを構成できます。また、ユーザーの役割、機能、または特定のユーザー ID に基づいてアクセスを制限するオプションも提供します。
シリーズの今回の記事では、WP REST API を初めて実際に見ていきます。私達はします:###
リクエスト構造
セルフロギング API をリクエストする方法
したがって、最初に単純な GET
リクエストの構造を分析します。
GET
リクエスト分析WP REST API を使用してデータを取得する方法を詳しく説明する前に、サーバーに送信されるリクエストの構文を理解しておく必要があります。これにより、将来の WP REST API とのやり取りに強固な基盤が提供されます。
サーバーに送信された次のリクエストについて考えてみましょう:
リーリー送信するリクエストのタイプは GET
です。これは、このシリーズのパート 1 で説明した 6 つの HTTP 動詞の 1 つです。 GET
リクエストはサーバーからデータを取得するために使用されます。したがって、サーバー上で実行されると、上記のリクエストはすべての投稿オブジェクトのコレクションを JSON データとして取得します。
リクエスト URI を考慮すると、次の部分に分割できます:
https://localserver/
: ローカル開発サーバーの URL。 WordPress がインストールされている場所に応じて、任意の URL を指定できます。 /wp-json
: WP REST API のエンドポイント プレフィックス。 /wp
: WP REST API の名前空間。 /v2
: WP REST API のバージョン。 /posts
: これはサーバーから取得したいリソースです。 名前空間は、複数のプラグインを実行するときに発生する可能性のあるオーバーライドを防ぎ、それぞれが RESTful API に独自の抽象化レイヤーを提供します。したがって、各抽象化は独自の境界内で動作し、他の抽象化に属するメソッドやプロパティには影響しません。
上記の URI を使用してリソース (投稿) のコレクションを取得することに加えて、ID を指定して特定のリソースを取得することもできます:
リーリー上記のリクエストは、ID 100 の投稿リソースを検索するため、投稿オブジェクトを返します。
通常、特定の条件を満たす投稿を検索する必要もあります。たとえば、次のコード スニペットに示すように、カテゴリ別に投稿をフィルタリングできます。
リーリー 上記のリクエストを送信すると、ID 20 と 30 のカテゴリに属するすべての投稿を取得できます。ご覧のとおり、categories
パラメータに 1 つ以上のカテゴリ ID を渡すと、カテゴリ分類内の特定の用語が割り当てられた投稿が返されます。
上記の構文は、次の WP_Query()
呼び出しと同等です:
したがって、上記の GET
リクエストは、ID 20 と 30 の 2 つのカテゴリに属する投稿のリストを取得します。同じ構文は、3 つ以上の要素を持つ配列パラメーターにも使用できます。
GET
リクエストをフォーマットしてパラメータを指定する方法を確認したので、今度は OPTIONS
リクエストを見てみましょう。 オプション
リクエストを使用すると、API の操作が簡単になり、エンドポイントで使用可能なすべての HTTP メソッドとそれらがサポートするパラメータをログに記録することで、API をよりアクセスしやすくするための自己文書化された方法として実際に機能します。
OPTIONS
リクエストを使用した API の操作前述したように、OPTIONS
リクエストは API を探索するのに非常に役立ちます。ルートに属するすべてのエンドポイントについて説明し、これらのエンドポイントで CRUD 操作がサポートされるパラメーターのリストを提供します。
OPTIONS
リクエストを /wp/v2/posts
ルートに送信して、サポートされているエンドポイントと、GET
に沿ってクエリできるデータを確認してみましょう。リクエスト: ###
リーリー
リーリー
上記のOPTIONS リクエスト
/wp/v2/posts ルートは、次の 5 つの属性を含む JSON 形式のデータを返します。
######方法######
######終点######
#_リンク
namespace で、WP REST API のバージョン 2 を表します。名前空間とそのサービスの目的については、前のセクションですでに学びました。
{ ... "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
端点上公开一些最常用的帖子查询变量。这些参数是:
パラメータ | ###意味###|
---|---|
、embed、または edit です。デフォルトは | view です。
#########ページ#########
投稿コレクションの現在のページ。デフォルトは 1 です。
|
#########1ページあたり#########
です。
#########検索#########
###検索クエリ。結果を一致する文字列に制限します。
|
#########後#########
このパラメータで指定された日付以降に公開された投稿のみを返します。
|
#修正後 #このパラメータで指定された日付以降に変更された投稿のみを返します。
|
#########著者#########
著者ID。特定の作成者に属する結果を制限するために使用されます。
|
author_exclude
| 結果セットには、特定の作成者に割り当てられた投稿は含まれません。 |
| 変更前|
| 除外|
#########含む#########
結果をこの配列で指定された投稿 ID に制限します。
|
#########オフセット######### | 検索結果を指定された数値だけオフセットします。
#########注文#########
コレクションの順序。 asc または desc | を指定できます。 |
注文方法
| コレクションの並べ替えプロパティ。可能な値は、author | 、
id、include 、modified | 、parent# です。 ##、 | relevance
、include_slugs、および title。 |
|
検索列
検索する列名の配列を指定できます。 |
|
ナメクジ
結果を特定のスラッグを含む投稿に限定します。 |
#########状態######### |
税金関係 |
複数の分類間の関係に基づいて結果セットを制限するために使用されます。
|
#########カテゴリー#########
カテゴリ除外 |
カテゴリ分類で指定された特定の用語以外の項目に結果セットをフィルターします。
#########ラベル#########
結果セットをタグ分類で指定された用語でフィルタリングします。
tags_exclude
タグ分類で指定された特定の用語以外の項目に結果セットをフィルターします。
|
は、結果セットをスティッキー項目に制限するために使用されます。
|
$GET /wp/v2/posts?context=edit ログイン後にコピー
使用 使用 上面提到的其他参数非常不言自明,您可以在 HTTP 客户端中使用它们。 这些是允许您根据特定条件查询帖子的基本参数。 如何使用其他条件过滤记录除了使用一些基本的顶级参数检索帖子集合之外,WP REST API 还允许您按各种其他条件过滤记录。通过使用此语法,我们可以像使用 分页参数是所有过滤器中最重要的,因为它们在帖子列表页面上广泛使用。分页参数允许我们在每页显示特定数量的帖子,并导航到包含帖子的特定数量的页面。 默认情况下, $GET /wp/v2/posts?per_page=5 ログイン後にコピー 上述请求使用
$GET /wp/v2/posts?per_page=5&page=2 ログイン後にコピー 在使用 WP REST API 在列表页面上构建分页时, 除了上述请求返回的帖子集合之外,服务器还返回许多标头以及包含有用信息的响应,包括帖子总数和页数。这些值包含在 使用 WP REST API 创建分页时, 除了分页过滤器之外,您还可以按日期过滤帖子。 因此,如果我们要查找日期为 2015-10-15(yyyy/mm/dd)发布的帖子,可以通过以下查询来实现: $ GET /wp/v2/posts?modified_after=2015-10-14&modified_before=2015-10-16 ログイン後にコピー 我们已经在本教程的上一节中了解了如何使用 $ GET /wp/v2/posts?categories=5,6 ログイン後にコピー 上述请求将检索属于 ID 为 5 和 6 的类别的所有帖子的列表。 通过以下方式使用 $ GET /wp/v2/posts?categories_exclude=5,6 ログイン後にコピー 这将检索帖子列表,同时排除属于 ID 为 5 或 6 的类别的所有帖子。 现在我们已经在 WP REST API 的帮助下查看了查询帖子时的不同选项,我们准备进一步推进我们的旅程并查看 WP REST API 支持的一些其他资源。 使用帖子修订、类别和标签帖子修订提供了一种查看和恢复对帖子所做编辑的方法。 WP REST API 提供了一种通过查询 $ 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> ログイン後にコピー 对于标签,我们使用以下请求,其中 $ 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 请求探索 API 并使用 WP REST API 从服务器检索数据。我们只查看了一些资源,包括帖子、修订后和帖子元,因为我们无法仅在一个教程中涵盖所有支持的资源。但您现在应该能够使用我们在本教程中介绍的技术自行探索 API。 WordPress 的经济非常活跃。有主题、插件、库和许多其他产品可以帮助您构建网站和项目。该平台的开源性质也使其成为提高编程技能的绝佳选择。 在本系列的下一部分中,我们将学习执行 CRUD 的其他三个操作,即创建、更新和删除资源。所以请继续关注。 以上がデータを取得するための WP REST APIの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。 ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
function_exists() はカスタム関数を決定できません
Function test () {return true;} if (function_exists ('test')) {echo "テストは関数です";
から 2024-04-29 11:01:01
0
3
2037
Google Chromeのモバイル版を表示する方法
こんにちは、先生、Google Chrome をモバイル版に変更するにはどうすればよいですか?
から 2024-04-23 00:22:19
0
11
2197
親ウィンドウには出力がありません
document.onclick = function(){ window.opener.document.write('私は子ウィンドウの出力です');
から 2024-04-18 23:52:34
0
1
1744
関連トピック
詳細>
|