Agregación de políticas de respuesta de transformación de cabecera

Puede agregar políticas para la respuesta de transformación de cabecera a las especificaciones del despliegue del API mediante la consola o editando un archivo JSON.

Tenga en cuenta que no puede utilizar políticas de transformación de cabecera para transformar determinadas cabeceras de respuesta protegidas. Consulte Cabeceras de solicitud protegidas y cabeceras de respuesta.

Uso de la consola para agregar políticas de respuesta de transformación de cabecera

Para agregar políticas a una especificación del despliegue API mediante la consola:

  1. Cree o actualice un despliegue del API con la consola, seleccione la opción Crear despliegue e introduzca los detalles en la página Información básica.

    Para obtener más información, consulte Despliegue de una API en un gateway del API mediante el despliegue de un despliegue de API y Actualización de un gateway del API.

  2. Seleccione Siguiente y especifique las opciones de autenticación en la página Autenticación.

    Para obtener más información sobre las opciones de autenticación, consulte Agregación de autenticación y autorización a despliegues de API.

  3. Seleccione Siguiente para introducir detalles para rutas individuales en el despliegue del API en el página Rutas.

  4. En la página Rutas, seleccione la ruta para la que desea especificar políticas de respuesta de transformación de cabecera.
  5. Seleccione Mostrar Políticas de Respuesta de Ruta
  6. Seleccione el botón Agregar junto a la opción Transformaciones de cabecera para actualizar las cabeceras incluidas en una respuesta desde el gateway para la ruta actual.
  7. Para limitar las cabeceras incluidas en una respuesta, especifique:

    • Acción: filtrar.
    • Tipo: Bloquear para eliminar de la respuesta las cabeceras que muestra explícitamente o Permitir para permitir en la respuesta solo las cabeceras que muestra explícitamente (cualquier otra cabecera se elimina de la respuesta).
    • Nombre de cabecera: lista de cabeceras que se pueden eliminar de la respuesta o permitir en la respuesta (según la configuración del Tipo). Los nombres que especifique no son sensibles a mayúsculas/minúsculas y no se deben incluir en ninguna otra política de respuesta de transformación para la ruta (con la excepción de los elementos que filtra según lo permitido). Por ejemplo, User-Agent.
  8. Para cambiar el nombre de una cabecera incluida en una respuesta (manteniendo su valor original), especifique:

    • Acción: cambiar nombre.
    • Nombre de cabecera: el nombre original de la cabecera a la que va a cambiar de nombre. El nombre especificado no es sensible a mayúsculas/minúsculas y no se debe incluir en ninguna otra política de respuesta de transformación para la ruta. Por ejemplo, X-Username.
    • Nuevo nombre de cabecera: el nuevo nombre de la cabecera que le va a cambiar. El nombre especificado no es sensible a mayúsculas/minúsculas (se pueden ignorar las mayúsculas) y no se debe incluir en ninguna otra política de respuesta de transformación para la ruta (con la excepción de los elementos de las listas ALLOW). Por ejemplo, X-User-ID.
  9. Para agregar una nueva cabecera a una respuesta (o para cambiar o retener los valores de una cabecera existente ya incluida en una respuesta), especifique:

    • Acción: definir.
    • Comportamiento: si la cabecera ya existe, especifique qué hacer con el valor existente de la cabecera:

      • Sobrescribir para sustituir el valor existente de la cabecera por el valor especificado.
      • Agregar para agregar el valor especificado al valor existente de la cabecera.
      • Omitir para mantener el valor existente de la cabecera.
    • Nombre de cabecera: nombre de la cabecera que se van a agregar a la respuesta (o para cambiar el valor). El nombre que especifique no es sensible a mayúsculas/minúsculas y no se debe incluir en ninguna otra política de respuesta de transformación para la ruta (con la excepción de los elementos que filtra según lo permitido). Por ejemplo, X-Api-Key.
    • Valores: el valor de la nueva cabecera (o el valor que se va a sustituir o agregar al valor de una cabecera existente, según la configuración de Comportamiento). El valor que especifique puede ser una cadena simple o puede incluir variables de contexto entre delimitadores ${...}. Por ejemplo, "value": "zyx987wvu654tsu321". Puede especificar varios valores.
  10. Seleccione Actualizar.
  11. Seleccione Actualizar y, a continuación, seleccione Siguiente para revisar los detalles introducidos para rutas individuales.
  12. Seleccione Crear o Actualizar para crear o actualizar el despliegue de API.
  13. (Opcional) Confirme que la API se ha desplegado correctamente llamándola. Para ello, consulte Llamada a una API desplegada en un gateway de API.

Edición de un archivo JSON para agregar políticas de respuesta de transformación de cabecera

