Specifiche di Joomla Api

From Joomla! Documentation

This page is a translated version of the page Joomla Api Specification and the translation is 54% complete.
Outdated translations are marked like this.
Other languages:
Deutsch • ‎English • ‎français • ‎italiano
Joomla! 
4.0

Questa pagina intende riflettere le specifiche dell'API Joomla. Questo verrà aggiornato e rifletterà sempre l'ultima versione di Joomla

Autenticazione

Esiste un gruppo di plugin di autenticazione API. Core Joomla attualmente ha solo un'autenticazione di base poiché l'attenzione era focalizzata sulla costruzione dell'architettura per il progetto. Speriamo di passare a un sistema basato su token prima del rilascio di Joomla 4.0.0 stabile.

The hmac is the main security feature of our Bearer token implementation. This is the RFC 2104 HMAC of the seed data using Joomla's site secret (the $secret in configuration.php) as the key. The base64 encoded seed is stored in the database in the user profile table of the database.

The token itself is the base64-encoded representation of a string algorithm:user_id:hmac. The algorithm tells us which cryptographic hash function was used to generate the HMAC. Per the security considerations of RFC 6151 we forbid the use of the less secure cryptographic hash functions. In fact, the current implementation only allows SHA-256 and SHA-512 with SHA-256 being the (hardcoded) method used to generate the token displayed to the user. (i.e. SHA-512 is added for forward compatibility).

For security and privacy reasons users can only view their own token, even if they are Super Users. Users with com_users edit privileges can also disable, enable or reset another user's token (if they believe the token has been compromised) BUT they still cannot view it. Users can also choose to disable their own API Key.

There is also a legacy basic authentication plugin for simple local development however this is likely to be removed before the release of Joomla 4.0.0 stable.


Richieste

Negoziazione del contenuto

Joomla per impostazione predefinita restituirà le risposte API JSON quando richiesto con un'intestazione Accetta: application/json e con l'intestazione API JSON specifica. Joomla supporterà la possibilità di aggiungere altri tipi di contenuto a cui è possibile rispondere. I plugin di sistema che aggiungono questa mappatura saranno responsabili di assicurare che i componenti supportino questa mappatura. Core Joomla non supporterà tipi di contenuto aggiuntivi.


Negoziazione linguistica

Attualmente la negoziazione della lingua non è supportata. Tuttavia, ci apriamo ad aggiungere supporto per questo in futuro.

Routing

Informazioni di base

Joomla CMS deve utilizzare un router separato per l'API poiché l'API sarà rigorosamente RESTful (ovvero una richiesta POST e GET allo stesso URL darà risultati diversi). Per questo useremo quindi il router Joomla Framework che è già riposante e quindi mapperemo le richieste ad esso su variabili JInput in modo tale che dati JInput simili vengano popolati a quelli nelle Joomla Web Interface.

Poiché l'API di Joomla risiede nella cartella API di Joomla, tutte le rotte inizieranno con /api sull'URL Joomla radice. Questo non è personalizzabile a meno che tu non decida di riscrivere le posizioni delle cartelle con un file includes/defines.php personalizzato in tutti i livelli del CMS (fai tutto a tuo rischio e non aspettarti molto/nessun supporto!)


Adding Routes

I percorsi sono registrati attraverso plugin con tipo webservice. Un plugin può aggiungere uno o più percorsi (ognuno deve essere consapevole del tipo RESTful). Mentre puristicamente 1 plugin per tipo di contenuto sarebbe migliore, c'è anche un compromesso tra il numero di plugin installati sul tuo sito Joomla per la gestione. Pertanto raccomandiamo un plug-in per componente per esporre i dati dell'amministratore e quindi se stai programmando in percorsi extra un plug-in extra (ovviamente questo è solo un consiglio - i casi d'uso ovviamente variano!)

Risposte

Formato di risposta API

Joomla ha valutato diversi formati di API di risposta, tra cui JSON-LD, API JSON e Collection + JSON. Per una valutazione più dettagliata è possibile consultare in questo documento di sintesi prodotto nell'ambito del nostro progetto GSOC 2017. Abbiamo deciso di utilizzare la specifica JSON API v1.0 (al momento della produzione dell'API 1.1 non è stata creata e recentemente è diventata candidata al rilascio e nessuna delle principali librerie l'ha implementata).

La specifica API JSON v1.0 è disponibile su json api website.

Alcune interazioni batch nell'API Joomla utilizzeranno anche il modulo Successo parziale API JSON per la gestione degli errori che è possibile trovare this gist.


Richardson Maturity Model and Hypermedia

Prevediamo che Joomla rispetterà ampiamente il Livello 3 del Modello di maturità Richardson. Se vuoi leggere cosa significa questo, ti consigliamo di guardare la Fowler page su di essa. Mentre i nostri sistemi di entità (JTable e JModel) non sono ideali per questo, il che probabilmente significa un pò di dolore a breve termine quando lo inseriamo.