REST API: Nessuna route trovata corrispondente all'URL e al metodo di richiesta

8 ott 2019, 15:17:07
Visualizzazioni: 28K
Voti: 3

Sto avendo problemi nell'aggiungere una route REST API personalizzata a WordPress. Utilizzando il mio plugin, ho registrato la route in questo modo:

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

Quando chiamo il namespace "/wp-json/watz/v1" ottengo una risposta corretta in Postman che mostra la route. Screenshot della risposta di Postman che mostra la route REST API

Tuttavia, quando provo ad accedere direttamente alla richiesta della route, ricevo un errore 404. Finora ho provato:

  • Riscrivere i permalink
  • Utilizzare il .htaccess standard di WordPress
  • Disabilitare i plugin
  • Modificare il metodo/namespace & richiesta
  • Testare altre route dei plugin come Yoast o Contact Form 7 (che funzionano)

Qualcuno ha idea di cosa potrebbe causare il problema e cosa devo modificare per farlo funzionare?

0
Tutte le risposte alla domanda 1
1

È a causa di come hai definito i metodi accettati:

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

Non dovresti avere le virgolette attorno. WP_REST_Server::CREATABLE è una stringa che equivale a 'POST', ma mettendo le virgolette attorno stai impostando letteralmente il metodo come '\WP_REST_Server::CREATABLE', che non è un metodo HTTP valido. Puoi verificarlo nella risposta all'endpoint del namespace.

Impostalo così:

'methods' => WP_REST_Server::CREATABLE

Oppure, se il tuo file utilizza un namespace PHP, così:

'methods' => \WP_REST_Server::CREATABLE

O aggiungi questo all'inizio del file:

use WP_REST_Server;

Poi assicurati che quando accedi alla route direttamente, stai usando il metodo corretto. Se stai usando WP_REST_Server::CREATABLE, allora l'endpoint risponderà solo a richieste POST, quindi le richieste GET restituiranno un 404, incluso quando vi accedi tramite browser.

8 ott 2019 16:32:05
Commenti

Grazie per il feedback, ha funzionato perfettamente! Ho imparato qualcosa di nuovo anche oggi :)

BroodjeBE BroodjeBE
9 ott 2019 11:19:45