Aggiunta dei criteri di richiesta di trasformazione dei parametri di query

È possibile aggiungere criteri di richiesta di trasformazione dei parametri di query alle specifiche di distribuzione API utilizzando la console o modificando un file JSON.

Utilizzo della console per aggiungere i criteri di richiesta di trasformazione dei parametri di query

Per aggiungere criteri di richiesta di trasformazione dei parametri di query 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 della richiesta di trasformazione dei parametri di query.
  5. Selezionare Mostra criteri di richiesta instradamenti.
  6. Selezionare il pulsante Aggiungi accanto alle trasformazioni dei parametri di query per aggiornare i parametri di query inclusi in una richiesta al gateway API per l'instradamento corrente.
  7. Per limitare i parametri di query inclusi in una richiesta, specificare:

    • Azione: filtro.
    • Tipo: Blocca per rimuovere dalla richiesta i parametri di query elencati in modo esplicito oppure Consenti di consentire solo nella richiesta i parametri di query elencati in modo esplicito (qualsiasi altro parametro di query viene rimosso dalla richiesta).
    • Nomi dei parametri di query: lista dei parametri di query da rimuovere dalla richiesta o da consentire nella richiesta (a seconda dell'impostazione di Tipo). I nomi specificati fanno distinzione tra maiuscole e minuscole e non devono essere inclusi in altri criteri di richiesta di trasformazione per l'instradamento (ad eccezione degli elementi filtrati come consentito). Ad esempio, User-Agent.
  8. Per modificare il nome di un parametro di query incluso in una richiesta (mantenendone il valore originale), specificare:

    • Azione: rinominare.
    • Nome parametro query: il nome originale del parametro di query che si sta rinominando. Il nome specificato fa distinzione tra maiuscole e minuscole e non deve essere incluso in altri criteri di richiesta di trasformazione per l'instradamento. Ad esempio, X-Username.
    • Nuovo nome del parametro di query: il nuovo nome del parametro di query che si sta rinominando. Il nome specificato fa distinzione tra maiuscole e minuscole (la capitalizzazione viene rispettata) e non deve essere incluso in altri criteri di richiesta di trasformazione per l'instradamento (ad eccezione degli elementi filtrati come consentiti). Ad esempio, X-User-ID.
  9. Per aggiungere un nuovo parametro di query a una richiesta (o per modificare o conservare i valori di un parametro di query esistente già incluso in una richiesta), specificare:

    • Azione: impostare.
    • Funzionamento: se il parametro di query esiste già, specificare le azioni da eseguire con il valore esistente del parametro di query.

      • Sovrascrivi, per sostituire il valore esistente del parametro di query con il valore specificato.
      • Aggiungi per aggiungere il valore specificato al valore esistente del parametro di query.
      • Ignora per mantenere il valore esistente del parametro di query.
    • Nome parametro query: il nome del parametro di query da aggiungere alla richiesta o modificare il valore di. Il nome specificato fa distinzione tra maiuscole e minuscole e non deve essere incluso in altri criteri di richiesta di trasformazione per l'instradamento (ad eccezione degli elementi filtrati come consentiti). Ad esempio, X-Api-Key.
    • Valori: il valore del nuovo parametro di query (o il valore da sostituire o aggiungere al valore di un parametro di query 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", "value": "${request.path[region]}", "value": "${request.headers[opc-request-id]}". È 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 i criteri di richiesta di trasformazione dei parametri di query

Per aggiungere criteri di richiesta di trasformazione dei parametri di query 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 a cui si desidera aggiungere criteri di richiesta di trasformazione dei parametri di query 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 requestPolicies dopo la sezione backend per l'instradamento a cui si desidera applicare il criterio di richiesta di trasformazione dei parametri di query. Ad esempio:

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

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "requestPolicies": {
            "queryParameterTransformations":{}
          }
        }
      ]
    }
  4. Per limitare i parametri di query inclusi in una richiesta, specificare un criterio di richiesta di trasformazione dei parametri di query filterQueryParameters:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "requestPolicies": {
            "queryParameterTransformations": {
              "filterQueryParameters": {
                "type": "<BLOCK|ALLOW>",
                "items": [
                  {
                    "name": "<query-parameter-name>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    dove:

    • "type": "<BLOCK|ALLOW>" indica le azioni da eseguire con i parametri di query specificati da "items":[{"name":"<query-parameter-name>"}]:
      • Utilizzare BLOCK per rimuovere dalla richiesta i parametri di query elencati in modo esplicito.
      • Utilizzare ALLOW per consentire nella richiesta solo i parametri di query elencati in modo esplicito (qualsiasi altro parametro di query viene rimosso dalla richiesta).
    • "name":"<query-parameter-name> è un parametro di query da rimuovere dalla richiesta o consentire nella richiesta (a seconda dell'impostazione di "type": "<BLOCK|ALLOW>"). Il nome specificato fa distinzione tra maiuscole e minuscole e non deve essere incluso in altri criteri di richiesta di trasformazione per l'instradamento (ad eccezione degli elementi negli elenchi ALLOW). Ad esempio, User-Agent.

    È possibile rimuovere e consentire fino a 50 parametri di query in un criterio di richiesta di trasformazione dei parametri di query filterQueryParameters.

    Ad esempio:

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

    In questo esempio, il gateway API rimuove il parametro di query User-Agent da tutte le richieste in entrata.

  5. Per modificare il nome di un parametro di query incluso in una richiesta (mantenendone il valore originale), specificare un criterio di richiesta di trasformazione del parametro di query renameQueryParameters:

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

    dove:

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

    È possibile rinominare fino a 20 parametri di query in un criterio di richiesta di trasformazione dei parametri di query renameQueryParameters.

    Ad esempio:

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

    In questo esempio, il gateway API rinomina qualsiasi parametro di query X-Username in X-User-ID, mantenendo il valore originale del parametro di query.

  6. Per aggiungere un nuovo parametro di query a una richiesta (o per modificare o conservare i valori di un parametro di query esistente già incluso in una richiesta), specificare un criterio di richiesta di trasformazione del parametro di query setQueryParameters:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "requestPolicies": {
            "queryParameterTransformations": {
              "setQueryParameters": {
                "items": [
                  {
                    "name": "<query-parameter-name>",
                    "values": ["<query-parameter-value>"],
                    "ifExists": "<OVERWRITE|APPEND|SKIP>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    dove:

    • "name": "<query-parameter-name>" è il nome del parametro di query da aggiungere alla richiesta (o per modificare il valore di). Il nome specificato fa distinzione tra maiuscole e minuscole e non deve essere incluso in altri criteri di richiesta di trasformazione per l'instradamento (ad eccezione degli elementi negli elenchi ALLOW). Ad esempio, X-Api-Key.
    • "values": ["<query-parameter-value>"] è il valore del nuovo parametro di query (o il valore da sostituire o aggiungere al valore di un parametro di query 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", "values": "${request.path[region]}", "values": "${request.headers[opc-request-id]}".

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

    • "ifExists": "<OVERWRITE|APPEND|SKIP>" indica le azioni da eseguire con il valore esistente del parametro di query se il parametro di query specificato da <query-parameter-name> esiste già:

      • Utilizzare OVERWRITE per sostituire il valore esistente del parametro di query con il valore specificato.
      • Utilizzare APPEND per aggiungere il valore specificato al valore esistente del parametro di query.
      • Utilizzare SKIP per mantenere il valore esistente del parametro di query.

      Se non specificato, l'impostazione predefinita è OVERWRITE.

    È possibile aggiungere o modificare i valori di un massimo di 20 parametri di query in un criterio di richiesta di trasformazione dei parametri di query setQueryParameters.

    Ad esempio:

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

    In questo esempio, il gateway API aggiunge il parametro di query X-Api-Key:zyx987wvu654tsu321 a tutte le richieste in entrata. Se per una richiesta in entrata è già impostato un parametro di query 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).