API's voor OpenAPI's AEM invoke-openapi-based-aem-apis

Leer hoe u op OpenAPI gebaseerde API's voor AEM op AEM as a Cloud Service configureert en oproept vanuit aangepaste toepassingen.

AVAILABILITY
API's die zijn gebaseerd op OpenAPI zijn beschikbaar als onderdeel van een programma voor vroege toegang. Als u in de toegang tot van hen geinteresseerd bent, moedigen wij u aan om aem-apis@adobe.commet een beschrijving van uw gebruiksgeval te e-mailen.

In deze zelfstudie leert u hoe u:

  • Schakel op OpenAPI gebaseerde AEM API's toegang voor uw AEM as a Cloud Service-omgeving in.
  • Creeer en vorm een project van Adobe Developer Console (ADC) om tot AEM APIs toegang te hebben gebruikend Server-aan-Server authentificatie OAuth.
  • Ontwikkelen van een voorbeeldtoepassing NodeJS die de Assets-auteur-API aanroept om metagegevens voor een bepaald element op te halen.

Alvorens u begint, zorg ervoor u de Toegang tot Adobe APIs en verwante conceptensectie herzien.

Vereisten

U hebt het volgende nodig om deze zelfstudie te voltooien:

  • Modernisering van de AEM as a Cloud Service-omgeving met het volgende:

    • AEM Release 2024.10.18459.20241031T210302Z of hoger.
    • Nieuwe stijlproductprofielen (als de omgeving vóór november 2024 is gemaakt)
  • Het steekproef WKNDproject van Plaatsen moet op het worden opgesteld.

  • Toegang tot Adobe Developer Console.

  • Installeer Node.jsop uw lokale machine om de toepassing van steekproefNodeJS in werking te stellen.

Ontwikkelingsstappen

De ontwikkelingsstappen op hoog niveau zijn:

  1. Modernisering van de AEM as a Cloud Service-omgeving.

  2. Toegang tot AEM API's inschakelen.

  3. Maak een Adobe Developer Console-project (ADC).

  4. ADC-project configureren

    1. Voeg gewenste AEM-API's toe
    2. De verificatie configureren
    3. Productprofiel koppelen aan de verificatieconfiguratie
  5. Vorm de AEM instantie om de mededeling van het Project van ADC toe te laten

  6. Een voorbeeld van een NodeJS-toepassing ontwikkelen

  7. Verifieer de stroom van begin tot eind

Modernisering van de AEM as a Cloud Service-omgeving

Laten we beginnen met het moderniseren van de AEM as a Cloud Service-omgeving. Deze stap is alleen nodig als het milieu niet wordt gemoderniseerd.

De modernisering van de AEM as a Cloud Service-omgeving is een proces in twee stappen,

  • Bijwerken naar de nieuwste versie AEM release
  • Voeg nieuwe productprofielen toe.

AEM bijwerken

Om de AEM instantie bij te werken, in de Adobe Cloud Manager de sectie van Milieu's, selecteert het ellips pictogram naast de milieunaam en selecteert Update optie.

Update AEM instantie

Dan klik voorleggen knoop en stel de voorgestelde FullstackPipeline in werking.

Uitgezochte recentste versie AEM

In mijn geval, is de naam van Pijpleiding Fullstack Dev:: Fullstack-Deploy en de AEM milieunaam is wknd-programma-dev het kan in uw geval variëren.

Nieuwe productprofielen toevoegen

Om nieuwe Profielen van het Product aan de AEM instantie toe te voegen, in de 2} sectie van de Milieu's 🔗 van de Adobe Cloud Manager , selecteer het ellips pictogram naast de milieunaam en selecteer toevoegen de optie van de Profielen van het Product.

voeg nieuwe Profielen van het Product toe

U kunt de onlangs toegevoegde Profielen van het Product herzien door op het ellips pictogram naast de milieunaam te klikken en te selecteren beheert Toegang > Profielen van de Auteur.

Het venster van de Admin Console toont de onlangs toegevoegde Profielen van het Product.

Herzie nieuwe Profielen van het Product

Met de bovenstaande stappen wordt de modernisering van de AEM as a Cloud Service-omgeving voltooid.

Toegang tot AEM API's inschakelen

Met nieuwe productprofielen hebt u toegang tot de API (OpenAPI) op basis van AEM.

De onlangs toegevoegde Profielen van het Product worden geassocieerd met de Diensten die AEM gebruikersgroepen met vooraf bepaalde Lijsten van het Toegangsbeheer (ACLs) vertegenwoordigen. De Diensten worden gebruikt om het niveau van toegang tot AEM APIs te controleren.

