web-dev-qa-db-fra.com

Quelle méthode utiliser pour appeler un REST API?

Je construis un plugin pour WordPress qui communiquera avec certains noeuds finaux API distants REST et affichera les données dans un format de liste dans la vue publique de WordPress.

Quelle méthode je devrais aller pour appeler l'API -

  1. Faire un serveur de formulaire de demande en utilisant wp_remote_get()?

    Avantages -

    A. Je peux donner filter et actionhook pour modifier la présentation de base HTML.

    B. Je peux utiliser transient pour mettre en cache des données.

    Les inconvénients -

    R. Ce sera plus lent.

  2. En appelant directement le serveur d'API à partir du navigateur à l'aide de AJAX?

    Avantages -

    R. Ce sera beaucoup plus rapide.

    B. Je peux donner une fonction à remplacer pour changer la disposition de base HTML.

    Les inconvénients -

    A. Impossible de fournir Wordpress hooks.

3
Sunny Batabyal

En général, il est toujours préférable d’obtenir les informations directement à la source ... mais vous devez penser à la sécurité. L'utilisation du client API REST d'un autre domaine nécessite la désactivation des protections CORS pour ce domaine. La quantité de risque liée à cela dépend de la manière dont les domaines sont liés (ont-ils les mêmes administrateurs, le même type de données privées et autres). Cela ne devrait pas être fait à la légère et nécessite une réflexion car cela ouvre un nouveau vecteur d'attaque contre le site "principal".

OTOH si les données ne peuvent pas être mises en cache, il est "stupide" de faire deux requêtes au lieu d'une.

La bonne implémentation consiste probablement à "surcharger" les points de terminaison de l'API sur le serveur "principal" avec un domaine différent qui ne partage pas les cookies, ce qui éliminera le besoin de protection CORS. (cela suppose évidemment que l'authentification de l'utilisateur n'est pas requise pour ce que vous essayez de faire avec l'API)

2
Mark Kaplun

L'API REST inclut une bibliothèque cliente JavaScript/Backbone pour que vous puissiez aller comme ceci.

// Create a new post
var post = new wp.api.models.Post( { title: 'This is a test post' } );
post.save();


// Load an existing post
var post = new wp.api.models.Post( { id: 1 } );
post.fetch();

référence: https://developer.wordpress.org/rest-api/using-the-rest-api/backbone-javascript-client/

0
figuitiko