web-dev-qa-db-fra.com

Construire une coutume REST API

J'ai un site WordPress.org qui prend les entrées d'utilisateur, recherche dans une base de données personnalisée et affiche les résultats de la requête. J'ai ce travail en utilisant le wpdb class . Maintenant, j'essaie de faire en sorte que cela fonctionne pour une application Android.

D'après ce que j'ai compris, la création d'un serveur RESTful est la "meilleure pratique" actuelle en la matière. J'ai examiné des plugins qui pourraient m'aider à le faire, et j'ai rencontré:

  1. json-rest-api - Il me semble que cela n’expose que les fonctionnalités de base de WordPress (c'est-à-dire des publications, des pages, des utilisateurs, etc.) et je ne vois pas comment obtenir cela pour exécuter des requêtes personnalisées sur des non tables par défaut.

  2. Cet article de blog dit que wp mvc fait exactement ce que je veux, sauf qu'il n'a pas été mis à jour depuis plus de 2 ans, ce qui exclut tout à fait cela.

  3. Il y a aussi Jetpack mais d'après ce que j'ai vu, le json-rest-api est la version mise à jour de celui-ci et il semble ne fournir que des fonctionnalités de base.

Existe-t-il un moyen de faire fonctionner ces plug-ins pour les points de terminaison personnalisés? Ou existe-t-il d'autres plugins que je n'ai pas encore trouvés?

Si je n'utilise pas de plugin, je suppose que je devrais rouler le mien. Je peux le faire soit à partir de zéro (en utilisant wpdb, msqli ou autre chose), ou à l'aide d'une API telle que Restler .

Si je me lance moi-même dois-je créer un modèle dans mon thème, le contenu de la fonction REST et l'attribution de ce thème à une page du tableau de bord? Ou serait-il préférable d'avoir un autre serveur fonctionnant séparément de WordPress pour cela?

Autant que je sache, ce sont mes seules options. J'aimerais savoir quelles sont les meilleures pratiques recommandées pour ce genre de chose. J'ai du mal à croire que personne d'autre ne l'ait fait. Y a-t-il des options que j'ai négligées?

10
Yep_It's_Me

TL; DR

Oui, WordPress peut certainement servir de backend pour une application mobile. Oui, une page peut agir en tant que point de terminaison/interface de repos. Non, un modèle de thème n'est pas le bon territoire pour la logique. Ecrivez votre propre plugin.


Pointeurs

J'ai du mal à croire que personne d'autre ne l'ait fait.

Pour ma part, j'ai. Plus d'une fois. Et je suis presque certain que je ne suis pas seul. "Personne n'a longuement blogué à ce sujet" est probablement la notion la plus correcte.

Si je n'utilise pas de plugin, je suppose que je devrais rouler le mien. Je peux le faire soit à partir de zéro (avec wpdb, msqli ou quelque chose), ou avec l'aide d'une API telle que Restler .

Je ne sais pas "Restler" et c'est de toute façon hors de portée sur cette pile.
En ce qui concerne "utiliser wpdb, msqli ou quelque chose": vous utiliseriez certainement wpdb pour enregistrer les données (reçues) dans la base de données, mais cela n’est pas pertinent pour la logique du point final.

Un modèle de thème n'est pas ce que vous devriez examiner. Les thèmes sont destinés à une présentation visuelle. Un noeud final REST n'a pas du tout besoin d'une apparence visuelle.

Insérez le noeud final dans la page que vous souhaitez utiliser via un shortcode .

Demandez au gestionnaire de codes courts/callback d'écouter HTTP POST ou GET et d'appeler la sauvegarde de données ou d'autres méthodes secondaires en conséquence.


Est-il judicieux d’utiliser WordPress en tant que point final/backend?

Ça dépend.
Si tout ce dont vous avez besoin, c'est d'un ordinateur d'extrémité pour enregistrer les données: Non. Charger tout le cœur simplement pour enregistrer quelques lignes de code à l'aide de wpdb n'en vaut pas la peine.
Si vous avez besoin d’un backend pouvant être connecté via un navigateur Web, pouvant afficher des données tabulaires, vous permettant de modifier ces données, éventuellement avec plusieurs niveaux d’accès/rôles et droits d’utilisateur, alors avoir un sens.

14
Johannes Pille

API Endpoints plugin devrait couvrir tous vos besoins, surtout si vous êtes familier avec MySQL. Vous feriez les étapes suivantes:

  1. Créez un nouveau modèle Twig, entrez votre requête MysQL pour extraire des données de votre site WordPress et utilisez la syntaxe Twig pour générer les données dans n'importe quel format. Par exemple, JSON.

  2. Créez un nouveau noeud final d'API, nommez-le et configurez-le pour utiliser le modèle Twig que vous avez créé à l'étape 1.

Une fois cela fait, répétez les étapes 1 et 2 pour chaque terminal que vous souhaitez créer. Les points de terminaison API utilisent un système d'authentification WordPress standard. Il est donc préférable de créer un utilisateur distinct dans votre WordPress et d'utiliser son nom d'utilisateur/mot de passe pour accéder à vos points de terminaison api.

0
Meglio

La nouvelle version de l'API WP REST est en version bêta, mais la documentation relative à l'enregistrement des points de terminaison personnalisés REST est très bonne. Il existe également un très petit texte explicatif sur la manière dont cela pourrait être réalisé dans la version 1, que je vais essayer car la version bêta n’est pas garantie ni stable. Je suppose que vous pouvez ensuite utiliser wpdb à partir des méthodes que vous enregistrez. En fait, je viens d'utiliser des éléments d'ACF et de les incorporer dans des objets de mon php pour créer une belle page d'index multi-propriétés interrogeable avec Nice, angularJS.

Comparaison entre WWP REST API 1 et 2 de leurs documents

0
Kyle Zimmer