Update text of article via API
-
ciao a tutti, ho installato sul mio server, "Joomla versione "5.2.5" .
Ho la necessità di aggiornare dinamicamente gli articoli usando le api da un playbook ansible.
Probabilmente sto usando l'approccio sbagliato, perché riesco ad aggiornare quasi tutti i campi nel mio articolo tranne il corpo dell'articolo. Le Api Rest che chiamo sono:-
Recupera un articolo esistente (GET) - GET /api/index.php/v1/content/articles/{{ article_id }}
-
Aggiorna un articolo (PATCH) - PATCH /api/index.php/v1/content/articles/{{ article_id }}
Ho provato anche a creare un Plugin, tecnica funzionante in vers. 4, Ma niente da fare .
Qualcuno di voi ha già affrontato questo problema ?
Grazie
Francesco -
-
Ciao, purtroppo non so darti una risposta perchè non ho quasi mai lavorato con le API, però tempo fa sul magazine di joomla avevano fatto qualche articolo a riguardo. Qui c'è la parte su GET e PATCH: https://magazine.joomla.org/all-issues/march-2023/playing-with-the-joomla-api-part-2 con anche esempi di codice e qualche spiegazione aggiuntiva... spero possa esserti utile, ciao!
-
@jabba Avevo provato quella guida tempo fa, interessante, però mi funzionava solamente se lanciavo manualmente i script, ma non sono riuscito a farlo funzionare per aggiornare articoli da google drive...
-
la guida l'ho testata anche io ma nulla da fare, cambio tutti gli attributi ma non riesco con text che dovrebbe essere un risultato della concatenazione di introtext e fulltext e neppure con articletest
-
risolto l'arcano ,
la seguente curl fallisce per due cause :curl -X PATCH "https://mioJoomla.priv/api/index.php/v1/content/articles/463"
-H "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxx"
-H "Content-Type: application/vnd.api+json"
-d '{
"data": {
"id": "463",
"type": "articles",
"attributes": {
"text": "<p>Test update from API</p>",
"introtext": "<p>Intro from API</p>",
"fulltext": "<p>Full from API</p>"
}
}
}'1° causa i campi
"text": "<p>Test update from API</p>",
"fulltext": "<p>Full from API</p>"
sono in sola lettura2° causa : nel header "application/vnd.api+json" non va bene e non viene letto correttamente in fase di PATCH
QUERY OK cambia titolo e testo e
curl -k --location --request PATCH 'https://mioJoomla.priv/api/index.php/v1/content/articles/463'
--header 'Content-Type: application/json'
--header 'Authorization: Bearer xxxxxxxxxxxxxxxx'
--data '{
"title": "Lista aggiornata",
"introtext": "cambio testo ",
"catid": 29,
"language": ""
}'*Fare attenzione al contenuto di "introtext": alcune formattazioni invalidano la PATCH
-
inoltre se utilizzate Ansible/Awx si inserisce un ulteriore difficoltà :
Il modulo uri di Ansible esegue una richiesta PATCH senza includere l'header Accept.
Tuttavia, il modulo uri imposta automaticamente alcuni header, tra cui Accept, e non offre un metodo diretto per escluderli.
Per Avere il controllo completo sugli header inviati nella richiesta va utilizzato il comando curl all'interno di un task shell, -
Buono a sapersi, grazie per il feedback!