WP_REST_Request クラスの使い方|説明・引数・注意点

説明

WP_REST_Request は、REST APIのリクエスト(パラメーター、ヘッダーなど)を表すクラスです。エンドポイントのコールバックに渡されます。

基本構文

WP_REST_Request

引数

  • get_param( $key ):パラメーターを取得
  • get_params():全パラメーターを取得
  • get_json_params():JSONボディを取得
  • get_header( $key ):ヘッダーを取得
  • get_method():HTTPメソッドを取得

戻り値

コールバックの引数として受け取ります。

使い方(サンプル)

register_rest_route( 'my/v1', '/item', array(
	'methods'             => 'GET',
	'callback'            => function( WP_REST_Request $req ) {
		return array( 'id' => absint( $req->get_param( 'id' ) ) );
	},
	'permission_callback' => '__return_true',
) );

注意点

  • 受け取った値は必ずサニタイズします。
  • args に sanitize_callback / validate_callback を指定すると、自動で検証できます。

実務での使いどころ

  • REST APIの、コールバックで、リクエストのパラメータ(URL、クエリ、本文)を、受け取るとき。
  • JSONの本文(get_json_params())を、取得するとき。

よくあるミスと対処

  • $_POST・$_GET を、直接使っている。$request->get_param() を使う。
  • パラメータを、検証・サニタイズしていない。register_rest_route() の args で、validate_callback・sanitize_callback を指定する。
  • 存在しないパラメータは null。確認せずに使う。

NG例

function my_callback( $request ) {
	$id = $_GET['id']; // 直接使っている
}

OK例

function my_callback( WP_REST_Request $request ) {
	$id = absint( $request->get_param( 'id' ) );
	$body = $request->get_json_params();
	return rest_ensure_response( array( 'id' => $id ) );
}

使い分け早見表

やりたいこと 使うもの
パラメータを、取得する $request->get_param()
JSONの本文を、取得する $request->get_json_params()
応答を、作る rest_ensure_response()

関連項目

register_rest_route()、WP_REST_Response、rest_ensure_response()

公式リファレンス:WP_REST_Request | WordPress Developer Resources

コメント

タイトルとURLをコピーしました