Wordpress Rest API自定义终结点可选参数


15

是否可以register_rest_route()在url中使用可选参数?

假设路由以这种方式注册:

register_rest_route( 'api', '/animals/(?P<id>\d+)', [
   'methods' => WP_REST_Server::READABLE,
   'callback' => 'get_animals',
   'args' => [
        'id'
    ],
] );

现在可以像/ wp-json / api / animals / 15这样在url上执行api调用,但是有一种方法可以将param声明为可选参数,从而也可以捕获/ wp-json / api / animals /这样的路由。

我也尝试过声明如下路线,但没有成功:

/animals/(?P<id>\d+)?

您可以声明不带参数的另一条路线,也可以利用GET参数,但是有没有办法做到这一点register_rest_route()

感谢您的建议。

Answers:



3

可能有一种方法用一个做到这一点register_rest_route的函数调用,我不知道该怎么做,它是理想的。但是,register_rest_route在挂钩方法中复制函数调用将完成您想要的操作。

register_rest_route( 'api', '/animals/', [
   'methods' => WP_REST_Server::READABLE,
   'callback' => 'get_animals'
] );

register_rest_route( 'api', '/animals/(?P<id>\d+)', [
   'methods' => WP_REST_Server::READABLE,
   'callback' => 'get_animals',
   'args' => [
        'id'
    ],
] );

您希望使用get_animals方法具有处理每种情况的条件。如果id设置了arg,则返回一个,然后回退检查$_GET变量。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.