Supporto per frammenti di contenuto nell’API HTTP di AEM Assets content-fragments-support-in-aem-assets-http-api

Panoramica overview

Versione
Collegamento articolo
AEM 6.5
Fai clic qui
AEM as a Cloud Service
Questo articolo

Scopri il supporto per i frammenti di contenuto nell’API Assets HTTP di, un’importante componente della funzione di distribuzione headless di Adobe Experience Manager (AEM).

NOTE
Il API HTTP di Assets comprende:
  • API REST di Assets
  • incluso il supporto per i frammenti di contenuto
L’implementazione corrente dell’API Assets HTTP si basa sulla REST stile architettonico.
NOTE
Per informazioni aggiornate sulle API di Experience Manager, visita anche API di Adobe Experience Manager as a Cloud Service.

Il API REST di Assets consente agli sviluppatori di Adobe Experience Manager as a Cloud Service di accedere ai contenuti (memorizzati nell’AEM) direttamente tramite l’API HTTP, mediante operazioni CRUD (Create, Read, Update, Delete).

L’API consente di utilizzare Adobe Experience Manager as a Cloud Service come CMS (Content Management System) headless fornendo Content Services a un’applicazione front-end JavaScript. Oppure qualsiasi altra applicazione in grado di eseguire richieste HTTP e gestire risposte JSON.

Ad esempio: Applicazioni a pagina singola (SPA), basati su framework o personalizzati, richiedono contenuti forniti tramite l’API HTTP, spesso in formato JSON.

Mentre Componenti core AEM fornisce un’API personalizzabile che può servire alle operazioni di lettura necessarie a questo scopo e il cui output JSON può essere personalizzato richiede il know-how WCM (Web Content Management) dell’AEM per l’implementazione. Questo perché devono essere ospitate in pagine basate su modelli AEM dedicati. Non tutte le organizzazioni per lo sviluppo dell'SPA hanno accesso diretto a tali conoscenze.

Qui è possibile utilizzare l’API REST di Assets. Consente agli sviluppatori di accedere direttamente alle risorse (ad esempio immagini e frammenti di contenuto), senza doverle incorporare in una pagina, e di distribuire il contenuto in formato JSON serializzato.

NOTE
Non è possibile personalizzare l’output JSON dall’API REST di Assets.

L’API REST di Assets consente inoltre agli sviluppatori di modificare i contenuti creando, aggiornando o eliminando risorse, frammenti di contenuto e cartelle esistenti.

API REST di Assets:

Prerequisiti prerequisites

L’API REST di Assets è disponibile per ogni installazione predefinita di una versione di Adobe Experience Manager as a Cloud Service recente.

Concetti fondamentali key-concepts

Le offerte API REST di Assets RESTaccesso in stile alle risorse memorizzate all’interno di un’istanza AEM.

