Aggiunta dei criteri di risposta per la trasformazione delle intestazioni

È possibile aggiungere criteri di risposta alla trasformazione dell'intestazione alle specifiche di distribuzione API utilizzando la console o modificando un file JSON.

Tenere presente che non è possibile utilizzare i criteri di trasformazione delle intestazioni per trasformare determinate intestazioni di risposta protette. Vedere Intestazioni richiesta protette e intestazioni risposta.

Utilizzo della console per aggiungere i criteri di risposta per la trasformazione delle intestazioni

Per aggiungere criteri di risposta per la trasformazione dell'intestazione a una specifica di distribuzione API utilizzando la console:

  1. Creare o aggiornare una distribuzione API utilizzando la console, selezionare l'opzione Crea distribuzione 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.

  2. Selezionare Successivo e specificare le opzioni di autenticazione nella pagina Autenticazione.

    Per ulteriori informazioni sulle opzioni di autenticazione, vedere Aggiunta di autenticazione e autorizzazione alle distribuzioni API.

  3. Selezionare Successivo per immettere i dettagli dei singoli instradamenti nella distribuzione API nella pagina Cicli.

  4. Nella pagina Cicli selezionare l'instradamento per il quale si desidera specificare i criteri di risposta per la trasformazione dell'intestazione.
  5. Selezionare Mostra criteri di risposta instradamenti.
  6. Selezionare il pulsante Aggiungi accanto a Trasformazioni intestazione per aggiornare le intestazioni incluse in una risposta dal gateway API per l'instradamento corrente.
  7. Per limitare le intestazioni incluse in una risposta, specificare:

    • Azione: filtro.
    • Tipo: Blocca per rimuovere dalla risposta le intestazioni elencate in modo esplicito oppure Consenti di consentire solo nella risposta le intestazioni elencate in modo esplicito (qualsiasi altra intestazione viene rimossa dalla risposta).
    • Nomi intestazione: l'elenco delle intestazioni da rimuovere dalla risposta o consentire nella risposta (a seconda dell'impostazione di Tipo). I nomi specificati non fanno distinzione tra maiuscole e minuscole e non devono essere inclusi in altri criteri di risposta alla trasformazione per l'instradamento (ad eccezione degli elementi filtrati come consentito). Ad esempio, User-Agent.
  8. Per modificare il nome di un'intestazione inclusa in una risposta (mantenendone il valore originale), specificare:

    • Azione: rinominare.
    • Nome intestazione: il nome originale dell'intestazione che si sta rinominando. Il nome specificato non fa distinzione tra maiuscole e minuscole e non deve essere incluso in altri criteri di risposta alla trasformazione per l'instradamento. Ad esempio, X-Username.
    • Nuovo nome intestazione: il nuovo nome dell'intestazione che si sta rinominando. Il nome specificato non fa distinzione tra maiuscole e minuscole (la maiuscola potrebbe essere ignorata) e non deve essere incluso in altri criteri di risposta alla trasformazione per l'instradamento (ad eccezione degli elementi negli elenchi ALLOW). Ad esempio, X-User-ID.
  9. Per aggiungere una nuova intestazione a una risposta (o per modificare o mantenere i valori di un'intestazione esistente già inclusa in una risposta), specificare:

    • Azione: impostare.
    • Comportamento: se l'intestazione esiste già, specificare le azioni da eseguire con il valore esistente dell'intestazione:

      • Sovrascrivi, per sostituire il valore esistente dell'intestazione con il valore specificato.
      • Aggiungi, per aggiungere il valore specificato al valore esistente dell'intestazione.
      • Ignora per mantenere il valore esistente dell'intestazione.
    • Nome intestazione: il nome dell'intestazione da aggiungere alla risposta o per modificare il valore di. Il nome specificato non fa distinzione tra maiuscole e minuscole e non deve essere incluso in altri criteri di risposta alla trasformazione per l'instradamento (ad eccezione degli elementi filtrati come consentito). Ad esempio, X-Api-Key.
    • Valori: il valore della nuova intestazione (o il valore da sostituire o aggiungere al valore di un'intestazione esistente, a seconda dell'impostazione di Comportamento). Il valore specificato può essere una stringa semplice o includere variabili di contesto racchiuse nei delimitatori ${...}. Ad esempio, "value": "zyx987wvu654tsu321". È possibile specificare più valori.
  10. Selezionare Aggiorna.
  11. Selezionare Aggiorna, quindi Avanti per esaminare i dettagli immessi per i singoli instradamenti.
  12. Selezionare Crea o Aggiorna per creare o aggiornare la distribuzione API.
  13. (Facoltativo) Confermare che l'interfaccia API è stata distribuita correttamente chiamandola (vedere Chiamata di un'interfaccia API distribuita su un gateway API).

Modifica di un file JSON per aggiungere criteri di risposta trasformazione intestazione

