带有空格字符的REST API自定义终结点

时间:2017-06-05 作者:timothystringer

我正在尝试添加具有以下内容的端点:

register_rest_route(\'namespace/v1\',\'custom-search/(?P<search>[a-zA-Z\\s]+)\',
        array(
            \'methods\' => \'GET\',
            \'callback\' => \'gm_custom_search_callback\'
        )
    );
它注册了路由,但当我添加一个空格字符(即%20)或传递一个带有“”的字符串时,它无法识别,我看不到任何地方可以建议如何实现这一点,我是否遗漏了什么?

1 个回复
SO网友:Picard

您可以这样做:

function get_custom_search_callback($request) {
    //$parameters = $request->get_params();
    $response = urldecode($request->get_param(\'search\'));

    return rest_ensure_response($response);
}

add_action(\'rest_api_init\', \'add_custom_users_api\');
function add_custom_users_api(){
    register_rest_route(\'namespace/v1\',
                        \'custom-search/(?P<search>([a-zA-Z]|%20)+)\',
                        array(
                            \'methods\' => \'GET\',
                            \'callback\' => \'get_custom_search_callback\'
                        )
                    );
}
注意两件事:

您必须添加%20 对于匹配的字符集,您必须urldecode() 这个search 要删除的变量值%20 以及其他可能的URL编码字符(如果您将其放入正则表达式中)

结束

相关推荐

Dynamic Endpoints

我在WordPress外部有一个数据库表,需要为其创建端点。我已经创建了一个页面/cars/ 我计划使用页面模板生成链接。我希望url看起来像/cars/camaro/ ()/cars/%model%/ ). 起初,我认为我可以使用端点,但不知道如何根据从模型表中提取的段塞使它们动态。我也不确定使用Permalink结构标签是更容易还是更好。我甚至不完全确定从哪里开始,我以前创建过“静态”端点,所以我有一个基础可以跳出,但当我到达request 我不知道该怎么办。/** * Add endpoi