Integrera API i regelredigeraren
Integrering av API i regelredigeraren sker under Tidigt Adobe-program. Du kan skriva till aem-forms-ea@adobe.com från ditt officiella e-post-id för att gå med i det tidiga adopterprogrammet och begära åtkomst till funktionen.
Visual Rule Editor i Adaptive Forms stöder direkt API-integrering utan att skapa en formulärdatamodell. Du kan ansluta till en API-slutpunkt genom att antingen ange API-URL:en (i JSON-format) eller importera konfigurationen med ett cURL-kommando. När åtgärden Anropa tjänst har integrerats kan den användas för att anropa API:t.
Formulärfält kan mappas direkt till de indataparametrar som definieras i API-konfigurationen. På samma sätt kan utdataparametrar mappas till formulärfält med alternativet händelsenyttolast för motsvarande API-svar.
Med Visual Rule Editor kan du dessutom definiera success - och error-hanterare när du anropar en tjänst. Hanterare för lyckade åtgärder anger vilka åtgärder som ska utföras efter ett lyckat API-anrop, medan felhanterare definierar hur formuläret ska svara när ett fel inträffar.
Jämförelse: API-integreringsmetoder
Konfiguration av API-integrering
Skärmbilden nedan visar konfigurationsfönstret för API-integrering:
Alternativ för nyckelkonfiguration
API-integreringskonfiguration
- Importera från cURL: Konfigurera API-integreringen genom att klistra in ett färdigt cURL-kommando i stället för att manuellt ange information som API-URL, HTTP-metod, rubriker och parametrar.
- Visningsnamn: Anpassat namn för API-tjänsten.
- API-URL: API-tjänstens slutpunkt.
- Välj HTTP-metod: Den HTTP-förfrågningsmetod som används för att anropa API:t.
- Innehållstyp: Definierar begärande- och svarsformatet.
- Kryptering krävs: (Valfritt) Ser till att känsliga data krypteras under överföring.
- Kör på klienten: När detta är aktiverat görs API-anropet från klienten (webbläsaren) i stället för från servern.
Autentiseringstyp
- Alternativ: Ingen, Grundläggande, API-nyckel, OAuth 2.0.
Indataparametrar
-
Överför JSON för indata: Överför en JSON-exempelfil för att automatiskt fylla i indatamappningar.
- Namn: Indataparameternamnet som krävs av API:t.
- Typ: Datatypen för indata (String, Number, Boolean osv.).
- In: Parameterns plats (fråga, huvud eller brödtext).
- Standardvärde: Förfyllt värde om det inte anges av användaren.
- Lägg till: Alternativ för att lägga till ytterligare indataparametrar.
Utdataparametrar
-
Överför JSON för utdata: Överför ett exempel-API-svar för automatisk generering av mappningar.
- Namn: Utdataparameternamn från API-svaret.
- Typ: Datatypen för utdataparametern förväntades (String, Number osv.).
- In: Definierar var det mappade värdet förväntas.
- Lägg till/ta bort: Lägg till nya mappningar eller ta bort befintliga.
Användningsfall: Fylla i fält för land i en ansökningsblankett för visum
Scenario: En myndighet tillhandahåller ett onlineansökningsformulär för Visa med följande fält:
- Fullständigt namn (text)
- Födelsedatum (datum)
- Medborgarskap (nedrullningsbar lista)
- Passport-nummer (text)
- Land för utfärdande av pass (nedrullningsbar lista)
- Destinationsland (listruta)
- Planerat ankomstdatum (datum)
Istället för att underhålla en statisk lista över länder hämtar formuläret dynamiskt landsinformation (kontinent, huvudstad, ISO Alpha-koder osv.) med getCountryName API:
https://secure.geonames.org/countryInfoJSON?username=aemforms
Detta gör att de sökande alltid ser en uppdaterad och korrekt lista över länder samtidigt som de fyller i formuläret.
Implementering med API-integrering i regelredigeraren
Du kan integrera ett API utan att skapa en formulärdatamodell genom att klicka på knappen Skapa API-integrering i regelredigeraren.
En API-tjänst med namnet getCountryName har konfigurerats under API-integreringskonfiguration i regelredigeraren:
- URL för API-slutpunkt →
https://secure.geonames.org/countryInfoJSON?username=aemforms - HTTP-metod → GET
- Innehållstyp → JSON
- Indata →
usernameskickas som en frågeparameter (aemforms). - Utdata → Svarsfält som
continent,capital,countrynames,isoAlpha3ochlanguagesmappas till formulärfält.
I formuläret för viseringsansökan är de tre listrutefälten, Land för medborgarskap, Land för Passport-utfärdande och Destinationsland, bundna till åtgärden Anropa tjänst .
När formuläret läses in hämtar Invoke Service listan över länder från API:t. Svaret mappas sedan för att automatiskt fylla i alternativen i listrutan.
När användaren till exempel öppnar Land där han/hon är medborgare visas listan över länder dynamiskt från API-svaret.
På samma sätt använder Land för Passport-utfärdande och destinationsland samma API-anrop för att säkerställa konsekventa och aktuella data i alla tre fälten.
Du kan hämta egenskapsvärden från en JSON-array genom att anropa ett API och använda en anpassad funktion . På så sätt kan du extrahera värden och binda dem direkt till formulärfält.
Implementera återförsöksmekanism för API-fel
När en API-begäran misslyckas är det ofta användbart att försöka utföra begäran igen innan ett fel rapporteras till användaren. Du kan implementera en avsöknings- och återförsöksmekanism genom att skriva egen kod i filen function.js .
I följande exempel visas hur du hanterar API-fel med upp till två återförsök och exponentiell säkerhetskopiering mellan återförsök:
/**
* Handles request retries with up to 2 retry attempts
* @param {function} requestFn - The request function to execute
* @return {Promise} A promise that resolves with the response or rejects after all retries
*/
function retryHandler(requestFn) {
const MAX_RETRIES = 2;
/**
* Attempts the request with retry metadata
* @param {number} retryCount - Current retry attempt count
* @return {Promise} The request promise
*/
function attemptRequest(retryCount = 0) {
// Include retry metadata if this is a retry
const requestOptions = retryCount > 0 ? {
headers: {
'X-Retry': 'true',
'X-Retry-Count': retryCount.toString(),
'X-Retry-Time': new Date().toISOString()
},
body: {
retry: true,
retryCount: retryCount,
timestamp: Date.now()
}
} : undefined;
return requestFn(requestOptions)
.then(function(response) {
if (response && response.status >= 400) {
console.warn('Request failed with status ' + response.status);
throw new Error('Request failed with status ' + response.status);
}
return response;
})
.catch(function(error) {
console.warn('Request attempt ' + (retryCount + 1) + ' failed:', error.message);
// Retry if max attempts not reached
if (retryCount < MAX_RETRIES) {
console.log('Retrying request, attempt ' + (retryCount + 2) + ' of ' + (MAX_RETRIES + 1));
// Exponential backoff delay: 1s, 2s, 4s...
const delay = Math.pow(2, retryCount) * 1000;
return new Promise(function(resolve) {
setTimeout(resolve, delay);
}).then(function() {
return attemptRequest(retryCount + 1);
});
} else {
// All retries exhausted
console.error('All retry attempts failed. Final error:', error.message);
throw new Error('Request failed after ' + (MAX_RETRIES + 1) + ' attempts: ' + error.message);
}
});
}
// Start the first attempt
return attemptRequest(0);
}
I ovanstående kod hanterar funktionen retryHandler API-begäranden med automatiska försök om fel uppstår. Den tar en begärandefunktion (requestFn) och försöker utföra begäran upp till två gånger, och lägger till metadata för varje nytt försök.
Vanliga frågor
-
Behöver jag skapa en formulärdatamodell för att integrera ett API i adaptiv Forms?
Nej. Med Visual Rule Editor kan du integrera API:er direkt med alternativet Skapa API-integrering utan att skapa en formulärdatamodell. Den här metoden lämpar sig bäst för enkla eller formulärspecifika användningsområden. -
Kan jag skydda API-anrop från regelredigeraren?
Ja. API-integreringskonfigurationen innehåller autentiseringsalternativ som Basic, API Key och OAuth 2.0. Du kan även aktivera Kryptering krävs för att säkerställa att känsliga data överförs på ett säkert sätt.