Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di
Apigee Edge.
Apigee dispone di una potente utility chiamata API Apigee che offre servizi come:
- Deployment o annullamento del deployment di proxy API
- Configurazione di host virtuali, keystore e truststore e così via
- Creazione, eliminazione e aggiornamento di entità come mappe chiave-valore (KVM), prodotti API, sviluppatori app, sviluppatori, chiavi utente e così via
- Recupero delle informazioni su queste entità
Questi servizi sono resi accessibili tramite un componente chiamato Management Server nella piattaforma Apigee. Questi servizi possono essere richiamati facilmente con l'aiuto di semplici API chiamate.
A volte potremmo dover utilizzare uno o più di questi servizi dai proxy API in fase di esecuzione. Questo è perché entità come KVM, token di accesso OAuth, prodotti API, app per sviluppatori sviluppatori, chiavi utente e così via contengono informazioni utili sotto forma di coppie chiave-valore, o come parte del suo profilo.
Ad esempio, puoi archiviare le seguenti informazioni in una KVM per renderla più sicura accessibili in fase di esecuzione:
- URL di destinazione backend
- Proprietà dell'ambiente
- Credenziali di sicurezza di sistemi backend o di terze parti
Analogamente, potresti voler ottenere l'elenco dei prodotti API o l'indirizzo email dello sviluppatore in fase di esecuzione. Queste informazioni saranno disponibili nel profilo delle app dello sviluppatore.
Tutte queste informazioni possono essere utilizzate efficacemente in fase di runtime per consentire il comportamento dinamico nei criteri o codice personalizzato in Apigee.
Antipattern
Le API Apigee sono preferite e utili per le attività amministrative e non devono essere utilizzate per eseguire alcuna logica di runtime nel flusso dei proxy API. Il motivo è che:
- L'utilizzo delle API Apigee per accedere a informazioni su entità come KVM, token di accesso OAuth o per qualsiasi altro scopo dai proxy API comporta la dipendenza dai server di gestione.
- I server di gestione non fanno parte dei componenti di runtime di Apigee e, pertanto, potrebbero non essere altamente disponibili.
- Inoltre, potrebbe non essere possibile eseguire il provisioning dei server di gestione all'interno della stessa rete o dello stesso data center. introdurre latenze di rete in fase di runtime.
- Le voci presenti nei server di gestione vengono memorizzate nella cache per un periodo di tempo più lungo, quindi potresti non essere vedere immediatamente i dati più recenti nei proxy API se esegui scritture e letture in un per un breve periodo di tempo.
- Aumenta i hop di rete in fase di esecuzione.
Nell'esempio di codice seguente, la chiamata all'API Apigee viene effettuata tramite il codice JavaScript personalizzato per recuperare le informazioni dalla KVM:
var response = httpClient.send('https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/keyvaluemaps')
Se il server di gestione non è disponibile, il codice JavaScript che richiama la chiamata all'API Apigee non va a buon fine. Di conseguenza, la richiesta API non va a buon fine.
Impatto
- Introduce una dipendenza aggiuntiva dai server di gestione durante il runtime. Qualsiasi errore in I server di gestione influiranno sulle chiamate API.
- Le credenziali utente per le API Apigee devono essere archiviate localmente o in un archivio sicuro ad esempio una KVM criptata.
- Implicazioni sulle prestazioni dovute alla chiamata al servizio di gestione sulla rete.
- I valori aggiornati potrebbero non essere visualizzati immediatamente a causa di una scadenza più lunga della cache in Gestione Server
Best practice
Esistono metodi più efficaci per recuperare informazioni da entità come KVM, prodotti API, app per sviluppatori, sviluppatori, chiavi consumer e così via in fase di esecuzione. Ecco alcuni esempi:
- Utilizza un criterio KeyValueMapOperations per accedere alle informazioni delle mappe KeyValue. Ecco un codice campione
che mostra come recuperare informazioni dalla KVM:
<!-- /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 a informazioni su prodotti basati su API, app per sviluppatori, sviluppatori, chiavi consumer e così via
nel proxy API, puoi effettuare una delle seguenti operazioni:
- Se il flusso di proxy API ha un regolamento VerifyAPIKey, puoi accedere alle informazioni
utilizzando le variabili di flusso compilate nell'ambito di questo regolamento. Ecco un codice campione che mostra
come recuperare il nome e le informazioni create_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 un regolamento VerifyAPIKey, puoi accedere ai
profili dei prodotti API, delle app per sviluppatori e così via utilizzando i regolamenti
AccessEntity
eExtractVariables
:- Recupera il profilo dell'app dello sviluppatore con il AccessEntity policy:
<!-- /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
appId
dall'app per sviluppatori con il criterio 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 dell'app dello sviluppatore con il AccessEntity policy:
- Se il flusso di proxy API ha un regolamento VerifyAPIKey, puoi accedere alle informazioni
utilizzando le variabili di flusso compilate nell'ambito di questo regolamento. Ecco un codice campione che mostra
come recuperare il nome e le informazioni create_by di un'app sviluppatore utilizzando JavaScript: