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

今天在写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,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 提交,所以报错了,改正一下提交方式即可。

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

相关文章

我想将wordpress的默认接口路由改掉,愿意是默认的带一个 wp...
wordpress自定义分类法之后,我看到链接都自动在后面添加了一...
事情是这样的,我用 get_post_type 函数创建了一个自定义分类...
最近网站莫名其妙的被顶上了,过一个多小时,就注册一个账号...
最近服务器要到期了,就想着把网站转移到另外一台服务器,本...
今天在写wordpress的接口,然后碰到个奇怪的问题,怎么访问都...