U kunt de Diensten ook selecteren of schrappen verbonden aan het Profiel van het Product om het niveau van toegang te verminderen of te verhogen.

Herzie de vereniging door op het pictogram van de Details van de Mening naast de naam van het Profiel van het Product te klikken.

{de diensten van het 0} Overzicht verbonden aan het Profiel van het Product

Door gebrek, wordt de AEM Assets API Gebruikers Dienst niet geassocieerd met om het even welk Profiel van het Product. Laat ons het met de onlangs toegevoegde AEM Beheerders - auteur - Programma XXX - Milieu XXX Profiel van het Product associëren. Na deze vereniging, kan de 20} ActivaAuteur API van het Project ADC de Server-aan-Server authentificatie van OAuth plaatsen en de authentificatierekening met het Profiel van het Product associëren.

associeerde de Dienst van de Gebruikers van AEM Assets API met het Profiel van het Product

Het is belangrijk om op te merken dat vóór de modernisering, in AEM instantie van de Auteur, twee Profielen van het Product beschikbaar waren, AEM beheerders-XXX en AEM gebruikers-XXX. Het is ook mogelijk om deze bestaande Profielen van het Product met de nieuwe Diensten te associëren.

Adobe Developer Console-project (ADC) maken

Maak vervolgens een ADC-project voor toegang tot AEM API's.

  1. Login aan Adobe Developer Consolegebruikend uw Adobe ID.

    Adobe Developer Console

  2. Van de Snelle sectie van het Begin, klik op creeer nieuwe project knoop.

    creeer nieuw project

  3. Het leidt tot een nieuw project met de standaardnaam.

    Nieuw gecreeerd project

  4. Bewerk de projectnaam door te klikken uitgeeft project knoop in de hoogste juiste hoek. Verstrek een betekenisvolle naam en klik sparen.

    geef projectnaam uit

ADC-project configureren

Vervolgens configureert u het ADC-project om AEM API's toe te voegen, de verificatie ervan te configureren en het productprofiel te koppelen.

  1. Om AEM APIs toe te voegen, klik op API knoop toevoegen.

    voeg API toe

  2. In voeg API dialoog toe, filter door Experience Cloud en selecteer de Auteur API van AEM Assets kaart en klik daarna.

    voeg AEM API toe

  3. Daarna, in vorm API dialoog, selecteer de server-aan-server authentificatieoptie en klik daarna. De server-aan-server authentificatie is ideaal voor de backenddiensten die API toegang zonder gebruikersinteractie vereisen.

    Uitgezochte authentificatie

  4. Wijzig de naam van de referentie voor gemakkelijkere identificatie (indien nodig) en klik daarna. Voor demo-doeleinden wordt de standaardnaam gebruikt.

    noem referentie anders

  5. Selecteer de AEM Beheerders - auteur - Programma XXX - Milieu XXX Profiel van het Product en klik sparen. Zoals u ziet, is alleen het productprofiel dat is gekoppeld aan de AEM Assets API-gebruikersservice beschikbaar voor selectie.

    Uitgezochte Profiel van het Product

  6. Controleer de AEM API- en verificatieconfiguratie.

    AEM API configuratie

    configuratie van de Authentificatie

AEM instantie configureren om ADC-projectcommunicatie in te schakelen

Om OAuth server-aan-Server van het Project van ADC toe te laten credential ClientID aan communicatie met de AEM instantie, moet u de AEM instantie vormen.

Hiervoor definieert u de configuratie in het config.yaml -bestand in het AEM Project. Implementeer vervolgens het config.yaml -bestand met behulp van de Config Pipeline in de Cloud Manager.

  1. Zoek in AEM Project het config.yaml -bestand in de map config of maak dit.

    plaats config YAML

  2. Voeg de volgende configuratie toe aan het config.yaml dossier.

    code language-yaml
    kind: "API"
    version: "1.0"
    metadata:
        envTypes: ["dev", "stage", "prod"]
    data:
        allowedClientIDs:
            author:
            - "<ADC Project's OAuth Server-to-Server credential ClientID>"
    

    Vervang <ADC Project's OAuth Server-to-Server credential ClientID> door werkelijke ClientID van de OAuth Server-to-Server referentie van het ADC-project. Het API eindpunt dat in dit leerprogramma wordt gebruikt is beschikbaar slechts op de auteurslaag, maar voor andere APIs, kan yaml config ook a hebben publiceren of voorproef knoop.

  3. Leg de configuratiewijzigingen vast in de Git-opslagplaats en duw op de wijzigingen in de externe opslagplaats.

  4. Implementeer de bovenstaande wijzigingen met behulp van de configuratiegids in de Cloud Manager. Het config.yaml -bestand kan ook worden geïnstalleerd in een RDE met behulp van opdrachtregelprogramma's.

    stel config.yaml op

