REST API:未找到与URL和请求方法匹配的路径

时间:2019-10-08 作者:BroodjeBE

我在向Wordpress添加自定义REST API路由时遇到问题。使用我自己的插件,我注册了如下路线:

add_action( \'rest_api_init\', function() {
  register_rest_route( $namespace, \'handler_mijnenergie\', array(
    \'methods\'   => \'\\WP_REST_Server::CREATABLE \',
    \'callback\'  => [ $this, \'handle_energie_data\' ]
  ), false );
} );
调用名称空间“/wp-json/watz/v1”时,我在Postman中得到了正确的响应,显示了路由。enter image description here

然而,当我试图直接访问路由请求时,抛出了一个404错误。到目前为止,我已经尝试:

使用标准Wordpress重写永久链接。htaccess禁用插件更改方法/命名空间(&L);请求测试其他插件路由,如Yoast或联系表单7(它们可以正常工作)是否知道是什么导致了此问题,以及我需要更改什么才能使其正常工作?

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

这是因为您定义了可接受的方法:

\'methods\'   => \'\\WP_REST_Server::CREATABLE \',
你不应该在它周围加引号。WP_REST_Server::CREATABLE 是一个等于\'POST\', 但通过在其周围加引号,您实际上将该方法设置为\'\\WP_REST_Server::CREATABLE\', 这不是有效的HTTP方法。您可以在对命名空间端点的响应中看到这一点。

设置如下:

\'methods\' => WP_REST_Server::CREATABLE
或者,如果您的文件使用的是PHP命名空间,则如下所示:

\'methods\' => \\WP_REST_Server::CREATABLE
或将其添加到文件顶部:

use WP_REST_Server;
然后确保在直接访问路由时,使用的方法正确。如果您正在使用WP_REST_Server::CREATABLE 那么端点将只响应POST 请求,所以GET 请求将返回404,其中包括您通过浏览器访问它的时间。