【问题标题】:Setting up url with parameter that can be consumed by web service使用 Web 服务可以使用的参数设置 url
【发布时间】:2019-01-17 03:48:17
【问题描述】:

我正在 WordPress REST API 中设置一个自定义端点,它将调用一条 SQL 语句。我不知道应该如何使用需要传入的参数设置 url,然后如何将其从 url 中取出以便可以在 SQL 查询中使用。

我已尝试将我的网址设为以下内容: https://www.mywebsitename.com/wp-json/prayerRequest/v1/1

我得到的回复是: {"code":"rest_no_route","message":"没有找到匹配 URL 和请求方法的路由","data":{"status":404}}

最后的1是我需要传入的id。

这是我的代码:

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 末尾的 id。

示例: url https://www.mywebsitename.com/wp-json/prayerRequest/v1/1 将导致 SQL 查询 SELECT * FROM wp_prayer_requests WHERE id = 1

【问题讨论】:

  • 你试过完整的 url 吗?比如 base_url + 'prayerRequest/v1'
  • register_rest_route('https://www.mywebsite.com/wp-json/prayerRequest/v1', '/{id}', array('methods' => 'GET', 'callback ' => 'getPrayerRequestById' ));

标签: php wordpress restful-url


【解决方案1】:

我想出了解决问题的语法。

路线:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    相关资源
    最近更新 更多