webentwicklung-frage-antwort-db.com.de

Rest API Custom Endpoint mit Leerzeichen

Ich versuche, einen Endpunkt mit den folgenden Elementen hinzuzufügen:

register_rest_route('namespace/v1','custom-search/(?P<search>[a-zA-Z\s]+)',
        array(
            'methods' => 'GET',
            'callback' => 'gm_custom_search_callback'
        )
    );

Die Route wird registriert, aber nicht erkannt, wenn ich ein Leerzeichen, d. H.% 20, hinzufüge oder eine Zeichenfolge mit einem "" in übergebe. Ich kann nirgendwo sehen, was darauf hindeutet, wie dies erreicht werden soll. Fehlt mir etwas?

2
timothystringer

Du kannst das so machen:

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'
                        )
                    );
}

Beachten Sie zwei Dinge:

  • sie müssen %20 zum übereinstimmenden Zeichensatz hinzufügen
  • um den %20 und möglicherweise andere urlencodierte Zeichen zu entfernen, müssen Sie den search-Variablenwert urldecode() (wenn Sie ihn in den regulären Ausdruck einfügen)
1
Picard