Come caricare un articolo da webservice.
Sono entrate in funzione in silenzio.
Credo che vengono usate poche volte.
Ma anche Joomla ha un webservice che permette di operare con il CMS da riga di comando e, soprattutto, di far interoperare applicazioni con il nostro Joomla senza dover aggiungere nulla.
In questo articolo atomico vedremo:
- un'introduzione a queste mitiche web API;
- raccolta dei dati per usare le web API;
- caricamento di un articolo;
- potenzialità e conclusione.
Iniziamo!
Introduzione
Le web API sono una tecnica per parlare con Joomla attraverso l'URL da cui facciamo l'accesso al sito per usarlo e manutenerlo.
Le API, abbreviazione di Application Programming Interface, permettono di fare tutto (o quasi). Quindi sono potenti, potenzialmente pericolose e complicatine (infatti sono interfacce di programmazione).
Quindi l'uso è vincolati da meccanismi di autenticazione-verifica forti.
Inoltre normalmente si usano non con dati in formato umanamente facile, ma con dati informatici. Ad esempio per indicare una categoria non si fornisce il nome, ma l'ID numerico della categoria.
Dati necessari
Iniziamo procurandoci i dati necessari per inserire un articolo come nell'esempio seguente.
Per procedere ci serve:
- il token dell'utente autorizzato a fare aggiungere l'articolo;
- l'ID numerico della cateogira in cui lo inseriremo.
Inoltre il testo dell'articolo va inviato in formato HTML con un paio di accorgimenti;
- "
<hr id="system-readmore" />
": è la stringa che separa il testo introduttivo da testo dell'articolo; - i caratteri
"
(virogolette) vanno escappati, cioè trasformati in\"
; - il carattere
'
(apostrofo) va sostituito con la rappresentazione HTML, cioè'
; - i ritorni a capo vanno sostituiti con
\r\n
.
In pratica il testo diventa una unica lunga.
Facciamo un esempio. Il testo HTML che segue:
<p>Introduzione dell'articolo.</p>
<hr id="system-readmore" />
<p>Articolo completo.<br>
Fine dell'articolo.<p>
Deve diventare come segue:
<p>Introduzione dell'articolo.</p>\r\n<hr id=\"system-readmore\" />\r\n<p>Articolo completo.<br>\r\nFine dell'articolo.<p>
Nel seguente esempio ci serve anche:
- token dell'utente: c2hhMjeLATVZveeaXAgZtXdYiK/69AtCksclBerNDC2X5cQ0jtdzN5+L2ENB+7IHq5V4FzPG6bcYXNxLTXZpVRE7mYK60k4UXLYM
- ID della categoria: 14
Ovviamente questi dati sono esempi di fantasia, non reali, ma sono come quelli reali.
L'URL del nostro sito joomla è "https://www.example.com".
# Inserire un articolo
Procediamo con il comando pratico.
Operiamo con il programma curl da una shell *nix. Se usiamo Windows si può usare il porting di curl. Se usiamo Mac basta installarlo.
Con i dati sopra raccolti la stringa di comando è la seguente:
curl --location \
--request POST 'https://www.example.com/api/index.php/v1/content/articles' \
--header 'Content-Type: application/json' \
--header 'X-Joomla-Token: c2hhMjeLATVZveeaXAgZtXdYiK/69AtCksclBerNDC2X5cQ0jtdzN5+L2ENB+7IHq5V4FzPG6bcYXNxLTXZpVRE7mYK60k4UXLYM' \
--data-raw '{
"title": "Esempio inserimento via web API",
"catid": 14,
"created_by_alias": "Nome Cognome Autore",
"language": "*",
"metadesc": "",
"metakey": "",
"state": 1,
"articletext": "<p>Introduzione dell'articolo.</p>\r\n<hr id=\"system-readmore\" />\r\n<p>Articolo completo.<br>\r\nFine dell'articolo.<p>"}'
Potenzialità e conclusione
Penso che tutti abbiano ben chiaro le grandi potenzialità che offre questo metodo.
Ideale per operazioni massive automatizzate (inserimenti in massa, cancellazioni massive, estrazione di tutto il contenuto, ecc...).
Il testo HTML va trattato, ma è una codifica e decodifica piuttosto semplice.
Da sapere che Joomla offre un pool ambio di API che permettono sostanzialmente di fare tutto.
Per chi è interessato le informazioni sono nella manualistica ufficiale:
Joomla Core APIs, https://docs.joomla.org/J4.x:Joomla_Core_APIs
Web Services, https://manual.joomla.org/docs/general-concepts/webservices/