コントローラー
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つのエンドポイントがあります:
GET
はget_item
メソッドをトリガーし、投稿データをクライアントに返します。PUT
はupdate_item
メソッドをトリガーし、更新するデータを受け取り、更新された投稿データを返します。DELETE
はdelete_item
メソッドをトリガーし、現在削除された投稿データをクライアントに返します。
注意: 美しいパーマリンクがないサイトでは、ルートはrest_route
パラメータとしてURLに追加されます。上記の例では、完全なURLはhttp://example.com/?rest_route=wp/v2/posts/123
になります。
スキーマ
「スキーマ」とは、WP-APIのレスポンスデータのフォーマットを表すものです。たとえば、投稿スキーマは、投稿を取得するリクエストがid
、title
、content
、author
、およびその他のフィールドを返すことを伝えます。私たちのスキーマは、各フィールドのタイプを示し、人間が読みやすい説明を提供し、フィールドが返されるコンテキストを示します。