Een voorbeeld van een NodeJS-toepassing ontwikkelen

Laten we een voorbeeld-NodeJS-toepassing ontwikkelen die de Assets-auteur-API aanroept.

U kunt andere programmeertalen zoals Java, Python, enz. gebruiken om de toepassing te ontwikkelen.

Voor testende doeleinden, kunt u Postmangebruiken, krullen, of een andere cliënt van de WEERSTING om AEM APIs aan te halen.

De API controleren

Alvorens de toepassing te ontwikkelen, laten wij overzicht leveren het gespecificeerde meta-gegevens van activaeindpunt van de Auteur API van Assets. De API-syntaxis is:

GET https://{bucket}.adobeaemcloud.com/adobe/assets/{assetId}/metadata

Als u de metagegevens van een specifiek element wilt ophalen, hebt u de waarden bucket en assetId nodig. bucket is de AEM instantienaam zonder de Adobe domeinnaam (.adobeaemcloud.com), bijvoorbeeld author-p63947-e1420428.

De assetId is de JCR-UUID van het element met het voorvoegsel urn:aaid:aem: , bijvoorbeeld urn:aaid:aem:a200faf1-6d12-4abc-bc16-1b9a21f870da . Er zijn meerdere manieren om de assetId op te halen:

  • Voeg de extensie AEM elementpad .json toe om de metagegevens van het element op te halen. Bijvoorbeeld https://author-p63947-e1420429.adobeaemcloud.com/content/dam/wknd-shared/en/adventures/cycling-southern-utah/adobestock-221043703.jpg.json en zoek naar de eigenschap jcr:uuid .

  • U kunt de assetId ook ophalen door het element te inspecteren in de elementencontrole van de browser. Zoek het kenmerk data-id="urn:aaid:aem:..." .

    activa van Inspect

De API aanroepen met de browser

Alvorens de toepassing te ontwikkelen, laten wij API gebruiken aanhalen gebruikend het eigenschap in de API documentatieuitproberen.

  1. Open de documentatie van de AuteurAPI van Assetsin browser.

  2. Vouw de sectie van Meta-gegevens uit en klik op levert de gespecificeerde meta-gegevens van activa optie.

  3. In de juiste ruit, klik op probeer het knoop.
    API documentatie

  4. Voer de volgende waarden in:

    1. De bucket -waarde is de AEM instantienaam zonder de Adobe domeinnaam (.adobeaemcloud.com), bijvoorbeeld author-p63947-e1420428 .

    2. De Verwante sectie van de Veiligheid Bearer Token en X-Api-Key waarden worden verkregen uit de Server-aan-Server referentie van het Project van ADC. Klik produceer toegangstoken om de Bearer Token waarde te krijgen en de ClientID waarde als X-Api-Key te gebruiken.

      produceer toegangstoken

    3. De Verwante sectie van Parameters assetId waarde is het unieke herkenningsteken voor de activa in AEM. De waarde X-Adobe-Accept-Experimental is ingesteld op 1.

      Oproep API - inputwaarden

  5. Klik verzenden om API aan te halen.

  6. Herzie het lusje van de Reactie om de API reactie te zien.

    Oproep API - reactie

De bovenstaande stappen bevestigen de modernisering van de AEM as a Cloud Service-omgeving, waardoor AEM API's toegang krijgen. Het bevestigt ook de succesvolle configuratie van het Project ADC, en de Server-aan-Server communicatie van OAuth ClientID met de AEM auteursinstantie.

Sample NodeJS-toepassing

Laten we een voorbeeld-NodeJS-toepassing ontwikkelen.

Om de toepassing te ontwikkelen, kunt u of de in werking stellen-steekproef-toepassing of de Stap-door-stap-ontwikkeling instructies gebruiken.

looppas-de-steekproef-toepassing
  1. Download het steekproef demo-nodejs-app-to-invoke-aem-openapitoepassingsZIP dossier en haal het uit.

  2. Navigeer naar de uitgepakte map en installeer de afhankelijkheden.

    code language-bash
    $ npm install
    
  3. Vervang de placeholders in het .env dossier met de daadwerkelijke waarden van OAuth van het Project van ADC Server-aan-Server referentie.

  4. Vervang de waarden <BUCKETNAME> en <ASSETID> in het src/index.js -bestand door de werkelijke waarden.

  5. Voer de NodeJS-toepassing uit.

    code language-bash
    $ node src/index.js
    
