コントローラー

Model-View-Controllerは、ソフトウェア開発における標準的なパターンです。もしまだこの概念に慣れていない場合は、少し読んで理解を深めるべきです。

WP-API内では、リソースエンドポイントを表すクラスの標準的なパターンを持つために、コントローラーの概念を採用しています。すべてのリソースエンドポイントは、共通のメソッドを実装することを保証するためにWP_REST_Controllerを拡張します。

HEAD、GET、POST、PUT、およびDELETEリクエスト

これらの「HTTP動詞」は、HTTPクライアントがリソースに対して実行する可能性のあるアクションの種類を表します。たとえば、GETリクエストは投稿のデータを取得するために使用され、DELETEリクエストは投稿を削除するために使用されます。これらはウェブ全体で標準化されているため、「HTTP動詞」と総称されます。

WordPressの関数に慣れている場合、GETリクエストはwp_remote_get()の同等物であり、POSTリクエストはwp_remote_post()と同じです。

HTTPクライアント

「HTTPクライアント」というフレーズは、WP-APIと対話するために使用するツールを指します。ブラウザでリクエストをテストするために、Postman(Chrome)やREST Easy(Firefox)を使用するか、コマンドラインでリクエストをテストするためにhttpieを使用することがあります。

WordPress自体は、WP_HTTPクラスと関連する関数(例:wp_remote_get())でHTTPクライアントを提供します。これを使用して、あるWordPressサイトから別のサイトにアクセスできます。

リソース

「リソース」とは、WordPress内の離散的なエンティティです。これらのリソースは、投稿、ページ、コメント、ユーザー、用語などとして既に知られているかもしれません。WP-APIは、HTTPクライアントがリソースに対してCRUD操作を実行することを許可します(CRUDは作成、読み取り、更新、削除を意味します)。

実際には、WP-APIリソースと通常どのように対話するかは次のとおりです:

  • GET /wp-json/wp/v2/postsを使用して投稿のコレクションを取得します。これはWP_Queryを使用するのとほぼ同等です。
  • ID 123の単一の投稿を取得するためにGET /wp-json/wp/v2/posts/123を使用します。これはget_post()を使用するのとほぼ同等です。
  • 新しい投稿を作成するためにPOST /wp-json/wp/v2/postsを使用します。これはwp_insert_post()を使用するのとほぼ同等です。
  • ID 123の投稿を削除するためにDELETE /wp-json/wp/v2/posts/123を使用します。これはwp_delete_post()を使用するのとほぼ同等です。

ルート / エンドポイント

エンドポイントは、APIを通じて利用可能な関数です。これには、APIインデックスの取得、投稿の更新、コメントの削除などが含まれます。エンドポイントは特定の機能を実行し、いくつかのパラメータを受け取り、クライアントにデータを返します。

ルートは、エンドポイントにアクセスするために使用する「名前」であり、URLで使用されます。ルートには複数のエンドポイントが関連付けられており、どれが使用されるかはHTTP動詞によって異なります。

たとえば、URL http://example.com/wp-json/wp/v2/posts/123の場合:

  • 「ルート」はwp/v2/posts/123です – ルートにはwp-jsonは含まれません。なぜならwp-jsonがAPI自体の基本パスだからです。
  • このルートには3つのエンドポイントがあります:
    • GETget_itemメソッドをトリガーし、投稿データをクライアントに返します。
    • PUTupdate_itemメソッドをトリガーし、更新するデータを受け取り、更新された投稿データを返します。
    • DELETEdelete_itemメソッドをトリガーし、現在削除された投稿データをクライアントに返します。

注意: 美しいパーマリンクがないサイトでは、ルートはrest_routeパラメータとしてURLに追加されます。上記の例では、完全なURLはhttp://example.com/?rest_route=wp/v2/posts/123になります。

スキーマ

「スキーマ」とは、WP-APIのレスポンスデータのフォーマットを表すものです。たとえば、投稿スキーマは、投稿を取得するリクエストがidtitlecontentauthor、およびその他のフィールドを返すことを伝えます。私たちのスキーマは、各フィールドのタイプを示し、人間が読みやすい説明を提供し、フィールドが返されるコンテキストを示します。