Stöd för innehållsfragment i AEM Assets HTTP API content-fragments-support-in-aem-assets-http-api
Ökning overview
Läs mer om stöd för innehållsfragment i Assets HTTP API, en viktig del av AEM headless-leveransfunktion.
- ASSETS REST API
- inklusive stöd för innehållsfragment
Med Assets REST API kan utvecklare för Adobe Experience Manager komma åt innehåll (som lagras i AEM) direkt via HTTP-API:t via CRUD-åtgärder (Skapa, Läs, Uppdatera, Ta bort).
Med API:t kan du använda Adobe Experience Manager som headless CMS (Content Management System) genom att tillhandahålla innehållstjänster till ett JavaScript front end-program. Eller något annat program som kan köra HTTP-begäranden och hantera JSON-svar.
Enkelsidiga program (SPA), ramverksbaserade eller anpassade, kräver till exempel innehåll som tillhandahålls via HTTP API, ofta i JSON-format.
AEM Core Components innehåller ett mycket omfattande, flexibelt och anpassningsbart API som kan hantera nödvändiga läsåtgärder i detta syfte, och vars JSON-utdata kan anpassas, men de kräver AEM WCM-kunskaper (Web Content Management) för implementering eftersom de måste finnas på sidor som är baserade på dedikerade AEM. Det är inte varje SPA utvecklingsorganisation som har direkt tillgång till sådan kunskap.
Detta är när Assets REST API kan användas. Med det kan utvecklare komma åt resurser (till exempel bilder och innehållsfragment) direkt, utan att först behöva bädda in dem på en sida, och leverera innehållet i serialiserat JSON-format.
Med Assets REST API kan utvecklare ändra innehåll genom att skapa nya, uppdatera eller ta bort befintliga resurser, innehållsfragment och mappar.
Assets REST API:
-
följer HATEOAS-principen
-
implementerar formatet SIREN
Förutsättningar prerequisites
Assets REST API är tillgängligt för varje körklar installation av en AEM.
Viktiga begrepp key-concepts
Assets REST API ger REST-åtkomst till resurser som lagras i en AEM.
Slutpunkten /api/assets
används och resursens sökväg krävs för att komma åt den (utan radavståndet /content/dam
).
- Det innebär att du kan få tillgång till resursen på
/content/dam/path/to/asset
- Du måste begära:
/api/assets/path/to/asset
Om du till exempel vill komma åt /content/dam/wknd/en/adventures/cycling-tuscany
begär du /api/assets/wknd/en/adventures/cycling-tuscany.json
/api/assets
behöver inte använda väljaren.model
./content/path/to/page
does kräver att väljaren.model
används.
HTTP-metoden avgör vilken åtgärd som ska utföras:
- GET - för att hämta en JSON-representation av en resurs eller en mapp
- POST - för att skapa nya resurser eller mappar
- PUT - för att uppdatera egenskaperna för en resurs eller mapp
- DELETE - om du vill ta bort en resurs eller mapp
Exakt format för begäranden som stöds definieras i API Reference -dokumentationen.
Transaktionsbeteende transactional-behavior
Alla förfrågningar är atomiska.
Detta innebär att efterföljande (write
) begäranden inte kan kombineras till en enda transaktion som kan lyckas eller misslyckas som en enskild enhet.
AEM (Assets) REST API jämfört med AEM aem-assets-rest-api-versus-aem-components
(komponenter som använder Sling Models)
Optimerad för konsumtion i ett Single Page-program (SPA) eller i något annat (innehållsförbrukande) sammanhang.
Kan även innehålla layoutinformation.
Skapa, läsa, uppdatera, ta bort.
Med ytterligare åtgärder beroende på enhetstyp.
Kan nås direkt.
Använder /api/assets
slutpunkten, mappad till /content/dam
(i databasen).
En exempelsökväg skulle se ut så här: /api/assets/wknd/en/adventures/cycling-tuscany.json
Måste refereras via en AEM på en AEM.
Använder väljaren .model
för att skapa JSON-representationen.
En exempelsökväg skulle se ut så här:/content/wknd/language-masters/en/adventures/cycling-tuscany.model.json
Flera alternativ är möjliga.
OAuth föreslås; kan konfigureras separat från standardinställningen.
Skrivåtkomst avser vanligtvis en författarinstans.
Läsningen kan även dirigeras till en publiceringsinstans.
Dokumentskydd security
Om Assets REST API används i en miljö utan särskilda autentiseringskrav måste AEM CORS-filter konfigureras korrekt.
I miljöer med specifika autentiseringskrav rekommenderas OAuth.
Tillgängliga funktioner available-features
Innehållsfragment är en specifik typ av resurs, se Arbeta med innehållsfragment.
Mer information om funktioner som är tillgängliga via API finns i:
- Assets REST API
- Enhetstyper, där funktioner som är specifika för varje typ som stöds (som är relevant för innehållsfragment) förklaras
Sidindelning paging
Assets REST API har stöd för sidindelning (för GET-begäranden) via URL-parametrar:
offset
- numret på den första (underordnade) entiteten som ska hämtaslimit
- det maximala antalet enheter som returneras
Svaret kommer att innehålla växlingsinformation som en del av avsnittet properties
i SIREN-utdata. Den här srn:paging
-egenskapen innehåller det totala antalet (underordnade) entiteter ( total
), förskjutningen och gränsen ( offset
, limit
) som anges i begäran.
Exempel: Sidindelning example-paging
GET /api/assets.json?offset=2&limit=3
...
"properties": {
...
"srn:paging": {
"total": 7,
"offset": 2,
"limit": 3
}
...
}
...
Enhetstyper entity-types
Mappar folders
Mappar fungerar som behållare för resurser och andra mappar. De återspeglar strukturen i AEM innehållsdatabas.
Assets REST API ger åtkomst till egenskaperna för en mapp, till exempel dess namn, titel och så vidare. Assets visas som underordnade enheter till mappar och undermappar.
Assets assets
Om en resurs begärs returnerar svaret dess metadata, till exempel titel, namn och annan information som definieras i respektive resursschema.
Binära data för en resurs visas som en SIREN-länk av typen content
.
Assets kan ha flera renderingar. Dessa visas vanligtvis som underordnade entiteter, ett undantag är en miniatyrrendering som visas som en länk av typen thumbnail
( rel="thumbnail"
).
Innehållsfragment content-fragments
Ett innehållsfragment är en särskild typ av resurs. De kan användas för att komma åt strukturerade data, t.ex. texter, siffror och datum.
Eftersom det finns flera skillnader mellan standardresurser (till exempel bilder eller ljud) gäller vissa ytterligare regler för att hantera dem.
Representation representation
Innehållsfragment:
-
Visa inga binära data.
-
Finns helt i JSON-utdata (inom egenskapen
properties
). -
betraktas också som atomiska, dvs. elementen och variationerna visas som en del av fragmentets egenskaper jämfört med som länkar eller underordnade enheter. Detta ger effektiv åtkomst till nyttolasten för ett fragment.
Innehållsmodeller och innehållsfragment content-models-and-content-fragments
För närvarande visas inte modellerna som definierar strukturen för ett innehållsfragment via ett HTTP-API. Därför behöver konsumenten känna till modellen för ett fragment (minst ett minimum), även om den mesta informationen kan härledas från nyttolasten, som datatyper och så vidare. är en del av definitionen.
Om du vill skapa ett innehållsfragment måste modellens (interna databas) sökväg anges.
Associerat innehåll associated-content
Associerat innehåll visas för närvarande inte.
Använda using
Användningen kan variera beroende på om du använder en AEM författare eller publiceringsmiljö, tillsammans med ditt specifika användningsexempel.
-
Vi rekommenderar starkt att skapandet är bundet till en författarinstans () och att det för närvarande inte finns något sätt att replikera ett fragment för publicering med denna API).
-
Leverans är möjlig från båda, eftersom AEM endast skickar begärt innehåll i JSON-format.
-
Lagring och leverans från en AEM författarinstans bör räcka för program som ligger bakom brandväggen och mediabibliotek.
-
För live-webbleverans rekommenderas en publiceringsinstans AEM.
-
/api
.Läsning/leverans read-delivery
Användning sker via:
GET /{cfParentPath}/{cfName}.json
Till exempel:
http://<host>/api/assets/wknd/en/adventures/cycling-tuscany.json
Svaret är serialiserat JSON med innehållet strukturerat som i innehållsfragmentet. Referenser levereras som referens-URL:er.
Det finns två typer av läsåtgärder:
- När du läser ett visst innehållsfragment efter sökväg, returneras JSON-representationen av innehållsfragmentet.
- Läser en mapp med innehållsfragment efter sökväg: Detta returnerar JSON-representationerna för alla innehållsfragment i mappen.
Skapa create
Användning sker via:
POST /{cfParentPath}/{cfName}
Brödtexten måste innehålla en JSON-representation av det innehållsfragment som ska skapas, inklusive allt ursprungligt innehåll som ska anges för elementen i innehållsfragmentet. Det är obligatoriskt att ange egenskapen cq:model
och den måste peka på en giltig innehållsfragmentmodell. Om du inte gör det kommer ett fel att uppstå. Du måste också lägga till rubriken Content-Type
som är inställd på application/json
.
Uppdatera update
Användning sker via
PUT /{cfParentPath}/{cfName}
Brödtexten måste innehålla en JSON-representation av vad som ska uppdateras för det angivna innehållsfragmentet.
Detta kan helt enkelt vara titeln eller beskrivningen av ett innehållsfragment, ett enskilt element eller alla elementvärden och/eller metadata.
Ta bort delete
Användning sker via:
DELETE /{cfParentPath}/{cfName}
Begränsningar limitations
Det finns några begränsningar:
- Modeller för innehållsfragment stöds för närvarande inte: de kan inte läsas eller skapas. För att kunna skapa ett innehållsfragment, eller uppdatera ett befintligt, måste utvecklarna veta rätt sökväg till innehållsfragmentmodellen. För närvarande är det enda sättet att få en översikt över dessa genom administrationsgränssnittet.
- Referenser ignoreras. För närvarande finns det inga kontroller för om ett befintligt innehållsfragment refereras. Om du tar bort ett innehållsfragment kan det därför leda till problem på en sida som innehåller en referens till det borttagna innehållsfragmentet.
- JSON-datatyp REST API-utdata för datatypen JSON är för närvarande strängbaserade utdata.
Statuskoder och felmeddelanden status-codes-and-error-messages
Följande statuskoder kan ses under de relevanta omständigheterna:
-
200 (OK)
Returneras när:- begär ett innehållsfragment via
GET
- uppdaterar ett innehållsfragment via
PUT
- begär ett innehållsfragment via
-
201 (skapad)
Returneras när:- har skapat ett innehållsfragment via
POST
- har skapat ett innehållsfragment via
-
404 (Hittades inte)
Returneras när:- det begärda innehållsfragmentet inte finns
-
500 (Internt serverfel)
note note NOTE Detta fel returneras: - när ett fel som inte kan identifieras med en viss kod har inträffat
- när den angivna nyttolasten inte var giltig
I följande exempel visas vanliga scenarier när den här felstatusen returneras, tillsammans med felmeddelandet (monospace) som genereras:
-
Den överordnade mappen finns inte (när ett innehållsfragment skapas via
POST
) -
Ingen innehållsfragmentmodell har angetts (cq:model saknas), kan inte läsas (på grund av en ogiltig sökväg eller ett behörighetsproblem) eller så finns det ingen giltig fragmentmodell:
No content fragment model specified
Cannot create a resource of given model '/foo/bar/qux'
-
Det gick inte att skapa innehållsfragmentet (eventuellt ett behörighetsproblem):
Could not create content fragment
-
Titeln och/eller beskrivningen kunde inte uppdateras:
Could not set value on content fragment
-
Det gick inte att ange metadata:
Could not set metadata on content fragment
-
Innehållselementet kunde inte hittas eller kunde inte uppdateras
Could not update content element
Could not update fragment data of element
De detaljerade felmeddelandena returneras vanligtvis på följande sätt:
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}.." } }
API-referens api-reference
Här finns detaljerade API-referenser:
Ytterligare resurser additional-resources
Mer information finns i: