Inserimento delle risposte nella cache per migliorare le prestazioni

Scopri come utilizzare i criteri di richiesta e risposta di inserimento delle risposte nella cache per ridurre il numero di richieste inviate ai servizi backend con API Gateway.

In genere, è consigliabile evitare di caricare in modo non necessario i servizi backend per migliorare le prestazioni e ridurre i costi. Un modo per ridurre tale carico è quello di inserire nella cache le risposte alle richieste nel caso in cui le risposte possano essere riutilizzate in seguito. Se vengono ricevute richieste simili, possono essere soddisfatte recuperando i dati da una cache delle risposte anziché inviando la richiesta al servizio backend.

Il servizio Gateway API può essere integrato con un server cache esterno a cui si ha già accesso, ad esempio un server Redis o KeyDB. È possibile configurare i gateway API gestiti dal servizio API Gateway per:

  • Memorizzare i dati nel server cache che è stato restituito da un servizio backend in risposta a una richiesta originale.
  • Recupera i dati memorizzati in precedenza dal server cache in risposta a una richiesta successiva simile alla richiesta originale, senza inviare la richiesta successiva al servizio backend.

Per configurare un gateway API per l'inserimento delle risposte nella cache, effettuare le operazioni riportate di seguito.

È possibile impostare l'inserimento delle risposte nella cache mediante:

  • utilizzo di Console
  • modifica di un file JSON

Come funziona l'inserimento delle risposte nella cache?

Dopo aver abilitato un gateway API per l'inserimento delle risposte nella cache, il gateway API analizza le richieste dai client API agli instradamenti che dispongono di criteri di inserimento delle risposte nella cache. Il gateway API tenta di trovare una corrispondenza tra una nuova richiesta e richieste simili precedenti per le quali le risposte sono già memorizzate nel server cache. Il gateway API memorizza le risposte nel server cache per le richieste GET, HEAD e OPTIONS, a condizione che il codice di stato HTTP delle risposte sia 200, 204, 301 o 410. Tenere presente che il gateway API utilizza i criteri di richiesta e risposta di inserimento nella cache delle risposte impostati e ignora eventuali intestazioni di controllo della cache (se presenti) nella richiesta o nella risposta.

Per identificare in modo univoco le risposte nel server cache, il gateway API utilizza le chiavi cache derivate dalle richieste GET, HEAD e OPTIONS che hanno generato le risposte. Per impostazione predefinita, una chiave cache comprende:

  • l'URL della richiesta che ha generato la risposta (esclusi eventuali parametri di query nell'URL)
  • il metodo HTTP (una delle opzioni GET, HEAD o OPTIONS)
  • OCID della distribuzione API che ha ricevuto la richiesta

Per abbinare maggiormente le risposte inserite nella cache a richieste specifiche, è possibile personalizzare facoltativamente le chiavi della cache aggiungendo i valori di una o più variabili di contesto dalla richiesta alla chiave della cache (vedere Note sulla personalizzazione delle chiavi della cache).

L'operazione successiva dipende dal fatto che il gateway API sia in grado di abbinare la nuova richiesta GET, HEAD o OPTIONS con una risposta da una richiesta simile precedente:

  • Se il gateway API trova una chiave cache corrispondente nel server cache, il gateway API recupera i dati di risposta corrispondenti dal server cache e li invia al client API come risposta.
  • Se il gateway API non trova una chiave cache corrispondente nel server cache, il gateway API inoltra la richiesta al servizio backend. Quando il servizio backend restituisce una risposta, il gateway API invia la risposta al client API e memorizza la risposta nel server cache con una nuova chiave cache.
