Aggiunta di criteri richiesta di trasformazione intestazione
È possibile aggiungere criteri di richiesta di 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 dell'intestazione per trasformare determinate intestazioni di richiesta protette. Vedere Intestazioni richiesta protette e intestazioni risposta.
Utilizzo della console per aggiungere i criteri delle richieste di trasformazione delle intestazioni
Per aggiungere criteri di richiesta di trasformazione dell'intestazione a una specifica di distribuzione API utilizzando la console:
-
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.
-
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.
-
Selezionare Successivo per immettere i dettagli dei singoli instradamenti nella distribuzione API nella pagina Cicli.
- Nella pagina Cicli, selezionare l'instradamento per il quale si desidera specificare i criteri delle richieste di trasformazione dell'intestazione.
- Selezionare Mostra criteri di richiesta instradamenti.
- Selezionare il pulsante Aggiungi accanto a Trasformazioni intestazione per aggiornare le intestazioni incluse in una richiesta al gateway API per l'instradamento corrente.
-
Per limitare le intestazioni incluse in una richiesta, specificare:
- Azione: filtro.
- Tipo: Blocca per rimuovere dalla richiesta le intestazioni elencate in modo esplicito oppure Consenti di consentire solo nella richiesta le intestazioni elencate in modo esplicito (qualsiasi altra intestazione viene rimossa dalla richiesta).
-
Nomi intestazione: la lista delle intestazioni da rimuovere dalla richiesta o da consentire nella richiesta (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 richiesta di trasformazione per l'instradamento (ad eccezione degli elementi filtrati come consentito). Ad esempio,
User-Agent.
-
Per modificare il nome di un'intestazione inclusa in una richiesta (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 richiesta di 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 richiesta di trasformazione per l'instradamento (ad eccezione degli elementi filtrati come consentito). Ad esempio,
X-User-ID.
-
Per aggiungere una nuova intestazione a una richiesta (o per modificare o mantenere i valori di un'intestazione esistente già inclusa in una richiesta), 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 richiesta o modificare il valore di. Il nome specificato non fa distinzione tra maiuscole e minuscole (la maiuscola potrebbe essere ignorata) e non deve essere incluso in altri criteri di richiesta di 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). È possibile specificare più valori. Il valore specificato può essere una stringa semplice oppure può includere variabili di contesto (ad eccezione di
request.body) racchiuse nei delimitatori${...}. Ad esempio,"value": "zyx987wvu654tsu321","value": "${request.path[region]}","value": "${request.headers[opc-request-id]}".
- Selezionare Aggiorna.
- Selezionare Aggiorna, quindi Avanti per esaminare i dettagli immessi per i singoli instradamenti.
- Selezionare Crea o Aggiorna per creare o aggiornare la distribuzione API.
- (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 richiesta di trasformazione intestazione
Per aggiungere criteri di richiesta di trasformazione intestazione a una specifica di distribuzione API in un file JSON, effettuare le operazioni riportate di seguito.
-
Utilizzando l'editor JSON preferito, modificare la specifica di distribuzione API esistente a cui si desidera aggiungere criteri di richiesta di 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" } } ] } -
Inserire una sezione
requestPoliciesdopo la sezionebackendper l'instradamento a cui si desidera applicare il criterio della richiesta di trasformazione dell'intestazione. Ad esempio:{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": {} } ] } -
Aggiungere una sezione
headerTransformationsalla sezionerequestPolicies.{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": { "headerTransformations":{} } } ] } -
Per limitare le intestazioni incluse in una richiesta, specificare un criterio di richiesta di trasformazione dell'intestazione
filterHeaders:{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": { "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
BLOCKper rimuovere dalla richiesta le intestazioni elencate in modo esplicito. - Utilizzare
ALLOWper consentire nella richiesta solo le intestazioni elencate in modo esplicito (qualsiasi altra intestazione viene rimossa dalla richiesta).
- Utilizzare
-
"name":"<header-name>è un'intestazione da rimuovere dalla richiesta o da consentire nella richiesta (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 richiesta di trasformazione per l'instradamento (ad eccezione degli elementi negli elenchiALLOW). Ad esempio,User-Agent.
È possibile rimuovere e consentire fino a 50 intestazioni in un criterio di richiesta di trasformazione dell'intestazione
filterHeaders.Ad esempio:
{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": { "headerTransformations": { "filterHeaders": { "type": "BLOCK", "items": [ { "name": "User-Agent" } ] } } } } ] }In questo esempio, il gateway API rimuove l'intestazione
User-Agentda tutte le richieste in entrata. -
-
Per modificare il nome di un'intestazione inclusa in una richiesta (mantenendone il valore originale), specificare un criterio di richiesta di trasformazione dell'intestazione
renameHeaders:{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": { "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 richiesta di 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 richiesta di trasformazione per l'instradamento (ad eccezione degli elementi negli elenchiALLOW). Ad esempio,X-User-ID.
È possibile rinominare fino a 20 intestazioni in un criterio di richiesta di trasformazione dell'intestazione
renameHeaders.Ad esempio:
{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": { "headerTransformations": { "renameHeaders": { "items": [ { "from": "X-Username", "to": "X-User-ID" } ] } } } } ] }In questo esempio, il gateway API rinomina qualsiasi intestazione
X-UsernameinX-User-ID, mantenendo il valore originale dell'intestazione. -
-
Per aggiungere una nuova intestazione a una richiesta (o per modificare o mantenere i valori di un'intestazione esistente già inclusa in una richiesta), specificare un criterio di richiesta di trasformazione dell'intestazione
setHeaders:{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": { "headerTransformations": { "setHeaders": { "items": [ { "name": "<header-name>", "values": ["<header-value>"], "ifExists": "<OVERWRITE|APPEND|SKIP>" } ] } } } } ] }dove:
-
"name":"<header-name>è il nome dell'intestazione da aggiungere alla richiesta (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 richiesta di trasformazione per l'instradamento (ad eccezione degli elementi negli elenchiALLOW). 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 oppure può includere variabili di contesto (ad eccezione direquest.body) 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'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
OVERWRITEper sostituire il valore esistente dell'intestazione con il valore specificato. - Utilizzare
APPENDper aggiungere il valore specificato al valore esistente dell'intestazione. - Utilizzare
SKIPper mantenere il valore esistente dell'intestazione.
Se non specificato, l'impostazione predefinita è
OVERWRITE. - Utilizzare
È possibile aggiungere o modificare i valori di un massimo di 20 intestazioni in un criterio di richiesta di trasformazione dell'intestazione
setHeaders.Ad esempio:
{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": { "headerTransformations": { "setHeaders": { "items": [ { "name": "X-Api-Key", "values": ["zyx987wvu654tsu321"], "ifExists": "OVERWRITE" } ] } } } } ] }In questo esempio, il gateway API aggiunge l'intestazione
X-Api-Key:zyx987wvu654tsu321a tutte le richieste in entrata. Se per una richiesta in entrata è già impostata un'intestazioneX-Api-Keysu un valore diverso, il gateway API sostituisce il valore esistente conzyx987wvu654tsu321. -
- Salvare il file JSON contenente la specifica di distribuzione API.
-
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.
- (Facoltativo) Confermare che l'interfaccia API è stata distribuita correttamente chiamandola (vedere Chiamata di un'interfaccia API distribuita su un gateway API).