API REST: No se encontró ninguna ruta que coincida con la URL y el método de solicitud

8 oct 2019, 15:17:07
Vistas: 28K
Votos: 3

Estoy teniendo problemas al agregar una ruta personalizada de API REST a WordPress. Usando mi propio plugin, he registrado la ruta de la siguiente manera:

add_action( 'rest_api_init', function() {
  register_rest_route( $namespace, 'handler_mijnenergie', array(
    'methods'   => '\WP_REST_Server::CREATABLE ',
    'callback'  => [ $this, 'handle_energie_data' ]
  ), false );
} );

Cuando llamo al namespace "/wp-json/watz/v1" obtengo una respuesta correcta en Postman que muestra la ruta. Captura de pantalla mostrando respuesta en Postman

Sin embargo, cuando intento acceder a la ruta directamente, recibo un error 404. Hasta ahora he intentado:

  • Reescribir los enlaces permanentes
  • Usar el .htaccess estándar de WordPress
  • Deshabilitar plugins
  • Cambiar el método/namespace y la solicitud
  • Probar otras rutas de plugins como Yoast o Contact Form 7 (estas funcionan)

¿Alguna idea de qué podría estar causando el problema y qué necesito modificar para que funcione?

0
Todas las respuestas a la pregunta 1
1

Es por cómo has definido los métodos aceptados:

'methods'   => '\WP_REST_Server::CREATABLE ',

No deberías tener comillas alrededor. WP_REST_Server::CREATABLE es una cadena que equivale a 'POST', pero al poner comillas alrededor estás configurando literalmente el método como '\WP_REST_Server::CREATABLE', que no es un método HTTP válido. Puedes ver esto en la respuesta al endpoint del namespace.

Configúralo así:

'methods' => WP_REST_Server::CREATABLE

O, si tu archivo está usando un namespace de PHP, así:

'methods' => \WP_REST_Server::CREATABLE

O agrega esto al inicio del archivo:

use WP_REST_Server;

Luego asegúrate de que cuando accedas a la ruta directamente, estés usando el método correcto. Si estás usando WP_REST_Server::CREATABLE, entonces el endpoint solo responderá a solicitudes POST, por lo que las solicitudes GET devolverán un 404, lo que incluye cuando accedes a través del navegador.

8 oct 2019 16:32:05
Comentarios

¡Gracias por la retroalimentación, eso funcionó de maravilla! Aprendí algo nuevo nuevamente hoy :)

BroodjeBE BroodjeBE
9 oct 2019 11:19:45