Para agregar políticas de respuesta de transformación de cabecera a una especificación de despliegue de API en un archivo JSON:

  1. Con su editor de JSON preferido, edite la especificación de despliegue de API existente a la que desea agregar una política de respuesta de transformación de cabecera o cree una nueva especificación de despliegue de API (consulte Creación de una especificación de despliegue de API).

    Por ejemplo, la siguiente especificación del despliegue básico del API define una función sencilla del Hello World sin servidor en OCI Functions como un único backend:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  2. Inserte una sección responsePolicies después de la sección backend para la ruta a la que desea que se aplique la política de respuesta de transformación de cabecera. Por ejemplo:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {}
        }
      ]
    }
  3. Agregue una sección headerTransformations a la sección responsePolicies.

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations":{}
          }
        }
      ]
    }
  4. Para limitar las cabeceras incluidas en una respuesta, especifique una política de respuesta de transformación de cabecera 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>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    donde:

    • "type": "<BLOCK|ALLOW>" indica qué hacer con las cabeceras especificadas por "items":[{"name":"<header-name>"}]:
      • Utilice BLOCK para eliminar de la respuesta las cabeceras que muestra explícitamente.
      • Utilice ALLOW para permitir solo en la respuesta las cabeceras que muestra explícitamente (cualquier otra cabecera se elimina de la respuesta).
    • "name":"<header-name> es una cabecera para eliminar de la respuesta o permitir en la respuesta (según la configuración de "type": "<BLOCK|ALLOW>"). El nombre especificado no es sensible a mayúsculas/minúsculas y no se debe incluir en ninguna otra política de respuesta de transformación para la ruta (con la excepción de los elementos de las listas ALLOW). Por ejemplo, User-Agent.

    Puede eliminar y permitir hasta 20 cabeceras en una política de respuesta de transformación de cabecera filterHeaders.

    Por ejemplo:

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

    En este ejemplo, el gateway de API elimina la cabecera User-Agent de todas las respuestas salientes.

  5. Para cambiar el nombre de una cabecera incluida en una respuesta (manteniendo su valor original), especifique una política de respuesta de transformación de cabecera 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>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    donde:

    • "from": "<original-name>" es el nombre original de la cabecera a la que va a cambiar de nombre. El nombre especificado no es sensible a mayúsculas/minúsculas y no se debe incluir en ninguna otra política de respuesta de transformación para la ruta. Por ejemplo, X-Username.
    • "to": "<new-name>" es el nuevo nombre de la cabecera a la que va a cambiar de nombre. El nombre especificado no es sensible a mayúsculas/minúsculas (se pueden ignorar las mayúsculas) y no se debe incluir en ninguna otra política de respuesta de transformación para la ruta (con la excepción de los elementos de las listas ALLOW). Por ejemplo, X-User-ID.

    Puede cambiar el nombre de hasta 20 cabeceras en una política de respuesta de transformación de cabecera renameHeaders.

    Por ejemplo:

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

    En este ejemplo, el gateway de API cambia el nombre de cualquier cabecera X-Username a X-User-ID, manteniendo el valor original de la cabecera.

  6. Para agregar una nueva cabecera a una respuesta (o para cambiar o retener los valores de una cabecera existente ya incluida en una respuesta), especifique una política de respuesta de transformación de cabecera 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>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    donde:

    • "name":"<header-name> es el nombre de la cabecera que se agregará a la respuesta (o para cambiar el valor). El nombre especificado no es sensible a mayúsculas/minúsculas y no se debe incluir en ninguna otra política de respuesta de transformación para la ruta (con la excepción de los elementos de las listas ALLOW). Por ejemplo, X-Api-Key.
    • "values": ["<header-value>"] es el valor de la nueva cabecera (o el valor que se va a sustituir o agregar al valor de una cabecera existente, según el valor "ifExists": "<OVERWRITE|APPEND|SKIP>"). El valor que especifique puede ser una cadena simple o puede incluir variables de contexto entre delimitadores ${...}. Por ejemplo, "values": "zyx987wvu654tsu321".

      Puede especificar hasta 10 valores. Si especifica varios valores, el gateway de API agrega una cabecera para cada valor.

    • "ifExists": "<OVERWRITE|APPEND|SKIP>" indica qué hacer con el valor existente de la cabecera si la cabecera especificada por <header-name> ya existe:

      • Utilice OVERWRITE para sustituir el valor existente de la cabecera por el valor especificado.
      • Utilice APPEND para agregar el valor especificado al valor existente de la cabecera.
      • Utilice SKIP para mantener el valor existente de la cabecera.

      Si no se especifica, el valor por defecto es OVERWRITE.

    Puede agregar (o cambiar los valores de) hasta 20 cabeceras en una política de respuesta de transformación de cabecera setHeaders.

    Por ejemplo:

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

    En este ejemplo, el gateway de API agrega la cabecera X-Api-Key:zyx987wvu654tsu321 a todas las respuestas salientes. Si una respuesta saliente ya tiene una cabecera X-Api-Key definida en un valor diferente, el gateway de API sustituye el valor existente por zyx987wvu654tsu321.

  7. Guarde el archivo JSON que contiene la especificación de despliegue de API.
  8. Utilice la especificación de despliegue de API al crear o actualizar un despliegue de API de las siguientes formas:

    • Especificando el archivo JSON en la consola al seleccionar la opción Cargar API de despliegue existente
    • Especificando el archivo JSON en una solicitud para la API REST de gateway de API.

    Para obtener más información, consulte Despliegue de una API en un gateway del API mediante el despliegue de un despliegue de API y Actualización de un gateway del API.

  9. (Opcional) Confirme que la API se ha desplegado correctamente llamándola. Para ello, consulte Llamada a una API desplegada en un gateway de API.