Utilizza il /api/assets e richiede il percorso della risorsa per accedervi (senza l'opzione /content/dam).

  • Ciò significa che per accedere alla risorsa in:
    • /content/dam/path/to/asset
  • Richiesta:
    • /api/assets/path/to/asset

Ad esempio, per accedere a /content/dam/wknd/en/adventures/cycling-tuscany, richiedi /api/assets/wknd/en/adventures/cycling-tuscany.json

NOTE
l’accesso a:
  • /api/assets non è necessario l’uso del selettore .model.
  • /content/path/to/page richiede l’uso del selettore .model.

Il metodo HTTP determina l’operazione da eseguire:

  • GET: per recuperare una rappresentazione JSON di una risorsa o di una cartella
  • POST : per creare risorse o cartelle
  • PUT: per aggiornare le proprietà di una risorsa o di una cartella
  • DELETE: per eliminare una risorsa o una cartella
NOTE
Il corpo della richiesta e/o i parametri URL possono essere utilizzati per configurare alcune di queste operazioni; ad esempio, definisci che una cartella o una risorsa debbano essere create da una richiesta POST.

Il formato esatto delle richieste supportate è definito nel Riferimento API documentazione.

Comportamento transazionale transactional-behavior

Tutte le richieste sono atomiche.

Ciò significa che il successivo (write) non possono essere combinate in una singola transazione che potrebbe avere esito positivo o negativo come singola entità.

API REST di AEM (Assets) e componenti AEM aem-assets-rest-api-versus-aem-components

Formato
API REST di Assets
Componente AEM
(componenti che utilizzano modelli Sling)
Casi d’uso supportati
Obiettivo generale.

Ottimizzato per l’utilizzo in un contesto di applicazione a pagina singola (SPA) o in qualsiasi altro contesto (che consuma contenuti).

Può anche contenere informazioni di layout.

Operazioni supportate

Crea, Leggi, Aggiorna, Elimina.

Con operazioni aggiuntive, a seconda del tipo di entità.

Sola lettura.
Accesso

È accessibile direttamente.

Utilizza il /api/assets endpoint, mappato a /content/dam (nell’archivio).

Un esempio di percorso sarà simile al seguente: /api/assets/wknd/en/adventures/cycling-tuscany.json

Deve essere referenziato tramite un componente AEM in una pagina AEM.

Utilizza il .model per creare la rappresentazione JSON.

Un esempio di percorso sarà simile al seguente:
/content/wknd/language-masters/en/adventures/cycling-tuscany.model.json

Sicurezza

Sono possibili più opzioni.

OAuth è proposto; può essere configurato separatamente dalla configurazione standard.

Utilizza la configurazione standard dell’AEM.
Osservazioni di architettura

L'accesso in scrittura è in genere indirizzato a un'istanza Autore.

La lettura può anche essere indirizzata a un’istanza Publish.

Poiché questo approccio è di sola lettura, in genere viene utilizzato per le istanze Publish.
Output
Output SIREN basato su JSON: dettagliato, ma potente. Consente di navigare all’interno del contenuto.
Output proprietario basato su JSON; configurabile tramite modelli Sling. Navigare nella struttura del contenuto è difficile da implementare (ma non necessariamente impossibile).

Sicurezza security

Se l’API REST di Assets viene utilizzata in un ambiente senza requisiti di autenticazione specifici, il filtro AEM CORS deve essere configurato correttamente.

NOTE
Per ulteriori informazioni, consulta:

Negli ambienti con requisiti di autenticazione specifici, si consiglia OAuth.

Funzioni disponibili available-features

I frammenti di contenuto sono un tipo specifico di risorsa, vedi Utilizzo dei frammenti di contenuto.

Per ulteriori informazioni sulle funzioni disponibili tramite l’API, consulta:

Paging paging

L’API REST di Assets supporta il paging (per le richieste GET) tramite i parametri URL:

  • offset - il numero della prima entità (figlio) da recuperare
  • limit - il numero massimo di entità restituite

La risposta contiene informazioni di paging come parte del properties sezione dell'output SIREN. Questo srn:paging contiene il numero totale di entità (figlio) ( total), l'offset e il limite ( offset, limit) come specificato nella richiesta.

NOTE
Il paging viene in genere applicato alle entità contenitore (ovvero cartelle o risorse con rappresentazioni), in quanto si riferisce agli elementi figlio dell’entità richiesta.

Esempio: paging example-paging

GET /api/assets.json?offset=2&limit=3

...
"properties": {
    ...
    "srn:paging": {
        "total": 7,
        "offset": 2,
        "limit": 3
    }
    ...
}
...

Tipi di entità entity-types

Cartelle folders

Le cartelle fungono da contenitori per risorse e altre cartelle. Riflettono la struttura dell’archivio dei contenuti dell’AEM.

L’API REST di Assets espone l’accesso alle proprietà di una cartella. Ad esempio, il nome e il titolo. Le risorse vengono esposte come entità secondarie di cartelle e sottocartelle.

NOTE
A seconda del tipo di risorsa delle risorse e cartelle secondarie, l’elenco delle entità secondarie può già contenere l’intero set di proprietà che definisce la rispettiva entità secondaria. In alternativa, è possibile esporre solo un set ridotto di proprietà per un'entità in questo elenco di entità figlio.

Risorse assets

Se viene richiesta una risorsa, la risposta restituisce i relativi metadati, ad esempio titolo, nome e altre informazioni come definito dal rispettivo schema della risorsa.

I dati binari di una risorsa vengono esposti come collegamento SIREN di tipo content.

Le risorse possono avere più rappresentazioni. In genere vengono esposte come entità secondarie, ad eccezione della rappresentazione di una miniatura esposta come collegamento di tipo thumbnail ( rel="thumbnail").

Frammenti di contenuto content-fragments

A frammento di contenuto è un tipo speciale di risorsa. Possono essere utilizzati per accedere a dati strutturati, tra cui testi, numeri, date.

Poiché esistono diverse differenze standard risorse (come immagini o audio), si applicano alcune regole aggiuntive per la loro gestione.

Rappresentazione representation

Frammenti di contenuto:

  • Non esporre dati binari.

  • Sono contenuti nell’output JSON (all’interno del properties proprietà ).

  • Sono anche considerati atomici. In altre parole, gli elementi e le varianti vengono esposti come parte delle proprietà del frammento, anziché come collegamenti o entità figlio. Questo consente un accesso efficiente al payload di un frammento.

Modelli di contenuto e frammenti di contenuto content-models-and-content-fragments

Attualmente i modelli che definiscono la struttura di un frammento di contenuto non sono esposti tramite un’API HTTP. Pertanto, la consumer deve conoscere il modello di un frammento (almeno un minimo), anche se la maggior parte delle informazioni può essere dedotta dal payload; poiché i tipi di dati, e così via, fanno parte della definizione.

Per creare un frammento di contenuto, è necessario fornire il percorso (archivio interno) del modello.

Contenuto associato associated-content

Il contenuto associato non è esposto.

Utilizzando using

L’utilizzo può variare a seconda che si utilizzi un ambiente di authoring o pubblicazione AEM, insieme a un caso d’uso specifico.

  • Si consiglia di associare la creazione a un'istanza Autore (e attualmente non è possibile replicare un frammento da pubblicare utilizzando questa API).

  • La distribuzione è possibile da entrambi, in quanto AEM fornisce il contenuto richiesto solo in formato JSON.

    • L’archiviazione e la distribuzione da un’istanza di authoring AEM devono essere sufficienti per le applicazioni di librerie multimediali dietro il firewall.

    • Per la distribuzione live sul web, si consiglia un’istanza di pubblicazione dell’AEM.

CAUTION
La configurazione del Dispatcher sulle istanze cloud AEM potrebbe bloccare l’accesso a /api.

Limitazioni limitations

Esistono alcune limitazioni:

  • I modelli per frammenti di contenuto non sono attualmente supportati: non possono essere letti o creati. Per poter creare o aggiornare un frammento di contenuto esistente, gli sviluppatori devono conoscere il percorso corretto del modello per frammenti di contenuto. Attualmente, l’unico metodo per ottenere una panoramica di questi è tramite l’interfaccia utente di amministrazione.
  • I riferimenti vengono ignorati. Al momento non sono presenti controlli per verificare se viene fatto riferimento a un frammento di contenuto esistente. Pertanto, ad esempio, l’eliminazione di un frammento di contenuto potrebbe causare problemi in una pagina che contiene un riferimento al frammento di contenuto eliminato.
  • Tipo di dati JSON L’output REST API di Tipo di dati JSON è output basato su stringhe.

Codici di stato e messaggi di errore status-codes-and-error-messages

I seguenti codici di stato possono essere visualizzati nelle circostanze pertinenti:

  • 200 (OK)

    Restituito quando:

    • richiesta di un frammento di contenuto tramite GET
    • aggiornamento di un frammento di contenuto tramite PUT
  • 201 (Creato)

    Restituito quando:

    • creazione di un frammento di contenuto tramite POST
  • 404 (Non trovato)

    Restituito quando:

    • il frammento di contenuto richiesto non esiste
  • 500 (Errore interno del server)

    note note
    NOTE
    Questo errore viene restituito:
    • si è verificato un errore che non può essere identificato con un codice specifico
    • quando il payload specificato non era valido

    Di seguito sono elencati gli scenari comuni in cui viene restituito questo stato di errore, insieme al messaggio di errore (monospazio) generato:

    • La cartella principale non esiste (quando si crea un frammento di contenuto tramite POST)

    • Non è stato fornito alcun modello per frammenti di contenuto (cq:model è mancante), non può essere letto (a causa di un percorso non valido o di un problema di autorizzazione) o non è disponibile alcun modello per frammenti valido:

      • No content fragment model specified
      • Cannot create a resource of given model '/foo/bar/qux'
    • Impossibile creare il frammento di contenuto (potrebbe trattarsi di un problema di autorizzazione):

      • Could not create content fragment
    • Impossibile aggiornare il titolo e/o la descrizione:

      • Could not set value on content fragment
    • Impossibile impostare i metadati:

      • Could not set metadata on content fragment
    • Impossibile trovare o aggiornare l’elemento di contenuto

      • Could not update content element
      • Could not update fragment data of element

    I messaggi di errore dettagliati vengono restituiti nel modo seguente:

    code language-xml
    {
      "class": "core/response",
      "properties": {
        "path": "/api/assets/foo/bar/qux",
        "location": "/api/assets/foo/bar/qux.json",
        "parentLocation": "/api/assets/foo/bar.json",
        "status.code": 500,
        "status.message": "...{error message}.."
      }
    }
    

Riferimento API api-reference

Consulta qui per riferimenti API dettagliati:

Risorse aggiuntive additional-resources

Per ulteriori informazioni, consulta:

recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab