Posso usare l'API REST su un semplice formato permalink?


9

Recentemente tutte le mie richieste REST-API si sono improvvisamente trasformate per restituire un errore 404, Ogni richiesta (indipendentemente dall'endpoint personalizzato o incorporato).

Poi ho pensato che fosse a causa della struttura del permalink. /wp-json/non è accessibile con il semplice permalink, poiché al momento non è disponibile alcuna regola di reindirizzamento.

È possibile utilizzare gli endpoint REST in questa situazione? Sia personalizzato che integrato.

Risposte:


16

Si, puoi. Aggiungi il rest_routeparametro query.

Così

https://wordpress.org/wp-json/

potrebbe diventare

https://wordpress.org/?rest_route=/

O https://wordpress.org/wp-json/wp/v2/diventerebbe https://wordpress.org/?rest_route=/wp/v2per darti un esempio più completo.

Quindi ti stai chiedendo come decidere quale utilizzare? Non preoccuparti più, c'è una funzione per questo:get_rest_url()

Un'altra opzione è il fatto che per impostazione predefinita c'è un <link>nell'intestazione che ti dà la radice dell'API.

<link rel='https://api.w.org/' href='https://wordpress.org/wp-json/' />

Quindi, nel caso in cui sia necessario capirlo dal lato client, JS usa semplicemente qualcosa di simile

document.querySelectorAll('link[rel="https://api.w.org/"]')[0].getAttribute('href');

Quindi in sostanza non dovresti prendere la wp-jsonparte come data (e hardcodificarla) ma costruirla sempre in modo dinamico usando get_rest_url()o l'approccio JS sopra menzionato.


Quindi, se voglio usarlo in parole povere, sarebbe qualcosa del genere https://wordpress.org/?rest_route=SOMEPATH&value1=X&value2=Y? Questo significa che devo avere un condizionale per rilevare la struttura del permalink e cambiare il percorso REST in base a quello?
Jack Johansson

Beh, forse non è un condizionale, ma è necessario costruirlo in modo dinamico. Vedi le modifiche sopra.
Kraftner,

come useresti questa rotta con jsonp? Ho provato /?rest_route=/?_jsonp=callBackfnma ottengo uno stato 404.
redshift

@redshift Di solito si prega di aprire una domanda separata per cose come queste. Nel tuo caso dovresti leggere su delimitatori di stringhe di query en.wikipedia.org/wiki/Query_string#Structure Dovresti scriverlo in questo modo/?rest_route=/&_jsonp=callBackfn
kraftner

1

Puoi aggiungere una riscrittura sul tuo server web.

Ad esempio per nginx

location ~ ^/wp-json/ {
    rewrite ^/wp-json/(.*?)$ /?rest_route=/$1 last;
}

0

Il rest_routeparametro query è lo Uglystile (Permalink di Wordpress di parole non mie). Puoi cambiare lo stile del permilink Post namecome illustrato nella schermata seguente e il wp-jsonpercorso dovrebbe essere accessibile dall'URL. È possibile che altri di questi stili di permilink funzionino, ma ha Post namefunzionato per me e non ho esplorato oltre

Immagine che illustra i clic sui pulsanti necessari per modificare le impostazioni

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.