我正在尝试使用以下代码注册具有多个参数的GET-REST API路由:
register_rest_route( \'myplugin/v1\', \'/posts/?number=(?P<number>[\\d]+)&offset=(?P<offset>[\\d]+)&total=(?P<total>[\\d]+)\', array(
\'methods\' => \'GET\',
\'callback\' => \'my_rest_function\',
\'permission_callback\' => \'__return_true\',
\'args\' => array(
\'number\' => array(
\'validate_callback\' => function( $param, $request, $key ) {
return is_numeric( $param );
}
),
\'offset\' => array(
\'validate_callback\' => function( $param, $request, $key ) {
return is_numeric( $param );
}
),
\'total\' => array(
\'validate_callback\' => function( $param, $request, $key ) {
return is_numeric( $param );
}
),
),
) );
但是,当我使用以下方法调用它时:
https://example.com/wp-json/myplugin/v1/posts/?number=3&offset=0&total=3
我得到一个
No route was found matching the URL and request method. 错误
我做错了什么?
最合适的回答,由SO网友:Jacob Peattie 整理而成
您不需要在端点中包含查询参数。仅路径:
register_rest_route( \'myplugin/v1\', \'/posts\', array(
\'methods\' => \'GET\',
\'callback\' => \'my_rest_function\',
\'permission_callback\' => \'__return_true\',
\'args\' => array(
\'number\' => array(
\'validate_callback\' => function( $param, $request, $key ) {
return is_numeric( $param );
}
),
\'offset\' => array(
\'validate_callback\' => function( $param, $request, $key ) {
return is_numeric( $param );
}
),
\'total\' => array(
\'validate_callback\' => function( $param, $request, $key ) {
return is_numeric( $param );
}
),
),
) );