Headertransformationsanforderungs-Policys hinzufügen
Sie können Headertransformationsanforderungs-Policys zu API-Deployment-Spezifikationen mit der Konsole oder durch Bearbeiten einer JSON-Datei hinzufügen.
Beachten Sie, dass Sie bestimmte geschützte Anforderungsheader nicht mit Headertransformations-Policys transformieren können. Siehe Header und Antwortheader für geschützte Anforderungen.
Headertransformationsanforderungs-Policys mit der Konsole hinzufügen
So fügen Sie Headertransformationsanforderungs-Policys zu einer API-Deployment-Spezifikation über die Konsole hinzu:
-
Erstellung oder Aktualisierung eines API-Deployments mit der Konsole, wählen Sie die Option Deployment erstellen aus, und geben Sie auf der Seite Basisinformationen Details ein.
Weitere Informationen finden Sie unter API durch das Erstellen eines API-Deployments in einem API-Gateway implementieren und API-Gateways aktualisieren.
-
Wählen Sie Weiter, und geben Sie Authentifizierungsoptionen auf der Seite Authentifizierung an.
Weitere Informationen zu Authentifizierungsoptionen finden Sie unter Authentifizierung und Autorisierung zu API-Deployments hinzufügen.
-
Wählen Sie Weiter aus, um Details für einzelne Routen im API-Deployment auf der Seite Routen einzugeben.
- Wählen Sie auf der Seite Routen die Route aus, für die Sie Headertransformationsanforderungs-Policys angeben möchten.
- Wählen Sie Routenanforderungs-Policys anzeigen aus.
- Wählen Sie neben Headertransformationen die Schaltfläche Hinzufügen, um die Header zu aktualisieren, die in einer Anforderung an das API-Gateway für die aktuelle Route enthalten sind.
-
Um die in einer Anforderung enthaltenen Header zu begrenzen, geben Sie Folgendes an:
- Aktion: Filtern.
- Typ: Entweder Blockieren, um die explizit aufgelisteten Header aus der Anforderung zu entfernen, oder Zulassen, um nur die explizit aufgelisteten Header in der Anforderung zuzulassen (alle anderen Header werden aus der Anforderung entfernt).
-
Headernamen: Die Liste der Header, die aus der Anforderung entfernt werden sollen oder in der Anforderung zugelassen wird (je nach der Einstellung Typ). Bei den angegebenen Namen muss die Groß-/Kleinschreibung nicht beachtet werden. Außerdem dürfen sie nicht in anderen Transformationsanforderungs-Policys für die Route enthalten sein (mit Ausnahme der Elemente, die Sie als zugelassen filtern). Beispiel:
User-Agent.
-
Um den Namen eines Headers in einer Anforderung (unter Beibehaltung des ursprünglichen Wertes) zu ändern, geben Sie Folgendes an:
- Aktion: Umbenennen.
-
Headername: Der ursprüngliche Name des Headers, den Sie umbenennen möchten. Bei dem angegebenen Namen muss die Groß-/Kleinschreibung nicht beachtet werden. Außerdem darf er nicht in anderen Transformationsanforderungs-Policys für die Route enthalten sein. Beispiel:
X-Username. -
Neuer Headername: Der neue Name des Headers, den Sie umbenennen möchten. Bei dem angegebenen Namen muss die Groß-/Kleinschreibung nicht beachtet werden. Außerdem darf er nicht in anderen Transformationsanforderungs-Policys für die Route enthalten sein (mit Ausnahme der Elemente, die Sie als zugelassen filtern). Beispiel:
X-User-ID.
-
Um einer Anforderung einen neuen Header hinzuzufügen (oder die Werte eines vorhandenen Headers zu ändern oder beizubehalten, der bereits in einer Anforderung enthalten ist), geben Sie Folgendes an:
- Aktion: Festlegen.
-
Verhalten: Wenn der Header bereits vorhanden ist, geben Sie an, was Sie mit dem vorhandenen Wert des Headers tun möchten:
- Überschreiben, um den vorhandenen Wert des Headers durch den angegebenen Wert zu ersetzen.
- Anhängen, um den angegebenen Wert an den vorhandenen Wert des Headers anzuhängen.
- Überspringen, um den vorhandenen Wert des Headers beizubehalten.
-
Headername: Der Name des Headers, der zur Anforderung hinzugefügt (oder dessen Wert geändert) werden soll. Bei dem angegebenen Namen muss die Groß-/Kleinschreibung nicht beachtet werden. Außerdem darf er nicht in anderen Transformationsanforderungs-Policys für die Route enthalten sein (mit Ausnahme der Elemente, die Sie als zugelassen filtern). Beispiel:
X-Api-Key. -
Werte: Der Wert des neuen Headers (oder der Wert, der den Wert eines vorhandenen Headers ersetzen oder daran angehängt werden soll, je nach der Einstellung im Feld Verhalten). Sie können mehrere Werte angeben. Der angegebene Wert kann eine einfache Zeichenfolge sein oder kontextabhängige Variablen enthalten, die in Begrenzungszeichen (
${...}) eingeschlossen sind (außerrequest.body). Beispiel:"value": "zyx987wvu654tsu321","value": "${request.path[region]}","value": "${request.headers[opc-request-id]}".
- Wählen Sie Aktualisieren aus.
- Wählen Sie Aktualisieren, Weiter aus, um die Details zu prüfen, die Sie für einzelne Routen eingegeben haben.
- Wählen Sie Erstellen oder Aktualisieren aus, um das API-Deployment zu erstellen oder aktualisiert zu werden.
- (Optional) Bestätigen Sie, dass die API erfolgreich bereitgestellt wurde, indem Sie sie aufrufen (siehe In einem API-Gateway bereitgestellte API aufrufen).
Headertransformationsanforderungs-Policys durch Bearbeiten einer JSON-Datei hinzufügen
So fügen Sie Headertransformationsanforderungs-Policys zu einer API-Deployment-Spezifikation in einer JSON-Datei hinzu:
-
Bearbeiten Sie mit Ihrem bevorzugten JSON-Editor die vorhandene API-Deployment-Spezifikation, der Sie Headertransformationsanforderungs-Policys hinzufügen möchten, oder erstellen Sie eine neue API-Deployment-Spezifikation (siehe API-Deployment-Spezifikation erstellen).
Beispiel: Die folgende grundlegende API-Deployment-Spezifikation definiert eine einfache serverlose Hello World-Funktion in OCI Functions als einzelnes Backend:
{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] } -
Fügen Sie einen
requestPolicies-Abschnitt nach dembackend-Abschnitt für die Route ein, auf die die Headertransformationsanforderungs-Policy angewendet werden soll. Beispiel:{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": {} } ] } -
Fügen Sie dem Abschnitt
requestPolicieseinenheaderTransformations-Abschnitt hinzu.{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": { "headerTransformations":{} } } ] } -
Um die Header in einer Anforderung zu begrenzen, geben Sie eine Headertransformationsanforderungs-Policy vom Typ
filterHeadersan:{ "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>" } ] } } } } ] }Dabei gilt:
-
"type": "<BLOCK|ALLOW>"gibt an, was mit den von"items":[{"name":"<header-name>"}]angegebenen Headern geschehen soll:- Verwenden Sie
BLOCK, um die explizit aufgelisteten Header aus der Anforderung zu entfernen. - Verwenden Sie
ALLOW, um in der Anforderung nur die explizit aufgelisteten Header zuzulassen (alle anderen Header werden aus der Anforderung entfernt).
- Verwenden Sie
-
"name":"<header-name>ist ein Header, der aus der Anforderung entfernt oder in ihr zugelassen werden soll (je nach der Einstellung unter"type": "<BLOCK|ALLOW>"). Bei dem angegebenen Namen muss die Groß-/Kleinschreibung nicht beachtet werden. Außerdem darf er nicht in anderen Transformationsanforderungs-Policys für die Route enthalten sein (mit Ausnahme der Elemente inALLOW-Listen). Beispiel:User-Agent.
Sie können bis zu 50 Header in einer Headertransformationsanforderungs-Policy vom Typ
filterHeadersentfernen und zulassen.Beispiel:
{ "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 diesem Beispiel entfernt das API-Gateway den Header
User-Agentaus allen eingehenden Anforderungen. -
-
Um den Namen eines Headers in einer Anforderung (unter Beibehaltung des ursprünglichen Wertes) zu ändern, geben Sie eine Headertransformationsanforderungs-Policy vom Typ
renameHeadersan:{ "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>" } ] } } } } ] }Dabei gilt:
-
"from": "<original-name>"ist der ursprüngliche Name des Headers, den Sie umbenennen möchten. Bei dem angegebenen Namen muss die Groß-/Kleinschreibung nicht beachtet werden. Außerdem darf er nicht in anderen Transformationsanforderungs-Policys für die Route enthalten sein. Beispiel:X-Username. -
"to": "<new-name>"ist der neue Name des Headers, den Sie umbenennen möchten. Bei dem angegebenen Namen muss die Groß-/Kleinschreibung nicht beachtet werden. Außerdem darf er nicht in anderen Transformationsanforderungs-Policys für die Route enthalten sein (mit Ausnahme der Elemente inALLOW-Listen). Beispiel:X-User-ID.
Sie können bis zu 20 Header in einer Headertransformationsanforderungs-Policy vom Typ
renameHeadersumbenennen.Beispiel:
{ "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 diesem Beispiel benennt das API-Gateway alle
X-Username-Header inX-User-IDum, wobei der ursprüngliche Wert des Headers beibehalten wird. -
-
Um einer Anforderung einen neuen Header hinzuzufügen (oder die Werte eines vorhandenen Headers zu ändern oder beizubehalten, der bereits in einer Anforderung enthalten ist), geben Sie eine Headertransformationsanforderungs-Policy vom Typ
setHeadersan:{ "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>" } ] } } } } ] }Dabei gilt:
-
"name":"<header-name>ist der Name des Headers, der zur Anforderung hinzugefügt (oder dessen Wert geändert) werden soll. Bei dem angegebenen Namen muss die Groß-/Kleinschreibung nicht beachtet werden. Außerdem darf er nicht in anderen Transformationsanforderungs-Policys für die Route enthalten sein (mit Ausnahme der Elemente inALLOW-Listen). Beispiel:X-Api-Key. -
"values": ["<header-value>"]ist der Wert des neuen Headers (oder der Wert, der den Wert eines vorhandenen Headers ersetzen oder daran angehängt werden soll, je nach der Einstellung im Feld"ifExists": "<OVERWRITE|APPEND|SKIP>"). Der angegebene Wert kann eine einfache Zeichenfolge sein oder kontextabhängige Variablen enthalten, die in Begrenzungszeichen (${...}) eingeschlossen sind (außerrequest.body). Beispiel:"values": "zyx987wvu654tsu321","values": "${request.path[region]}","values": "${request.headers[opc-request-id]}".Sie können bis zu 10 Werte angeben. Wenn Sie mehrere Werte angeben, fügt das API-Gateway einen Header für jeden Wert hinzu.
-
"ifExists": "<OVERWRITE|APPEND|SKIP>"gibt an, was mit dem vorhandenen Wert des Headers geschehen soll, wenn der von<header-name>angegebene Header bereits vorhanden ist:- Verwenden Sie
OVERWRITE, um den vorhandenen Wert des Headers durch den angegebenen Wert zu ersetzen. - Verwenden Sie
APPEND, um den angegebenen Wert an den vorhandenen Wert des Headers anzuhängen. - Verwenden Sie
SKIP, um den vorhandenen Wert des Headers beizubehalten.
Wenn kein Wert angegeben ist, wird standardmäßig
OVERWRITEverwendet. - Verwenden Sie
Sie können bis zu 20 Header in einer Headertransformationsanforderungs-Policy vom Typ
setHeadershinzufügen (oder die Werte der Header ändern).Beispiel:
{ "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 diesem Beispiel fügt das API-Gateway allen eingehenden Anforderungen den Header
X-Api-Key:zyx987wvu654tsu321hinzu. Wenn für eine eingehende Anforderung bereits einX-Api-Key-Header auf einen anderen Wert gesetzt ist, ersetzt das API-Gateway den vorhandenen Wert durchzyx987wvu654tsu321. -
- Speichern Sie die JSON-Datei, die die API-Deployment-Spezifikation enthält.
-
Verwenden Sie die API-Deployment-Spezifikation, wenn Sie ein API-Deployment wie folgt erstellen oder aktualisieren:
- Durch Angabe der JSON-Datei in der Konsole bei Auswahl der Option Vorhandene API hochladen
- Durch Angabe der JSON-Datei in einer Anforderung an die REST-API von API-Gateway
Weitere Informationen finden Sie unter API durch das Erstellen eines API-Deployments in einem API-Gateway implementieren und API-Gateways aktualisieren.
- (Optional) Bestätigen Sie, dass die API erfolgreich bereitgestellt wurde, indem Sie sie aufrufen (siehe In einem API-Gateway bereitgestellte API aufrufen).