it-swarm-eu.dev

Come costruire un'API RESTful con Joomla

Sto costruendo 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 dell'API pubblica e del portale degli utenti abbia senso in quanto non vi è alcun vantaggio dal fatto che si tratta di 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.

11
Joe P

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 es. una vista di navigazione (default.php) può generare output json (semplicemente aggiungendo default_json.php e echo json_encode ...)

8
Anibal

com_api è sicuramente un buon modo per creare REST servizi 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). Ciò potrebbe essere mitigato giocando con la variabile 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

6
Ashwin Date

I miei due centesimi:

Per un cliente avevo bisogno di 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 richieste RESTful e risposte JSON. La documentazione online è limitata ma abbastanza chiara per i tecnici. Sfortunatamente 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
WizKid

Il seguente sito sembra essere un'ottima risorsa per le linee guida su come costruire 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:

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

Fatemi sapere se avete domande.

1
Steve Tsiopanos