So erstellen Sie eine RESTful-API mit Joomla

11

Ich habe Joomla-Erweiterungen seit Version 1 erstellt, muss aber bald eine API live schalten, die ich erstellt habe und die ich seit einiger Zeit verwende. Derzeit verwende ich Joomla 2.5 und habe Plugins für dieses System geschrieben:

https://github.com/techjoomla/com_api

Bevor ich live gehe, möchte ich das System so weit wie möglich zukunftssicher machen. Diese API-Komponente wurde erst kürzlich aktualisiert, um mit Joomla v3 zu arbeiten. Daher wird derzeit verhindert, dass die Site aktualisiert wird. Ich denke auch, dass die Trennung der öffentlichen API und des Benutzerportals sinnvoll ist, da die integrierte Erweiterung keinen Vorteil bringt, da die API von mobilen Apps verwendet wird.

Derzeit ist geplant, die API in einer Subdomain neu zu erstellen, um das Benutzerportal zu aktualisieren. Ich habe über das neue Joomla-Framework gelesen, das aufregend aussieht. Wäre dies geeignet, um eine RESTful-API für unsere mobilen Apps zu erstellen? Wenn ja, sind sie Tipps für den Einstieg? Ich habe gelesen, dass FoF zum Erstellen einer API verwendet werden kann. Wäre dies eine gute Wahl? Ich habe gesehen, dass das Kickstarter-Projekt genau diese Art von API erstellen will. Ist das eine mögliche Option? Sollte ich nur die aktuelle 2.5-Site für die Subdomain entfernen, damit nur die API ausgeführt wird?

Vorschläge zum besten Ansatz für die Erstellung einer Joomla-basierten RESTful-API für die mobile Interaktion werden sehr geschätzt.

Joe P.
quelle
1
Ich habe gerade diese neuen Erweiterungen im Joomla-Erweiterungsverzeichnis gesehen, die für Sie nützlich sein könnten: extensions.joomla.org/extensions/core-enhancements/libraries/…
Lodder

Antworten:

8

Meiner Erfahrung nach:

Über das Joomla-Framework

Ich habe versucht, eine einfache RESTful-API für die integrierte Authentifizierung basierend auf dem Joomla-Framework zu erstellen. Es ist ziemlich komplex und unterscheidet sich erheblich von der aktuellen Joomla-API. Außerdem kann der aktuelle Quellcode nicht kopiert werden, und Bibliotheken können unerwartete Ergebnisse zurückgeben (die in einer anderen Umgebung ausgeführt werden). Ich werde warten, bis mehr Code verfügbar ist und er eine größere Akzeptanz hat.

Über das FOF-Framework

Ich entwickle derzeit nur mit FOF. Sehr praktisch, viel RAD, automatische Konfiguration usw.; und Code ist kompatibel mit J2.5 / J3.

Für eine RESTful-API können Sie einfach das todo-fof-Beispiel abrufen und einen Controller mit der API hinzufügen. Beispiel:

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();

}

Sie können auch automatische JSON-Ansichten nutzen. Beispielsweise kann eine Browseransicht (default.php) eine JSON-Ausgabe generieren (nur Hinzufügen default_json.phpund echo json_encode...).

Anibal
quelle
1
Das einzige Problem mit FOF, wie ich es verstehe, ist, dass es vom Entwickler im Joomla-Kern nicht mehr unterstützt wird ... obwohl ich verstehe, dass eine Version von FOF neu gegabelt wurde und weitergeht, nur nicht als Teil von Joomla?
Craig
Sie haben Recht, aber es ist überhaupt kein Problem. Joomlas FOF ist ziemlich stabil (ich habe meine Erweiterungen noch nicht aktualisiert). Neues F0F muss als neue Bibliothek installiert werden (... am Ende muss es immer in J2.5 installiert werden ... und das Installationsprogramm ist bereit für J3). Derzeit werden 99% des Quellcodes nicht geändert.
Anibal
Vielen Dank für Ihre Vorschläge. Ich stimme zu, dass das Joomla Framework recht komplex ist, aber ich lerne gerne, wie man es verwendet. Ich wollte versuchen, das Framework für meine API zu verwenden, da es recht einfach ist, kann es aber nicht dazu bringen, den richtigen Header für JSON zurückzugeben. Ich habe eine andere Frage dazu gestellt.
Joe P
6