geleidelijke-ontwikkeling
  1. Maak een nieuw NodeJS-project.

    code language-bash
    $ mkdir demo-nodejs-app-to-invoke-aem-openapi
    $ cd demo-nodejs-app-to-invoke-aem-openapi
    $ npm init -y
    
  2. Installeer haal en dotenv bibliotheek om de verzoeken van HTTP te maken en de milieuvariabelen te lezen respectievelijk.

    code language-bash
    $ npm install node-fetch
    $ npm install dotenv
    
  3. Open het project in uw favoriete code-editor en werk het package.json -bestand bij om het type aan module toe te voegen.

    code language-json
    {
        ...
        "version": "1.0.0",
        "type": "module",
        "main": "index.js",
        ...
    }
    
  4. Maak een .env -bestand en voeg de volgende configuratie toe. Vervang placeholders met de daadwerkelijke waarden van OAuth van het Project van ADC Server-aan-Server referentie.

    code language-properties
    CLIENT_ID=<ADC Project OAuth Server-to-Server credential ClientID>
    CLIENT_SECRET=<ADC Project OAuth Server-to-Server credential Client Secret>
    SCOPES=<ADC Project OAuth Server-to-Server credential Scopes>
    
  5. Maak een src/index.js -bestand, voeg de volgende code toe en vervang de waarden <BUCKETNAME> en <ASSETID> door de werkelijke waarden.

    code language-javascript
    // Import the dotenv configuration to load environment variables from the .env file
    import "dotenv/config";
    
    // Import the fetch function to make HTTP requests
    import fetch from "node-fetch";
    
    // REPLACE THE FOLLOWING VALUES WITH YOUR OWN
    const bucket = "<BUCKETNAME>"; // Bucket name is the AEM instance name (e.g. author-p63947-e1420428)
    const assetId = "<ASSETID>"; // Asset ID is the unique identifier for the asset in AEM (e.g. urn:aaid:aem:a200faf1-6d12-4abc-bc16-1b9a21f870da). You can get it by inspecting the asset in browser's element inspector, look for data-id="urn:aaid:aem:..."
    
    // Load environment variables for authentication
    const clientId = process.env.CLIENT_ID; // Adobe IMS client ID
    const clientSecret = process.env.CLIENT_SECRET; // Adobe IMS client secret
    const scopes = process.env.SCOPES; // Scope for the API access
    
    // Adobe IMS endpoint for obtaining an access token
    const adobeIMSV3TokenEndpointURL =
    "https://ims-na1.adobelogin.com/ims/token/v3";
    
    // Function to obtain an access token from Adobe IMS
    const getAccessToken = async () => {
        console.log("Getting access token from IMS"); // Log process initiation
        //console.log("Client ID: " + clientId); // Display client ID for debugging purposes
    
        // Configure the HTTP POST request to fetch the access token
        const options = {
            method: "POST",
            headers: {
            "Content-Type": "application/x-www-form-urlencoded", // Specify form data content type
            },
            // Send client ID, client secret, and scopes as the request body
            body: `grant_type=client_credentials&client_id=${clientId}&client_secret=${clientSecret}&scope=${scopes}`,
        };
    
        // Make the HTTP request to fetch the access token
        const response = await fetch(adobeIMSV3TokenEndpointURL, options);
    
        //console.log("Response status: " + response.status); // Log the HTTP status for debugging
    
        const responseJSON = await response.json(); // Parse the JSON response
    
        console.log("Access token received"); // Log success message
    
        // Return the access token
        return responseJSON.access_token;
    };
    
    // Function to retrieve metadata for a specific asset from AEM
    const getAssetMetadat = async () => {
        // Fetch the access token using the getAccessToken function
        const accessToken = await getAccessToken();
    
        console.log("Getting asset metadata from AEM");
    
        // Invoke the Assets Author API to retrieve metadata for a specific asset
        const resp = await fetch(
            `https://${bucket}.adobeaemcloud.com/adobe/assets/${assetId}/metadata`, // Construct the URL with bucket and asset ID
            {
            method: "GET",
            headers: {
                "If-None-Match": "string", // Header to handle caching (not critical for this tutorial)
                "X-Adobe-Accept-Experimental": "1", // Header to enable experimental Adobe API features
                Authorization: "Bearer " + accessToken, // Provide the access token for authorization
                "X-Api-Key": clientId, // Include the OAuth S2S ClientId for identification
            },
            }
        );
    
        const data = await resp.json(); // Parse the JSON response
    
        console.log("Asset metadata received"); // Log success message
        console.log(data); // Display the retrieved metadata
    };
    
    // Call the getAssets function to start the process
    getAssetMetadat();
    
  6. Voer de NodeJS-toepassing uit.

    code language-bash
    $ node src/index.js
    

