web-dev-qa-db-fra.com

Comment construire une API RESTful avec Joomla

Je construis des extensions Joomla depuis la v1, mais il me faut bientôt mettre en production une API que j'ai construite et que j'utilise depuis longtemps. J'utilise actuellement Joomla 2.5 et ai écrit des plugins pour ce système:

https://github.com/techjoomla/com_api

Avant de mettre en ligne, je voudrais faire la preuve du système autant que possible. Ce composant API a récemment commencé à être mis à niveau pour fonctionner avec Joomla v3. Il empêche donc actuellement la mise à niveau du site. Je pense également que la séparation de l'API publique et du portail utilisateur est logique dans la mesure où il ne présente aucun avantage en tant qu'extension intégrée, car l'API sera utilisée par les applications mobiles.

Le plan actuel consiste à reconstruire l'API sur un sous-domaine, ce qui nous permettra de mettre à niveau le portail utilisateur. J'ai lu sur le nouveau framework Joomla qui a l'air excitant. Cela conviendrait-il à la construction d'une API RESTful pour nos applications mobiles? Si oui, sont-ils des conseils pour commencer? J'ai lu que FoF peut être utilisé pour construire une API, serait-ce un bon choix? J'ai vu le projet Kickstarter dans le but de construire exactement ce type d'API, est-ce une option potentielle? Devrais-je simplement supprimer le site 2.5 actuel pour le sous-domaine afin qu'il n'exécute que l'API?

Toute suggestion sur la meilleure approche pour la création d'une API RESTful pour l'interaction mobile basée sur Joomla sera grandement appréciée.

11
Joe P

Selon mon expérience:

À propos du framework Joomla

J'ai essayé de créer une API RESTful simple pour une authentification intégrée basée sur le framework Joomla. C'est assez complexe, assez différent de l'API Joomla actuelle. De plus, le code source actuel ne peut pas être copié-collé et les bibliothèques peuvent renvoyer des résultats inattendus (en cours d'exécution dans un environnement différent). Je vais attendre que plus de code soit disponible et qu'il soit mieux adopté.

À propos du cadre FOF

Je ne développe actuellement qu'avec FOF. Très pratique, beaucoup de RAD, configuration automatique, etc. et le code est compatible avec J2.5/J3.

Pour une API RESTful, vous pouvez simplement récupérer l'exemple todo-fof et ajouter un contrôleur avec l'API. Exemple:

public function getIndexStatus()
{
    // CSRF prevention
    if ($this->csrfProtection)
    {
        $this->_csrfProtection();
    }

    $message['status'] = true;
    $message['error_message'] = 'Status Ok';

    $message = json_encode($message);
    echo $message;
    flush();

    JFactory::getApplication()->close();

}

Vous pouvez également tirer parti des vues automatiques Json, par exemple. une vue de navigation (default.php) peut générer une sortie json (en ajoutant simplement default_json.php et echo json_encode ...)

8
Anibal

com_api est certainement un bon moyen de créer des services REST pour votre site si l'extension elle-même n'est pas basée sur FOF/RAD. Cependant, soyez prudent avec quelques pièges si vous envisagez de créer une instance Joomla distincte. seulement pour l'API

  • Contenu spécifique à un domaine (par exemple: si vous prenez en charge l’enregistrement d’utilisateur, le courrier électronique de bienvenue inclura un lien vers le sous-domaine de l’API). Cela pourrait être atténué en jouant avec la variable serveur PHP.
  • De même, les chemins d’image, etc. doivent être corrects, sauf si vous utilisez S3.

En dehors de cela, je suis sûr qu'il ne devrait y avoir aucun problème, car cela continuera à être développé jusqu'à ce qu'il existe une manière de facto de créer des API Joomla.

Disclaimer: Je suis le responsable de https://github.com/techjoomla/com_api

6
Ashwin Date

Mes deux centimes:

Pour un client, j'avais besoin d'accéder au contenu de son site joomla à partir d'une application pour smartphone. Le contenu a été placé dans com_content, c'est pourquoi j'ai d'abord utilisé les flux obRSS. Ensuite, j'ai trouvé jBackend sur JED et l'ai essayé. Il est disponible ici http://www.selfget.com/products/jbackend.html Le code semble très propre et prend en charge les requêtes RESTful et les réponses JSON. La documentation en ligne est limitée mais suffisamment claire pour les techniciens. Malheureusement, pour le moment, il ne supporte que com_user et com_content, mais dans mon cas, tout allait bien. Maintenant, je devrais l'utiliser pour un autre client qui utilise K2 CCK. J'essaie de créer un plugin personnalisé pour accéder aux articles et aux catégories de K2, mais au moins, je sauvegarderai le code de gestion complet des requêtes. J'ai envoyé un email au développeur et il m'a dit qu'il travaillait sur des modules supplémentaires comme K2 et le forum Kunena également, c'est une extension très prometteuse.

1
WizKid

Le site suivant semble être une excellente ressource pour des instructions sur la création d'une API JSON RESTful:

http://jsonapi.org/

Pour ce que cela vaut, je lance également un produit API pour Joomla 3.4.x appelé cAPI http://getcapi.org .

Le principal différenciateur ici est que j'ai implanté mon framework de routage sur le micro-framework Slim. Cela me permet d’incorporer un cadre robuste déjà éprouvé et testé dans l’instance d’application Joomla. J'ai également créé une architecture de plug-in pour les itinéraires de service, ouvrant ainsi la porte aux modules complémentaires et à la sécurité des services Web.

Vous pouvez trouver des informations supplémentaires à partir d'autres articles, ici:

https://stackoverflow.com/questions/26340885/rest-api-for-joomla-3-0/32706378#32706378

Faites moi savoir si vous avez des questions.

1
Steve Tsiopanos