ホームページ  >  記事  >  CMS チュートリアル  >  データを取得するための WP REST API

データを取得するための WP REST API

PHPz
PHPzオリジナル
2023-09-04 14:05:01762ブラウズ

このシリーズの前の部分では、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 キー認証
  • JWT認証
  • OAuth 2.0 認証

認証を設定した後、さまざまな API エンドポイントのアクセス制御ルールを定義できます。これにより、どのユーザーまたはロールが特定のエンドポイントにアクセスできるかを構成できます。また、ユーザーの役割、機能、または特定のユーザー ID に基づいてアクセスを制限するオプションも提供します。

シリーズの今回の記事では、WP REST API を初めて実際に見ていきます。私達はします:###

    分析
  • GET リクエスト構造
  • 表示
  • オプション セルフロギング API をリクエストする方法
  • データを取得するためにサーバーにリクエストを送信します
  • 属性、スキーマ、リンクを含むサーバー応答を分析する
  • GET リクエストの分析
  • OPTIONS リクエストを使用した 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 に沿ってクエリできるデータを確認してみましょう。リクエスト: ### リーリー

上記のリクエストの送信にはcurlを使用しましたが、Postmanなど任意のツールを使用できます。サーバーへのパスを含む、上記のルートへの完全なパスを必ず含めてください。

リーリー

上記の

OPTIONS リクエスト /wp/v2/posts ルートは、次の 5 つの属性を含む JSON 形式のデータを返します。

    名前空間
  • ######方法###### ######終点######
  • スキーマ
  • #_リンク
  • # リーリー namespace
  • 属性は、現在のプラグインの名前空間を識別します。この場合、これは
  • wp/v2 で、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 属性包含对象值,而对象值又包含三个属性,即 methodsargsallow_batchmethods 属性包含 HTTP 方法的数组,下一个 args 属性包含这些方法支持的所有参数。最后,allow_batch 属性用于了解端点是否支持批量请求功能。这些是我们以 URI 参数的形式随请求发送的参数。

    查看 GET 方法支持的参数,我们发现了 20 多个参数,包括 contextpagerequiredtypedefaultrequired 属性指示该参数是否为必需,而 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 属性包含一个对象数组,其中包含关联资源的链接。对象中的键指定关系类型(例如 authorcollectionselfcomments 等) ,其值是指向相关资源的链接。该链接标准基于 HAL(超文本应用语言)。您可以通过阅读 Mike Kelley 撰写的规范来了解有关 HAL 的更多信息。

    以类似的方式,我们也可以向其他路由(包括用户、评论、媒体、页面等)发送 OPTIONS 请求,以检查其支持的方法和参数。 OPTIONS 请求是您使用 WP REST API 时最好的朋友。

    WP REST API 提供了另一种评估 API 可用性的方法,即向 /wp-json 索引路由发送 GET 请求。这将列出所有路由及其端点及其支持的方法和参数。

    $curl -X GET http://wordpress-server/wp-json
    

    上述请求将返回一个包含路由属性的响应对象,如下所示:

    获取数据的WP REST API

    此功能非常强大,因为它列出了所有路由及其支持的方法和参数,因此无需在外部记录所有这些内容。当我们对不同的资源执行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 端点上公开一些最常用的帖子查询变量。这些参数是:

    ###意味### #########コンテクスト######### 要求された範囲。可能な値は、viewview #########1ページあたり######### ページごとの投稿の合計数。デフォルトは 10結果セットには、特定の作成者に割り当てられた投稿は含まれません。 ############前に###### このパラメータで指定された日付より前に公開された投稿のみを返します。 変更前#このパラメータで指定された日付より前に変更された投稿のみを返します。 除外検索結果から除外する投稿 ID の配列。 検索結果を指定された数値だけオフセットします。 を指定できます。 コレクションの並べ替えプロパティ。可能な値は、、date、、relevance、slug #########状態######### 特定のステータスを持つ投稿のコレクションを制限するために使用されます。 #########カテゴリー######### カテゴリ分類内で割り当てられた用語によって結果セットをフィルターします。 粘着性のある
    パラメータ
    embed、または edit です。デフォルトは です。 #########ページ######### 投稿コレクションの現在のページ。デフォルトは 1 です。
    です。 #########検索######### ###検索クエリ。結果を一致する文字列に制限します。 #########後######### このパラメータで指定された日付以降に公開された投稿のみを返します。
    #修正後#このパラメータで指定された日付以降に変更された投稿のみを返します。 #########著者######### 著者ID。特定の作成者に属する結果を制限するために使用されます。
    author_exclude
    #########含む######### 結果をこの配列で指定された投稿 ID に制限します。 #########オフセット#########
    #########注文######### コレクションの順序。 asc または desc
    注文方法 author
    idincludemodifiedparent# です。 ##、
    include_slugs、および title
    検索列 検索する列名の配列を指定できます。
    ナメクジ 結果を特定のスラッグを含む投稿に限定します。
    税金関係 複数の分類間の関係に基づいて結果セットを制限するために使用されます。
    カテゴリ除外 カテゴリ分類で指定された特定の用語以外の項目に結果セットをフィルターします。 #########ラベル######### 結果セットをタグ分類で指定された用語でフィルタリングします。 tags_exclude タグ分類で指定された特定の用語以外の項目に結果セットをフィルターします。
    は、結果セットをスティッキー項目に制限するために使用されます。

    context 参数用于根据我们正在工作的范围获取帖子。如果我们只是在索引页面上列出帖子,那么我们可以使用 view 上下文。但是,如果我们要检索帖子以进行编辑,则需要使用 edit 上下文:

    $GET /wp/v2/posts?context=edit
    

    edit 上下文参数在 titlecontentraw 字段="inline">摘录。这个 raw 字段的值可以在编辑器中回显出来,用于编辑内容。

    获取数据的WP REST API

    使用 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_pagepage 过滤器非常方便。

    除了上述请求返回的帖子集合之外,服务器还返回许多标头以及包含有用信息的响应,包括帖子总数和页数。这些值包含在 X-WP-TotalPagesX-WP-Total 响应标头中。

    获取数据的WP REST API

    使用 WP REST API 创建分页时,X-WP-TotalPagesX-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 中的修订对象示例:

    获取数据的WP REST API

    只要我们知道其 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 的其他三个操作,即创建、更新和删除资源。所以请继续关注。

以上がデータを取得するための WP REST APIの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。