API-reactie

Als de API-reactie met succes is uitgevoerd, wordt deze weergegeven in de console. De reactie bevat de metagegevens van het opgegeven element.

{
  "assetId": "urn:aaid:aem:9c09ff70-9ee8-4b14-a5fa-ec37baa0d1b3",
  "assetMetadata": {
    ...
    "dc:title": "A Young Mountain Biking Couple Takes A Minute To Take In The Scenery",
    "xmp:CreatorTool": "Adobe Photoshop Lightroom Classic 7.5 (Macintosh)",
    ...
  },
  "repositoryMetadata": {
    ...
    "repo:name": "adobestock-221043703.jpg",
    "repo:path": "/content/dam/wknd-shared/en/adventures/cycling-southern-utah/adobestock-221043703.jpg",
    "repo:state": "ACTIVE",
    ...
  }
}

Gefeliciteerd! U hebt met succes de op OpenAPI gebaseerde AEM APIs van uw douanetoepassing opgeroepen gebruikend Server-aan-Server authentificatie.

De toepassingscode controleren

De belangrijkste callouts van de code van de steekproeftoepassing NodeJS zijn:

  1. IMS Authentificatie: Krijgt een toegangstoken gebruikend OAuth server-aan-Server geloofsbrieven opstelling in het Project ADC.

    code language-javascript
    // Function to obtain an access token from Adobe IMS
    const getAccessToken = async () => {
    
        // Configure the HTTP POST request to fetch the access token
        const options = {
            method: "POST",
            headers: {
            "Content-Type": "application/x-www-form-urlencoded", // Specify form data content type
            },
            // Send client ID, client secret, and scopes as the request body
            body: `grant_type=client_credentials&client_id=${clientId}&client_secret=${clientSecret}&scope=${scopes}`,
        };
    
        // Make the HTTP request to fetch the access token from Adobe IMS token endpoint https://ims-na1.adobelogin.com/ims/token/v3
        const response = await fetch(adobeIMSV3TokenEndpointURL, options);
    
        const responseJSON = await response.json(); // Parse the JSON response
    
        // Return the access token
        return responseJSON.access_token;
    };
    ...
    
  2. API Oproepen: Roept de auteur API van Assets aan om meta-gegevens voor een specifiek middel terug te winnen door het toegangstoken voor vergunning te verstrekken.

    code language-javascript
    // Function to retrieve metadata for a specific asset from AEM
    const getAssetMetadat = async () => {
        // Fetch the access token using the getAccessToken function
        const accessToken = await getAccessToken();
    
        console.log("Getting asset metadata from AEM");
    
        // Invoke the Assets Author API to retrieve metadata for a specific asset
        const resp = await fetch(
            `https://${bucket}.adobeaemcloud.com/adobe/assets/${assetId}/metadata`, // Construct the URL with bucket and asset ID
            {
            method: "GET",
            headers: {
                "If-None-Match": "string", // Header to handle caching (not critical for this tutorial)
                "X-Adobe-Accept-Experimental": "1", // Header to enable experimental Adobe API features
                Authorization: "Bearer " + accessToken, // Provide the access token for authorization
                "X-Api-Key": clientId, // Include the OAuth S2S ClientId for identification
            },
            }
        );
    
        const data = await resp.json(); // Parse the JSON response
    
        console.log("Asset metadata received"); // Log success message
        console.log(data); // Display the retrieved metadata
    };
    ...
    

Samenvatting

In deze zelfstudie hebt u geleerd hoe u op OpenAPI gebaseerde AEM-API's kunt aanroepen vanuit aangepaste toepassingen. U hebt AEM APIs-toegang ingeschakeld en een Adobe Developer Console-project (ADC) gemaakt en geconfigureerd.
In het ADC-project hebt u de AEM-API's toegevoegd, het verificatietype geconfigureerd en het productprofiel gekoppeld. U vormde ook de AEM instantie om de communicatie van het Project van ADC toe te laten en ontwikkelde een toepassing van de steekproef NodeJS die de Auteur API van Assets roept.

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69