web-dev-qa-db-fra.com

Puis-je utiliser l'API REST sur un format de permalien simple?

Récemment, toutes mes demandes d'API REST ont subitement retourné une erreur 404, Chaque demande (peu importe le point de terminaison personnalisé ou intégré).

Ensuite, j'ai pensé que c'était à cause de la structure du permalink. /wp-json/ n'est pas accessible sous permalink, car aucune règle de redirection n'est disponible pour le moment.

Est-il possible d'utiliser les noeuds finaux REST dans cette situation? Personnalisé et intégré.

8
Jack Johansson

Oui, vous pouvez. Ajoutez simplement le paramètre de requête rest_route.

Alors

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

deviendrait

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

Ou https://wordpress.org/wp-json/wp/v2/ deviendrait https://wordpress.org/?rest_route=/wp/v2 pour vous donner un exemple plus complet.

Alors vous vous demandez comment choisir lequel utiliser? Ne vous inquiétez plus, il existe une fonction pour cela: get_rest_url()

Une autre option est le fait que, par défaut, l'en-tête <link> donne la racine de l'API.

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

Donc, au cas où vous auriez besoin de comprendre cela du côté client, JS utilisera simplement quelque chose le long des lignes de

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

Donc, fondamentalement, vous ne devriez pas prendre la partie wp-json comme donnée (et la coder en dur) mais la construire de manière dynamique, en utilisant get_rest_url() ou l’approche JS susmentionnée.

15
kraftner

Vous pouvez ajouter une réécriture sur votre serveur Web.

E.g pour nginx

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