Il gateway API aggiunge un'intestazione aggiuntiva alle risposte alle richieste GET, HEAD e OPTIONS agli instradamenti che dispongono di criteri di inserimento delle risposte nella cache. L'intestazione di risposta aggiuntiva, X-Cache-Status, indica se la risposta è stata recuperata dal server cache come indicato di seguito.
  • X-Cache-Status: HIT indica che nel server cache è stata trovata una chiave cache corrispondente, pertanto la risposta è stata recuperata dal server cache.
  • X-Cache-Status: MISS indica che non è stata trovata alcuna chiave cache corrispondente nel server cache, pertanto la risposta è stata fornita dal servizio backend.
  • X-Cache-Status: BYPASS indica che il server cache non è stato controllato, pertanto la risposta proviene dal servizio backend. I motivi per non controllare il server cache includono problemi di comunicazione con il server cache e impostazioni di configurazione che impediscono il recupero delle risposte per richieste specifiche dal server cache.

Suggerimento: se non si desidera che le risposte contengano l'intestazione X-Cache-Status aggiuntiva, utilizzare un criterio di risposta di trasformazione dell'intestazione per rimuoverlo (vedere Aggiunta di criteri di risposta di trasformazione dell'intestazione).

Note sull'inserimento delle risposte nella cache e sulla sicurezza

Per garantire che i dati sul server cache siano memorizzati e accessibili in modo sicuro:

  • È possibile impostare il gateway API per l'autenticazione con il server cache utilizzando le credenziali salvate come segreto in un vault nel servizio Vault.
  • È possibile specificare se impostare una connessione sicura su TLS (precedentemente SSL) tra il gateway API e un server cache abilitato per TLS e se verificare i certificati TLS. Si noti che al momento vengono verificati solo i certificati firmati dalle autorità di certificazione pubbliche.
  • È possibile specificare un tempo di scadenza per assicurarsi che i dati inseriti nella cache non vengano memorizzati per un periodo troppo lungo e che i dati non più validi non vengano restituiti dal server cache in risposta a una richiesta successiva.
  • È possibile limitare gli URL delle richieste che corrispondono alle chiavi cache personalizzando le chiavi cache in modo da includere uno o più parametri presenti negli URL delle richieste (vedere Note sulla personalizzazione delle chiavi cache).
  • È possibile specificare di non inserire nella cache le risposte per le richieste che includono credenziali (vedere Note sull'inserimento delle risposte nella cache per le richieste contenenti credenziali (inserimento nella cache privato)).

Si noti che è responsabilità dell'utente assicurarsi che il server cache stesso sia configurato correttamente per proteggere i dati memorizzati su di esso. In particolare, Oracle consiglia di non riutilizzare un server cache esistente. Oracle consiglia invece di impostare un nuovo server cache esclusivamente per l'inserimento delle risposte del gateway API nella cache e di limitare l'accesso al server cache solo ai gateway API.

Note sull'inserimento delle risposte nella cache per le richieste contenenti credenziali (inserimento nella cache privato)

Le richieste possono includere intestazioni di autorizzazione che contengono le credenziali per autenticare un client API con un servizio backend. Le credenziali in genere forniscono l'accesso ai dati privati per un individuo o un'organizzazione. Ad esempio, è possibile utilizzare un'intestazione di autorizzazione della richiesta contenente un token di autenticazione per ottenere una risposta contenente informazioni sul conto bancario. L'esistenza di intestazioni di autorizzazione in una richiesta indica che la risposta potrebbe essere di natura sensibile e solo da condividere con coloro a cui è consentito vederla.

Analogamente, se sono state utilizzate funzioni del responsabile autorizzazioni per l'autenticazione e l'autorizzazione, un criterio di autenticazione identifica un'intestazione o un parametro di query in una richiesta contenente un token di accesso (vedere Passaggio dei token alle funzioni del responsabile autorizzazioni per aggiungere l'autenticazione e l'autorizzazione alle distribuzioni API). L'esistenza in una richiesta dell'intestazione o del parametro di query identificato in un criterio di autenticazione indica inoltre che la risposta potrebbe essere di natura sensibile e solo da condividere con coloro a cui è consentito visualizzarla.

L'inserimento nella cache delle risposte per le richieste che contengono intestazioni di autorizzazione o che contengono un'intestazione o un parametro di query identificato in un criterio di autenticazione viene definito 'inserimento nella cache privata'. Sebbene l'inserimento nella cache privata possa accelerare le risposte a richieste simili in futuro, ha il potenziale per compromettere la sicurezza dei dati. Pertanto, per evitare violazioni della sicurezza, l'inserimento nella cache privata è disabilitato per impostazione predefinita. Tuttavia, in base al percorso, è possibile abilitare l'inserimento nella cache privato.

Se si decide di abilitare l'inserimento nella cache privata, si consiglia di personalizzare la chiave cache per isolare le risposte in modo che ogni risposta venga restituita solo a coloro ai quali è consentito visualizzarla. Ad esempio:

  • Aggiungere il valore dell'intestazione di autorizzazione della richiesta o il valore dell'intestazione o del parametro di query identificato in un criterio di autenticazione alla chiave cache come variabile di contesto da una tabella di contesto.
  • Se sono state utilizzate funzioni del responsabile autorizzazioni o JWT per l'autenticazione e l'autorizzazione, aggiungere il valore di una variabile di contesto che identifica il principal della richiesta (ad esempio sub o principalId) alla chiave cache dalla tabella di contesto request.auth. Vedere Aggiunta di autenticazione e autorizzazione alle distribuzioni API.

Una risposta memorizzata nella cache con un valore nella relativa chiave cache per una variabile di contesto verrà restituita solo in risposta a una richiesta con un valore corrispondente.

È responsabilità dell'utente specificare un'aggiunta della chiave cache che fornisca un isolamento sufficiente tra le risposte inserite nella cache. Vedere Note sulla personalizzazione delle chiavi della cache.

Note sulla personalizzazione delle chiavi della cache

Le risposte memorizzate nel server cache sono identificate in modo univoco da una chiave cache. Per impostazione predefinita, una chiave cache viene derivata dall'URL della richiesta che ha generato la risposta (escludendo le variabili di contesto presenti nella richiesta), dal metodo HTTP e dall'OCID della distribuzione API. Per abbinare meglio le risposte inserite nella cache con richieste specifiche, è possibile personalizzare facoltativamente le chiavi cache aggiungendo i valori di una o più variabili di contesto dalla richiesta alla chiave cache. Se si decide di abilitare l'inserimento nella cache privata per le richieste che contengono intestazioni di autorizzazione o che contengono un'intestazione o un parametro di query identificato in un criterio di autenticazione, si consiglia di aggiungerne i valori come variabili di contesto alla chiave cache.

Per specificare i valori delle variabili di contesto da aggiungere alla chiave cache, utilizzare il formato <context-table-name>.[<key>] dove:

  • <context-table-name> è uno dei seguenti: request.query, request.headers o request.auth
  • <key> è uno dei seguenti:
    • un nome di parametro di query incluso nella richiesta all'API
    • un nome di intestazione incluso nella richiesta all'API
    • un nome di parametro di autenticazione restituito da una funzione del responsabile autorizzazioni o contenuto in un token JWT
    • il campo di intestazione Host nella richiesta all'API

Ad esempio:

  • Per aggiungere il valore della variabile di contesto X-Username a una chiave cache quando è inclusa in un'intestazione di richiesta, specificare request.headers[X-Username] come aggiunta di chiave cache.
  • Per aggiungere il principal della richiesta (la persona o l'applicazione che invia la richiesta) a una chiave cache quando è inclusa come richiesta sub in un token JWT, specificare request.auth[sub] come aggiunta di chiave cache.
  • Per aggiungere il valore dell'intestazione Authorization a una chiave cache, specificare request.headers[Authorization] come aggiunta di una chiave cache.
  • Per aggiungere il valore di un token di accesso restituito da una funzione del responsabile autorizzazioni e contenuto in un'intestazione denominata X-Custom-Auth a una chiave cache, specificare request.headers[X-Custom-Auth] come aggiunta di una chiave cache.
  • Per aggiungere il valore del campo di intestazione Host incluso nella richiesta a una chiave cache, specificare request.host.

Per ulteriori informazioni sulle variabili di contesto, vedere Aggiunta di variabili di contesto ai criteri e alle definizioni backend HTTP.

Prerequisiti per l'inserimento delle risposte nella cache

Prima di poter abilitare l'inserimento delle risposte nella cache per un gateway API:

  • Un server cache che implementa il protocollo RESP (ad esempio Redis o KeyDB) deve essere già stato impostato e deve essere disponibile.
  • La subnet del gateway API deve essere in grado di accedere al server cache.
  • Il server cache deve essere ospitato su un singolo host del server cache e non distribuito su più istanze in un cluster.
  • È necessario aver già memorizzato le credenziali per eseguire l'autenticazione con il server cache come segreto in un vault nel servizio Vault (vedere Creazione di un segreto in un vault) e conoscere l'OCID e il numero di versione del segreto. Quando si specifica il contenuto del segreto, utilizzare il formato {"username":"<cache-server-username>", "password":"<cache-server-password>"}. Tenere presente che la specifica di un nome utente è facoltativa. Ad esempio:
    {"password":"<cache-server-password>"}
  • È necessario aver già impostato un criterio per concedere ai gateway API in un gruppo dinamico l'autorizzazione per accedere al segreto nel servizio Vault che contiene le credenziali da autenticare con il server cache (vedere Creare un criterio per concedere ai gateway API l'accesso alle credenziali memorizzate come segreti nel servizio Vault).

Abilitazione dell'inserimento delle risposte nella cache in un gateway API

È possibile abilitare l'inserimento delle risposte nella cache in un gateway API utilizzando la console o modificando un file JSON.

Utilizzo della console per abilitare e configurare l'inserimento delle risposte nella cache

Per abilitare e configurare l'inserimento delle risposte nella cache per un gateway API utilizzando la console:

  1. Crea o aggiorna un gateway API utilizzando la console.

    Per ulteriori informazioni, vedere Creazione di un gateway API e Aggiornamento di un gateway API o di una distribuzione API.

  2. Nella sezione Opzioni avanzate della finestra di dialogo Crea gateway, fare clic sul pulsante Abilita accanto a Inserimento nella cache delle risposte e:

    1. Specificare le opzioni del server cache, come indicato di seguito.
      • Host: il nome host del server cache. Ad esempio, "cache.example.com".
      • Numero di porta: il numero di porta sul server cache. Ad esempio, 6379.
    2. Specificare le opzioni Credenziali server cache, come indicato di seguito.
      • Vault: il nome del vault nel servizio Vault che contiene le credenziali per eseguire il login al server cache.
      • Segreto vault: il nome del segreto nel vault specificato che contiene le credenziali per eseguire il login al server cache.
      • Numero versione del segreto vault: la versione del segreto da utilizzare.
    3. Specificare le opzioni di Connessione al server cache, come indicato di seguito.
      • Usa SSL/TLS nelle richieste: indica se il server cache è abilitato per TLS e quindi se impostare una connessione sicura tra il gateway API e il server cache su TLS (precedentemente SSL).
      • Verifica certificato SSL/TLS: indica se il gateway API verifica il certificato TLS (precedentemente SSL) del server cache. Si noti che al momento vengono verificati solo i certificati firmati dalle autorità di certificazione pubbliche.
      • Timeout connessione: tempo di attesa prima di abbandonare un tentativo di connessione al server cache, in millisecondi. Se il gateway API non è in grado di connettersi al server cache entro questo periodo di tempo, il gateway API non recupera i dati precedentemente inseriti nella cache dal server cache e non scrive nuovi dati nel server cache per un potenziale futuro riutilizzo.
      • Timeout lettura: tempo di attesa prima di abbandonare un tentativo di lettura dei dati dal server cache, in millisecondi. Se il gateway API non è in grado di recuperare i dati dal server cache entro questo periodo di tempo, il gateway API invia invece una richiesta al servizio backend.
      • Timeout invio: tempo di attesa prima di abbandonare un tentativo di scrittura dei dati nel server cache, in millisecondi. Se il gateway API non è in grado di inviare dati al server cache entro questo periodo di tempo, una risposta non viene inserita nella cache per un potenziale riutilizzo futuro.
  3. Fare clic su Crea o su Salva modifiche per creare o aggiornare il gateway API.

Utilizzo dell'interfaccia CLI e di un file JSON per abilitare e configurare l'inserimento delle risposte nella cache

Per abilitare e configurare l'inserimento delle risposte nella cache per un gateway API utilizzando l'interfaccia CLI e un file JSON, effettuare le operazioni riportate di seguito.

  1. Utilizzando l'editor JSON preferito, creare un file di configurazione della cache nel formato seguente:

    {
      "type" : "EXTERNAL_RESP_CACHE",
      "servers" : [
        {
          "host" : "<cache-server-hostname>",
          "port" : <port-number>
        }
      ],
      "authenticationSecretId" : "<secret-ocid>",
      "authenticationSecretVersionNumber" : <secret-version-number>,
      "isSSLEnabled" : <true|false>,
      "isSSLVerifyDisabled" : <true|false>,
      "connectTimeoutInMs" : <milliseconds>,
      "readTimeoutInMs" : <milliseconds>,
      "readTimeoutInMs" : <milliseconds>
    }
    dove:
    • "type" : "EXTERNAL_RESP_CACHE" indica che l'inserimento delle risposte nella cache deve essere abilitato. Se non è impostata, l'impostazione predefinita è "type" : "NONE", a indicare che l'inserimento delle risposte nella cache è disabilitato.
    • "host" : "<cache-server-hostname>" è il nome host del server cache. Ad esempio, "host" : "cache.example.com".
    • "port" : <port-number> è il numero di porta sul server cache. Ad esempio, "port" : 6379.
    • "authenticationSecretId" : "<secret-ocid>" è l'OCID del segreto definito in un vault nel servizio Vault che contiene le credenziali per eseguire il login al server cache. Ad esempio, "authenticationSecretId" : "ocid.oc1.sms.secret.aaaaaa______gbdn"
    • "authenticationSecretVersionNumber" : <secret-version-number> è la versione del segreto da utilizzare. Ad esempio, "authenticationSecretVersionNumber" : 1
    • "isSSLEnabled" : <true|false> indica se il server cache è abilitato per TLS e quindi se impostare una connessione sicura tra il gateway API e il server cache su TLS (precedentemente SSL). Se non è impostata, l'impostazione predefinita è false
    • "isSSLVerifyDisabled" : <true|false> indica se il gateway API verifica il certificato TLS (precedentemente SSL) del server cache. Si noti che al momento vengono verificati solo i certificati firmati dalle autorità di certificazione pubbliche. Se non è impostata, l'impostazione predefinita è false
    • "connectTimeoutInMs" : <milliseconds> indica il tempo di attesa prima di abbandonare un tentativo di connessione al server cache, in millisecondi. Se il gateway API non è in grado di connettersi al server cache entro questo periodo di tempo, il gateway API non recupera i dati precedentemente inseriti nella cache dal server cache e non scrive nuovi dati nel server cache per un potenziale futuro riutilizzo. Se non è impostata, l'impostazione predefinita è 1000. Ad esempio, "connectTimeoutInMs" : 1500
    • "readTimeoutInMs" : <milliseconds> indica il tempo di attesa prima di abbandonare un tentativo di lettura dei dati dal server cache, in millisecondi. Se il gateway API non è in grado di recuperare i dati dal server cache entro questo periodo di tempo, il gateway API invia invece una richiesta al servizio backend. Se non è impostata, l'impostazione predefinita è 1000. Ad esempio, "readTimeoutInMs" : 250
    • "sendTimeoutInMs" : <milliseconds> indica il tempo di attesa prima di abbandonare un tentativo di scrittura dei dati nel server cache, in millisecondi. Se il gateway API non è in grado di inviare dati al server cache entro questo periodo di tempo, le risposte non vengono inserite nella cache per un potenziale futuro riutilizzo. Se non è impostata, l'impostazione predefinita è 1000. Ad esempio, "sendTimeoutInMs" : 1250

    Ad esempio:

    {
      "type" : "EXTERNAL_RESP_CACHE",
      "servers" : [
        {
          "host" : "cache.example.com",
          "port" : 6379
        }
      ],
      "authenticationSecretId" : "ocid.oc1.sms.secret.aaaaaa______gbdn",
      "authenticationSecretVersionNumber" : 1,
      "isSSLEnabled" : true,
      "isSSLVerifyDisabled" : false,
      "connectTimeoutInMs" : 1000,
      "readTimeoutInMs" : 250,
      "sendTimeoutInMs" : 1000
    }
  2. Salvare il file di configurazione della cache con il nome desiderato. Ad esempio, resp-cache-config.json
  3. Utilizzare il file di configurazione della cache quando si crea o si aggiorna un gateway API utilizzando l'interfaccia CLI:
    • Per creare un nuovo gateway API con l'inserimento delle risposte nella cache abilitato, seguire le istruzioni CLI in Creazione di un gateway API e impostare il parametro --response-cache-details sul nome e sulla posizione del file di configurazione della cache. Ad esempio:
      oci api-gateway gateway create --display-name "Hello World Gateway" --compartment-id ocid1.compartment.oc1..aaaaaaaa7______ysq --endpoint-type "PRIVATE" --subnet-id ocid1.subnet.oc1.iad.aaaaaaaaz______rca --response-cache-details file:///etc/caches/resp-cache-config.json
    • Per aggiornare un gateway API esistente per abilitare l'inserimento delle risposte nella cache o modificare le impostazioni di inserimento delle risposte nella cache, seguire le istruzioni CLI in Aggiornamento di un gateway API o di una distribuzione API e impostare il parametro --response-cache-details sul nome e sulla posizione del file di configurazione della cache. Ad esempio:
      oci api-gateway gateway update --gateway-id ocid1.apigateway.oc1..aaaaaaaab______hga --response-cache-details file:///etc/caches/resp-cache-config.json

Aggiunta di richieste e criteri di risposta per l'inserimento delle risposte nella cache

È possibile aggiungere criteri di richiesta e risposta di inserimento delle risposte nella cache alle specifiche di distribuzione API utilizzando la console o modificando un file JSON. Tenere presente che è necessario abilitare l'inserimento delle risposte nella cache in un gateway API affinché i criteri di richiesta e risposta diventino effettivi.

Utilizzo della console per aggiungere criteri di richiesta e risposta di inserimento nella cache delle risposte

Per aggiungere criteri di richiesta e risposta di inserimento delle risposte nella cache a una specifica di distribuzione API utilizzando la console, procedere come segue.

  1. Creare o aggiornare una distribuzione API utilizzando la console, selezionare l'opzione Da zero e immettere i dettagli nella pagina Informazioni di base.

    Per ulteriori informazioni, vedere Distribuzione di un'interfaccia API in un gateway API mediante la creazione di una distribuzione API e Aggiornamento di un gateway API o di una distribuzione API.

  2. Fare clic su Successivo per immettere i dettagli relativi ai singoli instradamenti nella distribuzione API nella pagina Instradamenti e fare clic su Inserimento nella cache delle risposte.

  3. Selezionare l'opzione Inserimento nella cache per questo instradamento e specificare le opzioni di inserimento nella cache delle risposte che si applicano a questo instradamento specifico:
    • TTL (Time To Live) per le risposte inserite nella cache in secondi: per quanto tempo i dati inseriti nella cache sono disponibili nel server cache per questo instradamento specifico.
    • Aggiunte di chiavi della cache: una o più variabili di contesto da aggiungere alla chiave cache predefinita per associare più da vicino una risposta memorizzata nella cache a una richiesta specifica. Ad esempio, request.headers[X-Username]. È possibile effettuare una selezione da un elenco di variabili di contesto comunemente utilizzate oppure immettere una variabile di contesto di propria scelta. Non precedere la variabile di contesto con il simbolo $ o racchiuderla tra parentesi graffe (come si farebbe se si aggiungesse la variabile di contesto a un URL in una specifica di distribuzione API in un file JSON). Per ulteriori informazioni, vedere Note sulla personalizzazione delle chiavi della cache.
  4. Se si desidera inserire nella cache le risposte per le richieste che contengono un'intestazione di autorizzazione o che contengono un'intestazione o un parametro di query identificato in un criterio di autenticazione, selezionare l'opzione Inserisci nella cache risposte con intestazioni di autorizzazione.

    Tenere presente che l'inserimento delle risposte nella cache per tali richieste potrebbe compromettere la sicurezza dei dati. Per ulteriori informazioni, vedere Note sull'inserimento delle risposte nella cache per le richieste contenenti credenziali (inserimento nella cache privato).

  5. Fare clic su Successivo per esaminare i dettagli immessi per la distribuzione API.
  6. Fare clic su Crea o su Salva modifiche per creare o aggiornare la distribuzione API.
  7. (Facoltativo) Confermare che l'interfaccia API sia stata distribuita correttamente chiamandola (vedere Chiamata di un'interfaccia API distribuita in un gateway API).

Modifica di un file JSON per aggiungere criteri di richiesta e risposta di inserimento nella cache delle risposte

Per aggiungere l'inserimento delle risposte nella cache a un determinato instradamento, è necessario aggiungere sia un criterio di richiesta che un criterio di risposta.

Per aggiungere la richiesta e il criterio di risposta di inserimento nella cache delle risposte a una specifica di distribuzione API in un file JSON, effettuare le operazioni riportate di seguito.

  1. Utilizzando l'editor JSON preferito, modificare la specifica di distribuzione API esistente alla quale si desidera aggiungere l'inserimento delle risposte nella cache o creare una nuova specifica di distribuzione API (vedere Creazione di una specifica di distribuzione API).

    Ad esempio, la seguente specifica di distribuzione API di base definisce una semplice funzione serverless Hello World in Funzioni OCI come un singolo backend:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  2. Per specificare la richiesta di inserimento nella cache delle risposte e il criterio di risposta che si applica a un singolo instradamento:

    1. Inserire sia una sezione requestPolicies che una sezione responsePolicies dopo la sezione backend per l'instradamento a cui si desidera applicare il criterio. Ad esempio:

      {
        "routes": [
          {
            "path": "/hello",
            "methods": ["GET"],
            "backend": {
              "type": "ORACLE_FUNCTIONS_BACKEND",
              "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
            },
            "requestPolicies": {},
            "responsePolicies": {}
          }
        ]
      }
    2. Aggiungere il seguente criterio di richiesta responseCacheLookup alla nuova sezione requestPolicies da applicare all'instradamento:
      {
        "routes": [
          {
            "path": "/hello",
            "methods": ["GET"],
            "backend": {
              "type": "ORACLE_FUNCTIONS_BACKEND",
              "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
            },
            "requestPolicies": {
              "responseCacheLookup": {
                "type": "SIMPLE_LOOKUP_POLICY",
                "isEnabled": true,
                "isPrivateCachingEnabled": <true|false>,
                "cacheKeyAdditions": [<list-of-context-variables>]
              }
            },
            "responsePolicies": {}
          }
        ]
      }

      dove:

      • "type": "SIMPLE_LOOKUP_POLICY" è il tipo di inserimento nella cache delle risposte da implementare. Attualmente è supportata solo "SIMPLE_LOOKUP_POLICY".
      • "isEnabled": true indica che l'inserimento delle risposte nella cache è abilitato per l'instradamento. Se si desidera disabilitare temporaneamente l'inserimento delle risposte nella cache, impostare "isEnabled": false. Se non viene specificato, il valore predefinito è true.
      • "isPrivateCachingEnabled": <true|false> indica se inserire nella cache le risposte per le richieste che contengono un'intestazione di autorizzazione o che contengono un'intestazione o un parametro di query identificato in un criterio di autenticazione. Tenere presente che l'inserimento delle risposte nella cache per tali richieste potrebbe compromettere la sicurezza dei dati. Se non specificato, l'impostazione predefinita è false, a indicare che le risposte per tali richieste non vengono inserite nella cache. Per ulteriori informazioni, vedere Note sull'inserimento delle risposte nella cache per le richieste contenenti credenziali (inserimento nella cache privato).
      • "cacheKeyAdditions": [<list-of-context-variables>] è un elenco facoltativo di variabili di contesto separate da virgole da aggiungere alla chiave cache predefinita per associare più da vicino una risposta memorizzata nella cache a una richiesta specifica. Ad esempio, "cacheKeyAdditions": ["request.headers[Accept]"]. Non precedere la variabile di contesto con il simbolo $ o racchiuderla tra parentesi graffe (come si farebbe se si aggiungesse la variabile di contesto a un URL in una specifica di distribuzione API in un file JSON). Per ulteriori informazioni, vedere Note sulla personalizzazione delle chiavi della cache.
    3. Aggiungere il seguente criterio di risposta responseCacheStorage alla nuova sezione responsePolicies da applicare all'instradamento:
      {
        "routes": [
          {
            "path": "/hello",
            "methods": ["GET"],
            "backend": {
              "type": "ORACLE_FUNCTIONS_BACKEND",
              "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
            },
            "requestPolicies": {
              "responseCacheLookup": {
                "type": "SIMPLE_LOOKUP_POLICY",
                "isEnabled": true,
                "isPrivateCachingEnabled": false,
                "cacheKeyAdditions": ["request.headers[Accept]"]
              }
            },
            "responsePolicies": {
              "responseCacheStorage": {
                "type": "FIXED_TTL_STORE_POLICY",
                "timeToLiveInSeconds": <seconds>
              }
            }
          }
        ]
      }

      dove:

      • "type": "FIXED_TTL_STORE_POLICY" è il tipo di cache delle risposte in cui memorizzare le risposte. Attualmente è supportata solo "FIXED_TTL_STORE_POLICY".
      • "timeToLiveInSeconds": <seconds> specifica la durata della disponibilità dei dati inseriti nella cache nel server cache per questo instradamento specifico. Ad esempio, "timeToLiveInSeconds": 300

    Ad esempio:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "requestPolicies": {
            "responseCacheLookup": {
              "type": "SIMPLE_LOOKUP_POLICY",
              "isEnabled": true,
              "isPrivateCachingEnabled": false,
              "cacheKeyAdditions": ["request.headers[Accept]"]
            }
          },
          "responsePolicies": {
            "responseCacheStorage": {
              "type":"FIXED_TTL_STORE_POLICY",
              "timeToLiveInSeconds": 300
            }
          }
        }
      ]
    }
  3. Salvare il file JSON contenente la specifica di distribuzione API.
  4. Utilizzare la specifica di distribuzione API quando si crea o si aggiorna una distribuzione API nei modi riportati di seguito.

    • specificando il file JSON nella console quando si seleziona l'opzione Carica un'interfaccia API esistente
    • specificando il file JSON in una richiesta all'API REST del gateway API

    Per ulteriori informazioni, vedere Distribuzione di un'interfaccia API in un gateway API mediante la creazione di una distribuzione API e Aggiornamento di un gateway API o di una distribuzione API.

  5. (Facoltativo) Confermare che l'interfaccia API sia stata distribuita correttamente chiamandola (vedere Chiamata di un'interfaccia API distribuita in un gateway API).