Angularjs Wordpress wp rest api v2错误400(错误请求);对象{代码:“rest”无效参数,消息:“无效参数:id”,数据:Object}
本地主机请求使用“wp rest api v2”的WordPress应用程序时,该应用程序正常工作,没有任何问题。以下是我的本地主机post请求的示例: 张贴“名称空间/插件名称/wp json/插件名称空间/api url的其余部分” 但在我的托管站点上,请求返回错误,与我的托管站点的请求类似: 发布“名称空间/api url的其余部分” 我在chrome控制台上看到“400(错误请求)” 对象{代码:“rest_invalid_param”,消息:“无效参数:id”,数据:Object} 另一个注意事项是,两个请求中的有效负载相同: $http.post(url,{id:1,短消息:“abc”},{headers:{'X-WP-Nonce':“我的Nonce值”}});//我正在使用$http发出post请求 我在上面写了url的样子 在我的插件php代码中,我写道:Angularjs Wordpress wp rest api v2错误400(错误请求);对象{代码:“rest”无效参数,消息:“无效参数:id”,数据:Object},angularjs,wordpress,api,rest,Angularjs,Wordpress,Api,Rest,本地主机请求使用“wp rest api v2”的WordPress应用程序时,该应用程序正常工作,没有任何问题。以下是我的本地主机post请求的示例: 张贴“名称空间/插件名称/wp json/插件名称空间/api url的其余部分” 但在我的托管站点上,请求返回错误,与我的托管站点的请求类似: 发布“名称空间/api url的其余部分” 我在chrome控制台上看到“400(错误请求)” 对象{代码:“rest_invalid_param”,消息:“无效参数:id”,数据:Object} 另
function myplugin_register_endpoints(){
register_rest_route(
'plugin namespace',
'/rest of the api url',
array(
'methods' => 'POST',
'callback' => 'my_end_point',
'args' => array(
'id' => array(
'required' => true,
'validate_callback' => function($param, $request, $key) {
return is_numeric( $param ) and ! is_null(get_post($param));//numeric post id value and there is valid post for this id
},
'sanitize_calback' => 'absint'
)
),
'permission_callback' => function (WP_REST_Request $request) {
if(!is_user_logged_in()){
return new WP_Error('login error',__('You are not logged in','blabla'));
}
return true;
}
)
);
}
add_action('rest_api_init','myplugin_register_endpoints');
function my_end_point(WP_REST_Request $request) {
global $current_user;
$current_user = wp_get_current_user();
if($my_var){
return array('message' => $message,'items' => $items,'item'=>$item);
} else {
return new WP_Error('add friend error',__('message'),$request['id']);
}
}
我需要了解为什么在我的托管站点上请求失败
谢谢
我发现了我的错误
这是在这条线上:
返回值为数值($param)且!为空(get_post($param))//数字post id值,并且此id存在有效post
我把它改成:
返回值为数字($param)
之所以发生这种情况,是因为我复制粘贴了register\u rest\u route(…){…}部分,而没有修改“validate\u callback”逻辑
此“validate_callback”中的参数是用户ID而不是post ID。因此,检查该参数是否为post ID(…和!是否为_null(get_post($param));…)的部分与此端点无关。
因此,忽略此检查后,端点通过了“validate_回调”并停止返回错误。获取大于HTTP标头的页面时,将出现相同的错误
X-WP-TotalPages
将指示。