重要なコンセプト
TOPICS
翻訳元記事はこちらです。
このページでは、REST APIに関する概念と反する箇所がいくつかあるかもしれません。
- ルート & エンドポイント
- リクエスト
- レスポンス
- スキーマ
- コントローラー
これらの概念は、WordPress REST APIを使うにあたって重要な役割を持っています。それぞれをこのハンドブックで掘り下げていきます。
ルート & エンドポイント
WordPress REST APIのルートURIは、異なるHTTPのメソッドにマッピングされています。それぞれのHTTPメソッドは、エンドポイントというルートにマッピングされています。
たとえば、http://oursite.com/wp-json/
というURIにGETメソッドでリクエストを投げたとき、どのルートが使えるか、どのエンドポイントがそれぞれのルートで使えるかをJSON形式で返します。/wp-json/
に、GETメソッドでリクエストを投げると、エンドポイントによって処理されます。wp-json/wp/v2/posts
というルートは、GETメソッドだと投稿一覧を返し、POSTメソッドだと新しい投稿を作るための認証をします。
続いてのセクションでは、どのようにルートとエンドポイントを登録するかを学びます。
もしあなたが、整っていないパーマリンクを使用している場合、REST APIにクエリストリングを渡すべきです。http://oursite.com/wp-json/
このURLの場合は、このようになります。http://oursite.com/?rest_route=/
もしhttp://oursite.com/wp-json/
にアクセスしようとして、404エラーが返ってきた場合は、整ったパーマリンクを使うか、rest_route
パラメーターを追加してください。
リクエスト
REST APIのリクエストは、WordPressでは、WP_REST_Request
クラスのインスタンスによって表示されます。そのクラスは、現在のリクエストの情報を保存および取得するのに使われます。WP_REST_Request
オブジェクトは、HTTPリクエストがAPIのルートに登録されたときに、自動的に生成されます。このオブジェクトに指定されたデータは、APIからどういったレスポンスを受け取るか決定します。(オブジェクトは、URIルートに由来する、または、リクエストの一部として送信されたJSONのデータのことです。)
リクエストは、通常はHTTPを介してリモートから提供されます。しかし、WordPressのプラグインやテーマのコードから提供されることもあります。このことについては、ハンドブックの他の箇所で詳しく解説します。
レスポンス
レスポンスは、APIから受け取るデータのことです。WP_REST_Response
クラスは、エンドポイントによって返されるデータに関わる方法を提供します。レスポンスは、リクエストされたデータを返し、エラーがある場合にはエラーを返します。
スキーマ
それぞれのエンドポイントは、特定の構造を必要とします。そして、決められた構造でデータを返します。データ構造は、APIスキーマによって決められています。
スキーマは、APIが返せるプロパティのリストを提供し、APIが受け取れるパラメーターを提供します。きちんと定義されたスキーマは、セキュリティ層を提供します。APIによるリクエストのバリデーション、サニタイズを可能にします。スキーマセクションでは、このテーマについて解説します。
コントローラークラス
コントローラークラスは、REST APIのレスポンスのサイクルを統一します。コントローラークラスによって、ルートとエンドポイントを管理して、リクエストを扱い、スキーマを活用し、APIのレスポンスを作成することができます。
1つのクラスは、与えられたルートのすべてのロジックを含んでおり、与えられたルートは、WordPressサイトの特定のデータを表します。(カスタム投稿タイプやタクソノミーなど)