使用register_rest_route自定义接口的时候一直报rest_no_route的解决方案

2023年3月28日 飞飞 阅读(1.3K)
知识付费主题,优惠促销中:xx-blog主题

今天在写wordpress的接口,然后碰到个奇怪的问题,怎么访问都提示 rest_no_route 的错误,然后就一直跟踪代码,终于找到原因所在。

报错信息

{
"code": "rest_no_route",
"message": "未找到匹配URL和请求方式的路由。",
"data": {
"status": 404
}
}

原因分析

register_rest_route( string $namespace, string $route, array $args = array(), bool $override = false )

$namespace 访问url地址第一段

$route 访问具体的地址,包括参数

$args 复合参数,必须要有,否则会报错

$args 必须要包括 methods、callback、permission_callback 三个字段

methods 指明是 GET 还是 POST 或者其他HTTP请求,可以使用字符串,也可以使用 WordPress 定义的常量:

WP_REST_Server::READABLE = ‘GET’

WP_REST_Server::EDITABLE = ‘POST, PUT, PATCH’

WP_REST_Server::DELETABLE = ‘DELETE’

WP_REST_Server::ALLMETHODS = ‘GET, POST, PUT, PATCH, DELETE’

callback 和 permission_callback 分别是回调函数,和权限检查回调函数。实际中有时不提供 permission_callback 也不会报错,有时却会报Waring警告,具体原因未知。如果,不需要权限控制,可以简单地指定为 ‘__return_true’。

实例演示

add_action('rest_api_init', function () {
register_rest_route('foo', '/foo', array(
'methods' => 'GET',
'callback' => function () {
return 'ffzhuti.com';
},
'permission_callback' => '__return_true',
));
});

上面是具体的用法,报错的原因呢,没有传 methods,默认的是 GET 方式,但是我一直在用 POST 提交,所以报错了,改正一下提交方式即可。

说白了,还是对这个用法不是那么熟悉,否则也不会有问题,多做主题吧。


关注微信公众号『xx主题网

第一时间了解最新网络动态
关注博主不迷路~

未经允许不得转载:xx主题网 » 使用register_rest_route自定义接口的时候一直报rest_no_route的解决方案
分享到:

评论抢沙发

要发表评论,您必须先

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

扫码关注微信公众号

扫描关注xx主题网