com_api ist definitiv eine gute Möglichkeit, REST-Services für Ihre Site zu erstellen, wenn die Erweiterung selbst nicht auf FOF / RAD basiert. Seien Sie jedoch vorsichtig mit ein paar Fallstricken, wenn Sie eine separate Joomla-Instanz nur für die API erstellen möchten

  • Domänenspezifisches Material (z. B. Wenn Sie die Benutzerregistrierung unterstützen, enthält die Begrüßungs-E-Mail einen Link zur API-Subdomäne). Dies könnte durch Herumspielen mit der PHP-Servervariablen gemildert werden.
  • Ebenso müssen Bildpfade usw. korrekt sein, es sei denn, Sie verwenden S3

Abgesehen davon bin ich mir sicher, dass es keine Probleme geben sollte, da dies so lange weiterentwickelt wird, bis es eine de-facto Joomla-Methode zum Erstellen von APIs gibt.

Haftungsausschluss: Ich bin der Betreuer von https://github.com/techjoomla/com_api

Ashwin Date
quelle
Vielen Dank für Ihre Antwort. Es ist schön zu wissen, dass Sie sie weiterentwickeln. Ich mag die Funktionsweise von com_api, aber ich wollte vermeiden, das gesamte Joomla CMS auszuführen, nur um eine API bereitzustellen. Wenn ich das Framework nicht zum Laufen bringen kann, werde ich es definitiv weiter verwenden.
Joe P
1

Meine zwei Cent:

Für einen Kunden musste ich über eine Smartphone-App auf den Inhalt seiner Joomla-Site zugreifen. Der Inhalt wurde in com_content abgelegt, daher habe ich anfangs obRSS-Feeds verwendet. Dann habe ich jBackend auf JED gefunden und ausprobiert. Es ist hier verfügbar unter http://www.selfget.com/products/jbackend.html Der Code scheint sehr sauber zu sein und unterstützt RESTful-Anforderungen und JSON-Antworten. Die Online-Dokumentation ist begrenzt, aber für Techniker klar genug. Leider unterstützt es im Moment nur com_user und com_content, aber in meinem Fall war das in Ordnung. Jetzt sollte ich es für einen anderen Kunden verwenden, der K2 CCK verwendet. Ich versuche, ein benutzerdefiniertes Plugin für den Zugriff auf K2-Artikel und -Kategorien zu erstellen, speichere aber zumindest den gesamten Code für die Anforderungsverwaltung. Ich habe eine E-Mail an den Entwickler gesendet und er sagte mir, dass er auch an zusätzlichen Modulen wie K2 und Kunena Forum arbeitet. Es ist eine vielversprechende Erweiterung.

WizKid
quelle
1

Die folgende Site scheint eine hervorragende Quelle für Richtlinien zum Erstellen einer RESTful JSON-API zu sein:

http://jsonapi.org/

Für das, was es wert ist, starte ich auch ein API-Produkt für Joomla 3.4.x namens cAPI http://getcapi.org .

Das Hauptunterscheidungsmerkmal hier ist, dass ich mein Routing-Framework auf Slim Micro-Framework gesetzt habe. Dadurch kann ich ein bereits bewährtes, robustes Framework in die Joomla-Anwendungsinstanz integrieren. Ich habe auch eine Plugin-Architektur für die Servicerouten erstellt, die die Tür für Add-Ons und die Sicherheit von Webdiensten öffnet.

Weitere Informationen aus anderen Beiträgen finden Sie hier:

/programming/26340885/rest-api-for-joomla-3-0/32706378#32706378

Lassen Sie mich wissen, wenn Sie Fragen haben.

Steve Tsiopanos
quelle