Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
Edge ha una potente utility chiamata "API di gestione" che offre servizi come:
- Deployment o annullamento del deployment dei proxy API
- Configurazione di host virtuali, keystore e truststore e così via
- Creazione, eliminazione e/o aggiornamento di entità come KeyValueMap, prodotti API, app sviluppatore sviluppatori, chiavi consumer e così via
- Recupero di informazioni su queste entità
Questi servizi sono accessibili tramite un componente chiamato server di gestione nella piattaforma Apigee Edge. Questi servizi possono essere richiamati facilmente con l'aiuto di semplici chiamate API di gestione.
A volte potrebbe essere necessario utilizzare uno o più di questi servizi dai proxy API in fase di runtime. Questo perché le entità come KeyValueMap, token di accesso OAuth, prodotti API, app sviluppatore, sviluppatori, chiavi consumer e così via contengono informazioni utili sotto forma di coppie chiave-valore, attributi personalizzati o come parte del loro profilo.
Ad esempio, puoi archiviare le seguenti informazioni in KeyValueMap per renderle più sicure e accessibili in fase di runtime:
- URL di destinazione di backend
- Proprietà dell'ambiente
- Credenziali di sicurezza dei sistemi di backend o di terze parti
Allo stesso modo, potresti voler recuperare l'elenco dei prodotti API o l'indirizzo email dello sviluppatore in fase di runtime. Queste informazioni saranno disponibili come parte del profilo delle app sviluppatore.
Tutte queste informazioni possono essere utilizzate in modo efficace in fase di runtime per abilitare un comportamento dinamico nelle policy o nel codice personalizzato all'interno di Apigee Edge.
Antipattern
Le API di gestione sono preferibili e utili per le attività amministrative e non devono essere utilizzate per eseguire la logica di runtime nel flusso dei proxy API. I motivi sono i seguenti:
- L'utilizzo delle API di gestione per accedere alle informazioni sulle entità come KeyValueMap, token di accesso OAuth o per qualsiasi altro scopo dai proxy API comporta una dipendenza dai server di gestione.
- I server di gestione non fanno parte del componente di runtime di Edge e pertanto potrebbero non essere ad alta affidabilità.
- Inoltre, i server di gestione potrebbero non essere sottoposti a provisioning nella stessa rete o nello stesso data center e pertanto potrebbero introdurre latenze di rete in fase di runtime.
- Le voci nei server di gestione vengono memorizzate nella cache per un periodo di tempo più lungo, quindi potremmo non essere in grado di visualizzare immediatamente i dati più recenti nei proxy API se eseguiamo scritture e letture in un breve periodo di tempo.
- Aumenta gli hop di rete in fase di runtime.
Nel codice di esempio riportato di seguito, la chiamata API di gestione viene effettuata tramite il codice JavaScript personalizzato per recuperare le informazioni da KeyValueMap:
var response = httpClient.send('https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/keyvaluemaps/kvm_name')
Se il server di gestione non è disponibile, il codice JavaScript che richiama la chiamata API di gestione non riesce. Di conseguenza, la richiesta API non riesce.
Impatto
- Introduce una dipendenza aggiuntiva dai server di gestione durante il runtime. Eventuali errori nei server di gestione influiranno sulle chiamate API.
- Le credenziali utente per le API di gestione devono essere archiviate localmente o in un datastore sicuro come KVM crittografato.
- Implicazioni sul rendimento dovute alla chiamata del servizio di gestione sulla rete.
- Potresti non visualizzare immediatamente i valori aggiornati a causa di una scadenza della cache più lunga nei server di gestione server.
Best practice
Esistono modi più efficaci per recuperare informazioni da entità come KeyValueMap, prodotti API, app sviluppatore, sviluppatori, chiavi consumer e così via in fase di runtime. Ecco alcuni esempi:
- Utilizza una policy KeyValueMapOperations per accedere alle informazioni da KeyValueMap. Ecco un codice campione
che mostra come recuperare le informazioni da KeyValueMap:
<!-- /antipatterns/examples/2-6.xml --> <KeyValueMapOperations mapIdentifier="urlMap" async="false" continueOnError="false" enabled="true" name="GetURLKVM"> <DisplayName>GetURLKVM</DisplayName> <ExpiryTimeInSecs>86400</ExpiryTimeInSecs> <Scope>environment</Scope> <Get assignTo="urlHosti" index="2"> <Key> <Parameter>urlHost_1</Parameter> </Key> </Get> </KeyValueMapOperations>
- Per accedere alle informazioni su prodotti API, app sviluppatore, sviluppatori, chiavi consumer e così via
nel proxy API, puoi eseguire una delle seguenti operazioni:
- Se il flusso del proxy API ha una policy VerifyAPIKey, puoi accedere alle informazioni
utilizzando le variabili di flusso compilate come parte di questa policy. Ecco un codice campione che mostra
come recuperare le informazioni name e created_by di un'app sviluppatore utilizzando JavaScript:
<!-- /antipatterns/examples/2-7.xml --> print("Application Name ", context.getVariable(""verifyapikey. VerifyAPIKey.app.name")); print("Created by:", context.getVariable("verifyapikey. VerifyAPIKey.app.created_by"));
- Se il flusso del proxy API non ha una policy VerifyAPIKey, puoi accedere ai
profili di prodotti API, app sviluppatore e così via utilizzando le policy AccessEntity ed ExtractVariables
policies:
- Recupera il profilo di DeveloperApp con la policy AccessEntity:
<!-- /antipatterns/examples/2-8.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessEntity async="false" continueOnError="false" enabled="true" name="GetDeveloperApp"> <DisplayName>GetDeveloperApp</DisplayName> <EntityType value="app"></EntityType> <EntityIdentifier ref="developer.app.name" type="appname"/> <SecondaryIdentifier ref="developer.id" type="developerid"/> </AccessEntity>
- Estrai il
appIdda DeveloperApp con la policy ExtractVariables:<!-- /antipatterns/examples/2-9.xml --> <ExtractVariables name="Extract-Developer App-Info"> <!-- The source element points to the variable populated by AccessEntity policy. The format is <policy-type>.<policy-name> In this case, the variable contains the whole developer profile. --> <Source>AccessEntity.GetDeveloperApp"</Source> <VariablePrefix>developerapp</VariablePrefix> <XMLPayload> <Variable name="appld" type="string"> <!-- You parse elements from the developer profile using XPath. --> <XPath>/App/AppId</XPath> </Variable> </XMLPayload> </ExtractVariables>
- Recupera il profilo di DeveloperApp con la policy AccessEntity:
- Se il flusso del proxy API ha una policy VerifyAPIKey, puoi accedere alle informazioni
utilizzando le variabili di flusso compilate come parte di questa policy. Ecco un codice campione che mostra
come recuperare le informazioni name e created_by di un'app sviluppatore utilizzando JavaScript: