Come costruire un'API RESTful con Joomla


11

Costruisco le estensioni di Joomla dalla v1 ma presto dovrò portare in diretta un'API che ho creato e che uso da un po '. Attualmente sto usando Joomla 2.5 e ho scritto plugin per questo sistema:

https://github.com/techjoomla/com_api

Prima di andare in diretta vorrei provare il sistema in futuro per quanto possibile. Questo componente API ha recentemente iniziato a essere aggiornato per funzionare con Joomla v3, quindi attualmente sta impedendo l'aggiornamento del sito. Penso anche che la separazione tra l'API pubblica e il portale dell'utente abbia senso in quanto non vi è alcun vantaggio dal fatto che è un'estensione integrata in quanto l'API verrà utilizzata dalle app mobili.

Il piano attuale è quello di ricostruire l'API su un sottodominio che ci consentirà di aggiornare il portale utenti. Ho letto del nuovo framework Joomla che sembra eccitante. Sarebbe adatto a creare un'API RESTful per le nostre app mobili? In tal caso, sono suggerimenti per iniziare? Ho letto che FoF può essere usato per costruire un'API, sarebbe una buona scelta? Ho visto il progetto Kickstarter che intendeva costruire esattamente questo tipo di API, è una potenziale opzione? Devo semplicemente rimuovere il sito 2.5 attuale per il sottodominio in modo che esegua solo l'API?

Tutti i suggerimenti sul miglior approccio per la creazione di un'API RESTful basata su Joomla per l'interazione mobile saranno molto apprezzati.


1
Ho appena visto queste nuove estensioni nella directory delle estensioni di Joomla che potrebbero esserti utili: extensions.joomla.org/extensions/core-enhancements/libraries/…
Lodder

Risposte:


8

Dalla mia esperienza:

Informazioni sul framework Joomla

Ho provato a creare una semplice API RESTful per l'autenticazione integrata basata sul framework Joomla. È abbastanza complesso, abbastanza diverso dall'attuale API Joomla. Inoltre, il codice sorgente corrente non può essere incollato e le librerie possono restituire risultati imprevisti (in esecuzione in un ambiente diverso). Aspetterò fino a quando non sarà disponibile più codice e avrà una maggiore adozione.

Informazioni sul framework FOF

Attualmente sto sviluppando solo con FOF. Abbastanza utile, un sacco di RAD, configurazione automatica, ecc; e il codice è compatibile con J2.5 / J3.

Per un'API RESTful, puoi semplicemente prendere l'esempio todo-fof e aggiungere un controller con l'API. Esempio:

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

}

Inoltre, puoi sfruttare le viste json automatiche Ad esempio una vista di navigazione (default.php) può generare output json (solo aggiungendo default_json.phpe echo json_encode...)


1
L'unico problema con FOF, come ho capito, è che non è più supportato dallo sviluppatore nel core di Joomla ... anche se capisco che una versione di FOF è stata riproposta e sta andando avanti, ma non come parte di Joomla?
Craig,

Hai ragione, ma non è affatto un problema. Il FOF di Joomla è piuttosto stabile (non ho ancora aggiornato le mie estensioni). Il nuovo F0F deve essere installato come nuova libreria (... alla fine è necessario installarlo sempre in J2.5 ... e il programma di installazione è pronto per J3). Al momento, il 99% del codice sorgente non è cambiato.
Anibal

Grazie per i tuoi suggerimenti, concordo sul fatto che Joomla Framework sia piuttosto complesso ma mi diverto a imparare come usarlo. Volevo provare a utilizzare il framework per la mia API in quanto è abbastanza semplice ma non riesco a farlo restituire l'intestazione corretta per JSON. Ho iniziato un'altra domanda a riguardo.
Joe P

6

com_api è sicuramente un buon modo per creare servizi REST per il tuo sito se l'estensione stessa non è basata su FOF / RAD. Tuttavia, fai attenzione con alcuni trucchi se prevedi di creare un'istanza Joomla separata solo per l'API

  • Elementi specifici del dominio (ad esempio: se si supporta la registrazione dell'utente, l'email di benvenuto includerà un collegamento al sottodominio API). Questo potrebbe essere mitigato giocando con la variabile del server PHP.
  • Allo stesso modo i percorsi delle immagini ecc. Devono essere corretti, a meno che non si stia utilizzando S3

A parte questo, sono sicuro che non dovrebbero esserci problemi, dal momento che continuerà a essere sviluppato fino a quando non ci sarà un modo di fatto di Joomla di creare API.

Disclaimer: sono il manutentore di https://github.com/techjoomla/com_api


Grazie per la tua risposta, è bello sapere che stai continuando a svilupparla. Adoro come funziona com_api ma volevo provare a evitare di eseguire l'intero CMS Joomla solo per fornire un'API. Se non riesco a far funzionare il framework di cui ho bisogno, continuerò sicuramente a usarlo.
Joe P

1

I miei due centesimi:

Per un cliente dovevo accedere ai contenuti del suo sito joomla da un'app per smartphone. I contenuti sono stati inseriti in com_content, quindi inizialmente ho usato i feed obRSS. Poi ho trovato jBackend su JED e l'ho provato. È disponibile qui http://www.selfget.com/products/jbackend.html Il codice sembra molto pulito e supporta le richieste RESTful e le risposte JSON. La documentazione online è limitata ma abbastanza chiara per i tecnici. Purtroppo al momento supporta solo com_user e com_content, ma nel mio caso andava bene. Ora dovrei usarlo per un altro cliente che utilizza K2 CCK. Sto cercando di creare un plug-in personalizzato per accedere agli articoli e alle categorie di K2, ma almeno salverò l'intero codice di gestione delle richieste. Ho inviato un'email allo sviluppatore e mi ha detto che sta lavorando su moduli aggiuntivi come il forum K2 e Kunena, è un'estensione molto promettente.


1

Il seguente sito sembra essere un'ottima risorsa per le linee guida su come creare un'API JSON RESTful:

http://jsonapi.org/

Per quello che vale, sto anche lanciando un prodotto API per Joomla 3.4.x chiamato cAPI http://getcapi.org .

Il principale fattore di differenziazione qui è che ho puntato il mio framework di routing sul micro-framework Slim. Ciò mi consente di incorporare un framework già provato e testato nell'istanza dell'applicazione Joomla. Ho anche creato un'architettura plug-in per le rotte di servizio, aprendo le porte alla sicurezza dei componenti aggiuntivi e dei servizi web.

Puoi trovare ulteriori informazioni da altri post, qui:

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

Fatemi sapere se avete domande.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.