Headertransformationsantwort-Policys hinzufügen

Sie können Headertransformationsantwort-Policys zu API-Deployment-Spezifikationen mit der Konsole oder durch Bearbeiten einer JSON-Datei hinzufügen.

Beachten Sie, dass Sie bestimmte geschützte Antwortheader nicht mit Headertransformations-Policys transformieren können. Siehe Header und Antwortheader für geschützte Anforderungen.

Headertransformationsantwort-Policys mit der Konsole hinzufügen

So fügen Sie Headertransformationsantwort-Policys zu einer API-Deployment-Spezifikation über die Konsole hinzu:

  1. 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.

  2. 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.

  3. Wählen Sie Weiter aus, um Details für einzelne Routen im API-Deployment auf der Seite Routen einzugeben.

  4. Wählen Sie auf der Seite Routen die Route aus, für die Sie Headertransformationsantwort-Policys angeben möchten.
  5. Wählen Sie Routenantwort-Policys anzeigen aus.
  6. Wählen Sie neben Headertransformationen die Schaltfläche Hinzufügen, um die Header zu aktualisieren, die in einer Antwort vom API-Gateway für die aktuelle Route enthalten sind.
  7. Um die in einer Antwort enthaltenen Header zu begrenzen, geben Sie Folgendes an:

    • Aktion: Filtern.
    • Typ: Entweder Blockieren, um die explizit aufgelisteten Header aus der Antwort zu entfernen, oder Zulassen, um nur die explizit aufgelisteten Header in der Antwort zuzulassen (alle anderen Header werden aus der Antwort entfernt).
    • Headernamen: Die Liste der Header, die aus der Antwort entfernt oder in der Antwort zugelassen werden sollen (je nach der Einstellung im Feld "Typ"). Bei den angegebenen Namen muss die Groß-/Kleinschreibung nicht beachtet werden. Außerdem dürfen sie nicht in anderen Transformationsantwort-Policys für die Route enthalten sein (mit Ausnahme der Elemente, die Sie als zugelassen filtern). Beispiel: User-Agent.
  8. Um den Namen eines Headers in einer Antwort (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 Transformationsantwort-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 Transformationsantwort-Policys für die Route enthalten sein (mit Ausnahme der Elemente in ALLOW-Listen). Beispiel: X-User-ID.
  9. Um einer Antwort einen neuen Header hinzuzufügen (oder die Werte eines vorhandenen Headers zu ändern oder beizubehalten, der bereits in einer Antwort 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 Antwort 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 Transformationsantwort-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). Der angegebene Wert kann eine einfache Zeichenfolge sein oder kontextabhängige Variablen enthalten, die in Begrenzungszeichen (${...}) eingeschlossen sind. Beispiel: "value": "zyx987wvu654tsu321". Sie können mehrere Werte angeben.
  10. Wählen Sie Aktualisieren aus.
  11. Wählen Sie Aktualisieren, Weiter aus, um die Details zu prüfen, die Sie für einzelne Routen eingegeben haben.
  12. Wählen Sie Erstellen oder Aktualisieren aus, um das API-Deployment zu erstellen oder aktualisiert zu werden.
  13. (Optional) Bestätigen Sie, dass die API erfolgreich bereitgestellt wurde, indem Sie sie aufrufen (siehe In einem API-Gateway bereitgestellte API aufrufen).

Headertransformationsantwort-Policys durch Bearbeiten einer JSON-Datei hinzufügen

So fügen Sie Headertransformationsantwort-Policys zu einer API-Deployment-Spezifikation in einer JSON-Datei hinzu:

  1. Bearbeiten Sie mit Ihrem bevorzugten JSON-Editor die vorhandene API-Deployment-Spezifikation, der Sie Headertransformationsantwort-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"
          }
        }
      ]
    }
  2. Fügen Sie einen responsePolicies-Abschnitt nach dem backend-Abschnitt für die Route ein, auf die die Headertransformationsantwort-Policy angewendet werden soll. Beispiel:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {}
        }
      ]
    }
  3. Fügen Sie dem Abschnitt responsePolicies einen headerTransformations-Abschnitt hinzu.

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations":{}
          }
        }
      ]
    }
  4. Um die Header in einer Antwort zu begrenzen, geben Sie eine Headertransformationsantwort-Policy vom Typ filterHeaders an:

    {
      "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>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    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 Antwort zu entfernen.
      • Verwenden Sie ALLOW, um in der Antwort nur die explizit aufgelisteten Header zuzulassen (alle anderen Header werden aus der Antwort entfernt).
    • "name":"<header-name> ist ein Header, der aus der Antwort 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 Transformationsantwort-Policys für die Route enthalten sein (mit Ausnahme der Elemente in ALLOW-Listen). Beispiel: User-Agent.

    Sie können bis zu 20 Header in einer Headertransformationsantwort-Policy vom Typ filterHeaders entfernen und zulassen.

    Beispiel:

    {
      "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 diesem Beispiel entfernt das API-Gateway den Header User-Agent aus allen ausgehenden Antworten.

  5. Um den Namen eines Headers in einer Antwort (unter Beibehaltung des ursprünglichen Wertes) zu ändern, geben Sie eine Headertransformationsantwort-Policy vom Typ renameHeaders an:

    {
      "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>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    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 Transformationsantwort-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 Transformationsantwort-Policys für die Route enthalten sein (mit Ausnahme der Elemente in ALLOW-Listen). Beispiel: X-User-ID.

    Sie können bis zu 20 Header in einer Headertransformationsantwort-Policy vom Typ renameHeaders umbenennen.

    Beispiel:

    {
      "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 diesem Beispiel benennt das API-Gateway alle X-Username-Header in X-User-ID um, wobei der ursprüngliche Wert des Headers beibehalten wird.

  6. Um einer Antwort einen neuen Header hinzuzufügen (oder die Werte eines vorhandenen Headers zu ändern oder beizubehalten, der bereits in einer Antwort enthalten ist), geben Sie eine Headertransformationsantwort-Policy vom Typ setHeaders an:

    {
      "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>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    Dabei gilt:

    • "name":"<header-name> ist der Name des Headers, der zur Antwort 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 Transformationsantwort-Policys für die Route enthalten sein (mit Ausnahme der Elemente in ALLOW-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. Beispiel: "values": "zyx987wvu654tsu321".

      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 OVERWRITE verwendet.

    Sie können bis zu 20 Header in einer Headertransformationsantwort-Policy vom Typ setHeaders hinzufü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"
          },
          "responsePolicies": {
            "headerTransformations": {
              "setHeaders": {
                "items": [
                  {
                    "name": "X-Api-Key",
                    "values": ["zyx987wvu654tsu321"],
                    "ifExists": "OVERWRITE"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    In diesem Beispiel fügt das API-Gateway allen ausgehenden Antworten den Header X-Api-Key:zyx987wvu654tsu321 hinzu. Wenn für eine ausgehende Antwort bereits ein X-Api-Key-Header auf einen anderen Wert gesetzt ist, ersetzt das API-Gateway den vorhandenen Wert durch zyx987wvu654tsu321.

  7. Speichern Sie die JSON-Datei, die die API-Deployment-Spezifikation enthält.
  8. 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.

  9. (Optional) Bestätigen Sie, dass die API erfolgreich bereitgestellt wurde, indem Sie sie aufrufen (siehe In einem API-Gateway bereitgestellte API aufrufen).