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

Puede agregar políticas para la solicitud 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 solicitud protegidas. Consulte Cabeceras de solicitud protegidas y cabeceras de respuesta.

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

Siga estos pasos para agregar políticas de solicitud de transformación de cabecera a una especificación del despliegue de API mediante la consola:

  1. Cree o actualice un despliegue en 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 las políticas de solicitud de transformación de cabecera.
  5. Seleccione Mostrar políticas de solicitud de ruta,
  6. Seleccione el botón Agregar junto a la opción Transformaciones de cabecera para actualizar las cabeceras incluidas en una solicitud al gateway del API para la ruta actual.
  7. Para limitar las cabeceras incluidas en una solicitud, especifique:

    • Acción: filtrar.
    • Tipo: Bloquear para eliminar de la solicitud las cabeceras que muestra explícitamente o Permitir que solo se permitan en la solicitud las cabeceras que muestra explícitamente (cualquier otra cabecera se elimina de la solicitud).
    • Nombre de cabecera: lista de cabeceras que se pueden eliminar de la solicitud o permitir en la solicitud (según la configuración de Tipo). Los nombres especificados no son sensibles a mayúsculas/minúsculas y no se deben incluir en ninguna otra política de solicitud de transformación para la ruta (con la excepción de los elementos filtrados según lo permitido). Por ejemplo, User-Agent.
  8. Para cambiar el nombre de una cabecera incluida en una solicitud (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 solicitud 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 solicitud de transformación para la ruta (con la excepción de los elementos que filtra según lo permitido). Por ejemplo, X-User-ID.
  9. Para agregar una nueva cabecera a una solicitud (o para cambiar o retener los valores de una cabecera existente ya incluida en una solicitud), 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: el nombre de la cabecera que se agregará a la solicitud (o para cambiar el valor). 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 solicitud 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). Puede especificar varios valores. El valor que especifique puede ser una cadena simple o puede incluir variables de contexto entre los delimitadores ${...} (excepto request.body). Por ejemplo, "value": "zyx987wvu654tsu321", "value": "${request.path[region]}", "value": "${request.headers[opc-request-id]}".
  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 solicitud de transformación de cabecera

Siga estos pasos para agregar políticas de solicitud de transformación de cabecera 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 solicitud 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 requestPolicies después de la sección backend para la ruta a la que desea que se aplique la política de solicitud de transformación de cabecera. Por ejemplo:

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

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

    donde:

    • "type": "<BLOCK|ALLOW>" indica qué hacer con las cabeceras especificadas por "items":[{"name":"<header-name>"}]:
      • Utilice BLOCK para eliminar de la solicitud las cabeceras que muestra explícitamente.
      • Utilice ALLOW para permitir solo en la solicitud las cabeceras que muestra explícitamente (cualquier otra cabecera se elimina de la solicitud).
    • "name":"<header-name> es una cabecera que se debe eliminar de la solicitud o permitir en la solicitud (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 solicitud 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 50 cabeceras en una política de solicitud 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"
          },
          "requestPolicies": {
            "headerTransformations": {
              "filterHeaders": {
                "type": "BLOCK",
                "items": [
                  {
                    "name": "User-Agent"
                  }
                ]
              }
            }
          }
        }
      ]
    }

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

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

    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 solicitud 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 solicitud 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 solicitud 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"
          },
          "requestPolicies": {
            "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 solicitud (o para cambiar o retener los valores de una cabecera existente ya incluida en una solicitud), especifique una política de solicitud de transformación de cabecera 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>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    donde:

    • "name":"<header-name> es el nombre de la cabecera que se agregará a la solicitud (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 solicitud 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 los delimitadores ${...} (excepto request.body). Por ejemplo, "values": "zyx987wvu654tsu321", "values": "${request.path[region]}", "values": "${request.headers[opc-request-id]}".

      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 solicitud 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"
          },
          "requestPolicies": {
            "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 solicitudes entrantes. Si una solicitud entrante 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.