今天在写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 提交,所以报错了,改正一下提交方式即可。
说白了,还是对这个用法不是那么熟悉,否则也不会有问题,多做主题吧。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。