Per aggiungere criteri di risposta per la trasformazione dell'intestazione a una specifica di distribuzione API in un file JSON, procedere come segue.

  1. Utilizzando l'editor JSON preferito, modificare la specifica di distribuzione API esistente a cui si desidera aggiungere criteri di risposta per la trasformazione dell'intestazione 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 OCI Functions come un singolo back end:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  2. Inserire una sezione responsePolicies dopo la sezione backend per l'instradamento a cui si desidera applicare il criterio di risposta alla trasformazione dell'intestazione. Ad esempio:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {}
        }
      ]
    }
  3. Aggiungere una sezione headerTransformations alla sezione responsePolicies.

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations":{}
          }
        }
      ]
    }
  4. Per limitare le intestazioni incluse in una risposta, specificare un criterio di risposta per la trasformazione dell'intestazione filterHeaders:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations": {
              "filterHeaders": {
                "type": "<BLOCK|ALLOW>",
                "items": [
                  {
                    "name": "<header-name>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    dove:

    • "type": "<BLOCK|ALLOW>" indica cosa fare con le intestazioni specificate da "items":[{"name":"<header-name>"}]:
      • Utilizzare BLOCK per rimuovere dalla risposta le intestazioni elencate in modo esplicito.
      • Utilizzare ALLOW per consentire nella risposta solo le intestazioni elencate in modo esplicito (qualsiasi altra intestazione viene rimossa dalla risposta).
    • "name":"<header-name> è un'intestazione da rimuovere dalla risposta o da consentire nella risposta (a seconda dell'impostazione di "type": "<BLOCK|ALLOW>"). Il nome specificato non fa distinzione tra maiuscole e minuscole e non deve essere incluso in altri criteri di risposta alla trasformazione per l'instradamento (ad eccezione degli elementi negli elenchi ALLOW). Ad esempio, User-Agent.

    È possibile rimuovere e consentire fino a 20 intestazioni in un criterio di risposta di trasformazione dell'intestazione filterHeaders.

    Ad esempio:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations": {
              "filterHeaders": {
                "type": "BLOCK",
                "items": [
                  {
                    "name": "User-Agent"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    In questo esempio il gateway API rimuove l'intestazione User-Agent da tutte le risposte in uscita.

  5. Per modificare il nome di un'intestazione inclusa in una risposta (mantenendone il valore originale), specificare un criterio di risposta per la trasformazione dell'intestazione renameHeaders:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations": {
              "renameHeaders": {
                "items": [
                  {
                    "from": "<original-name>",
                    "to": "<new-name>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    dove:

    • "from": "<original-name>" è il nome originale dell'intestazione che si sta rinominando. Il nome specificato non fa distinzione tra maiuscole e minuscole e non deve essere incluso in altri criteri di risposta alla trasformazione per l'instradamento. Ad esempio, X-Username.
    • "to": "<new-name>" è il nuovo nome dell'intestazione che si sta rinominando. Il nome specificato non fa distinzione tra maiuscole e minuscole (la maiuscola potrebbe essere ignorata) e non deve essere incluso in altri criteri di risposta alla trasformazione per l'instradamento (ad eccezione degli elementi negli elenchi ALLOW). Ad esempio, X-User-ID.

    È possibile rinominare fino a 20 intestazioni in un criterio di risposta di trasformazione dell'intestazione renameHeaders.

    Ad esempio:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations": {
              "renameHeaders": {
                "items": [
                  {
                    "from": "X-Username",
                    "to": "X-User-ID"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    In questo esempio, il gateway API rinomina qualsiasi intestazione X-Username in X-User-ID, mantenendo il valore originale dell'intestazione.

  6. Per aggiungere una nuova intestazione a una risposta (o per modificare o mantenere i valori di un'intestazione esistente già inclusa in una risposta), specificare un criterio di risposta di trasformazione dell'intestazione setHeaders:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations": {
              "setHeaders": {
                "items": [
                  {
                    "name": "<header-name>",
                    "values": ["<header-value>"],
                    "ifExists": "<OVERWRITE|APPEND|SKIP>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    dove:

    • "name":"<header-name> è il nome dell'intestazione da aggiungere alla risposta (o per modificare il valore di). Il nome specificato non fa distinzione tra maiuscole e minuscole e non deve essere incluso in altri criteri di risposta alla trasformazione per l'instradamento (ad eccezione degli elementi negli elenchi ALLOW). Ad esempio, X-Api-Key.
    • "values": ["<header-value>"] è il valore della nuova intestazione (o il valore da sostituire o aggiungere al valore di un'intestazione esistente, a seconda dell'impostazione di "ifExists": "<OVERWRITE|APPEND|SKIP>"). Il valore specificato può essere una stringa semplice o includere variabili di contesto racchiuse nei delimitatori ${...}. Ad esempio, "values": "zyx987wvu654tsu321".

      È possibile specificare fino a 10 valori. Se si specificano più valori, il gateway API aggiunge un'intestazione per ogni valore.

    • "ifExists": "<OVERWRITE|APPEND|SKIP>" indica cosa fare con il valore esistente dell'intestazione se l'intestazione specificata da <header-name> esiste già:

      • Utilizzare OVERWRITE per sostituire il valore esistente dell'intestazione con il valore specificato.
      • Utilizzare APPEND per aggiungere il valore specificato al valore esistente dell'intestazione.
      • Utilizzare SKIP per mantenere il valore esistente dell'intestazione.

      Se non specificato, l'impostazione predefinita è OVERWRITE.

    È possibile aggiungere o modificare i valori di un massimo di 20 intestazioni in un criterio di risposta alla trasformazione dell'intestazione setHeaders.

    Ad esempio:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations": {
              "setHeaders": {
                "items": [
                  {
                    "name": "X-Api-Key",
                    "values": ["zyx987wvu654tsu321"],
                    "ifExists": "OVERWRITE"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    In questo esempio, il gateway API aggiunge l'intestazione X-Api-Key:zyx987wvu654tsu321 a tutte le risposte in uscita. Se per una risposta in uscita è già impostata un'intestazione X-Api-Key su un valore diverso, il gateway API sostituisce il valore esistente con zyx987wvu654tsu321.

  7. Salvare il file JSON contenente la specifica di distribuzione API.
  8. 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'API di distribuzione 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.

  9. (Facoltativo) Confermare che l'interfaccia API è stata distribuita correttamente chiamandola (vedere Chiamata di un'interfaccia API distribuita su un gateway API).