Настройка URL с параметром, который может использоваться веб-сервисом - PullRequest
0 голосов
/ 17 января 2019

Я настраиваю пользовательскую конечную точку в WordPress REST API, которая будет вызывать оператор SQL. Я не могу понять, как URL-адрес должен быть настроен с параметром, который должен быть передан, а затем, как получить его из URL-адреса, чтобы его можно было использовать в запросе SQL.

Я попытался использовать свой URL следующим образом: https://www.mywebsitename.com/wp-json/prayerRequest/v1/1

Ответ, который я получаю: {"code": "rest_no_route", "message": "Не найдено ни одного маршрута, соответствующего URL и методу запроса", "data": {"status": 404}}

1 в конце - это идентификатор, который мне нужно передать.

Вот мой код:

add_action('rest_api_init', 'prayer_request_routes');

function prayer_request_routes() {  
    register_rest_route('prayerRequest/v1', '/{id}', array(
        'methods' => 'GET',
        'callback' => 'getPrayerRequestById'
    ));
}

function getPrayerRequestById() {
    global $wpdb;
    $id = $_GET['id'];
    $query = "SELECT * FROM wp_prayer_requests WHERE id = $id";
    $result = $wpdb->get_results($query);
    return $result;
}

Я хочу, чтобы переменная $ id была идентификатором в конце URL-адреса.

Пример: URL https://www.mywebsitename.com/wp-json/prayerRequest/v1/1 приведет к выполнению SQL-запроса SELECT * FROM wp_prayer_requests WHERE id = 1

1 Ответ

0 голосов
/ 17 января 2019

Я выяснил синтаксис для решения моей проблемы.

Маршрут:

register_rest_route( 'prayerRequest/v1', '/(?P<id>\d+)', array(
    'methods' => 'GET',
    'callback' => 'getPrayerRequestById'
));

Функция:

function getPrayerRequestById(WP_REST_Request $request) {
    global $wpdb;
    $id = $param = urldecode($request->get_param( 'id' ));
    $query = "SELECT * FROM wp_prayer_requests WHERE id = $id";
    $result = $wpdb->get_results($query);
    return $result;
}
...