Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Wordpress wp rest api v2错误400(错误请求);对象{代码:“rest”无效参数,消息:“无效参数:id”,数据:Object}_Angularjs_Wordpress_Api_Rest - Fatal编程技术网

Angularjs Wordpress wp rest api v2错误400(错误请求);对象{代码:“rest”无效参数,消息:“无效参数:id”,数据:Object}

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} 另

本地主机请求使用“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代码中,我写道:

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
将指示。