REST API: Маршрут, соответствующий URL и методу запроса, не найден
У меня возникли проблемы с добавлением пользовательского маршрута REST API в WordPress. Используя собственный плагин, я зарегистрировал маршрут следующим образом:
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, показывающий, что маршрут отображается.
Однако когда я пытаюсь получить прямой доступ к маршруту, появляется ошибка 404. Я уже попробовал:
- Перезаписать постоянные ссылки
- Использовать стандартный WordPress .htaccess
- Отключить плагины
- Изменить метод/пространство имен и запрос
- Протестировать маршруты других плагинов, таких как Yoast или Contact Form 7 (они работают)
Есть ли идеи, что может вызывать эту проблему и что нужно изменить, чтобы это заработало?

Это происходит из-за того, как вы определили допустимые методы:
'methods' => '\WP_REST_Server::CREATABLE ',
Не следует заключать это в кавычки. WP_REST_Server::CREATABLE
— это строка, равная 'POST'
, но, заключая её в кавычки, вы буквально устанавливаете метод как '\WP_REST_Server::CREATABLE'
, что не является допустимым HTTP-методом. Это можно увидеть в ответе на эндпоинт namespace.
Установите его следующим образом:
'methods' => WP_REST_Server::CREATABLE
Или, если ваш файл использует пространство имен PHP, так:
'methods' => \WP_REST_Server::CREATABLE
Либо добавьте это в начало файла:
use WP_REST_Server;
Затем убедитесь, что при прямом обращении к маршруту вы используете правильный метод. Если вы используете WP_REST_Server::CREATABLE
, то эндпоинт будет отвечать только на POST
-запросы, поэтому GET
-запросы вернут 404, включая случаи доступа через браузер.
