Agregación de políticas de solicitudes de transformación de parámetros de consulta

Puede agregar políticas de solicitud del cambio de parámetros de consulta a las especificaciones del despliegue del API mediante la consola o editando un archivo JSON.

Uso de la consola para agregar políticas de solicitudes de transformación de parámetros de consulta

Para agregar políticas de solicitud de transformación de parámetros de consulta a una especificación de despliegue del 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 las políticas de solicitud de transformación de parámetros de consulta.
  5. Seleccione Mostrar políticas de solicitud de ruta,
  6. Seleccione el botón Agregar junto a la opción Transformaciones de parámetros de consultas para actualizar los parámetros de consulta incluidos en una solicitud al gateway de API para la ruta actual.
  7. Para limitar los parámetros de consulta incluidos en una solicitud, especifique:

    • Acción: filtrar.
    • Tipo: Bloquear para eliminar de la solicitud los parámetros de consulta que muestra explícitamente o Permitir para permitir en la solicitud solo los parámetros de consulta que muestra explícitamente (cualquier otro parámetro de consulta se elimina de la solicitud).
    • Nombres de parámetros de consultas: lista de parámetros de consulta que se pueden eliminar de la solicitud o permitir en la solicitud (según el valor de Tipo). Los nombres que especifique 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 que filtra según lo permitido). Por ejemplo, User-Agent.
  8. Para cambiar el nombre de un parámetro de consulta incluido en una solicitud (manteniendo su valor original), especifique:

    • Acción: cambiar nombre.
    • Nombre del parámetro de consulta: nombre original del parámetro de consulta que va a cambiar el nombre. El nombre especificado 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.
    • Nombre del parámetro nueva de consulta: nombre nuevo del parámetro al que le va a cambiar el nombre. El nombre especificado es sensible a mayúsculas/minúsculas (se respetan 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 un nuevo parámetro de consulta a una solicitud (o para cambiar o retener los valores de un parámetro de consulta existente ya incluido en una solicitud), especifique:

    • Acción: definir.
    • Comportamiento: si el parámetro de consulta ya existe, especifique qué hacer con el valor existente del parámetro de consulta:

      • Sobrescribir para sustituir el valor existente del parámetro de consulta por el valor especificado.
      • Agregar para agregar el valor especificado al valor existente del parámetro de consulta.
      • Omitir para mantener el valor existente del parámetro de consulta.
    • Nombre de parámetro de consulta: nombre del parámetro de consulta que se van a agregar a la solicitud (o para cambiar el valor). El nombre especificado 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 que filtra según lo permitido). Por ejemplo, X-Api-Key.
    • Valores: valor del nuevo parámetro de consulta (o valor para sustituir o agregar al valor de un parámetro de consulta 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", "value": "${request.path[region]}", "value": "${request.headers[opc-request-id]}". 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 solicitud de transformación de parámetros de consulta

Para agregar políticas de solicitud de transformación de parámetros de consulta 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 solicitud de transformación de parámetros de consulta 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 básica de despliegue del API define una función sencilla sin servidor de Hello World 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 aplicar la política de solicitud de transformación de parámetros de consulta. 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 queryParameterTransformations a la sección requestPolicies.

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "requestPolicies": {
            "queryParameterTransformations":{}
          }
        }
      ]
    }
  4. Para limitar los parámetros de consulta incluidos en una solicitud, especifique una política de solicitud de transformación de parámetros de consulta filterQueryParameters:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "requestPolicies": {
            "queryParameterTransformations": {
              "filterQueryParameters": {
                "type": "<BLOCK|ALLOW>",
                "items": [
                  {
                    "name": "<query-parameter-name>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    donde:

    • "type": "<BLOCK|ALLOW>" indica qué hacer con los parámetros de consulta especificados por "items":[{"name":"<query-parameter-name>"}]:
      • Utilice BLOCK para eliminar de la solicitud los parámetros de consulta que muestra explícitamente.
      • Utilice ALLOW para permitir en la solicitud solo los parámetros de consulta que muestra explícitamente (cualquier otro parámetro de consulta se elimina de la solicitud).
    • "name":"<query-parameter-name> es un parámetro de consulta que se debe eliminar de la solicitud o permitir en la solicitud (según la configuración de "type": "<BLOCK|ALLOW>"). El nombre especificado 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 parámetros de consulta en una política de solicitud de transformación de parámetros de consulta filterQueryParameters.

    Por ejemplo:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "requestPolicies": {
            "queryParameterTransformations": {
              "filterQueryParameters": {
                "type": "BLOCK",
                "items": [
                  {
                    "name": "User-Agent"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    En este ejemplo, el gateway de API elimina el parámetro de consulta User-Agent de todas las solicitudes entrantes.

  5. Para cambiar el nombre de un parámetro de consulta incluido en una solicitud (manteniendo su valor original), especifique una política de solicitud de transformación de parámetros de consulta renameQueryParameters:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "requestPolicies": {
            "queryParameterTransformations": {
              "renameQueryParameters": {
                "items": [
                  {
                    "from": "<original-name>",
                    "to": "<new-name>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    donde:

    • "from": "<original-name>" es el nombre original del parámetro de consulta al que le va a cambiar el nombre. El nombre especificado 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 del parámetro de consulta al que le va a cambiar el nombre. El nombre especificado es sensible a mayúsculas/minúsculas (se respetan 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 parámetros de consulta en una política de solicitud de transformación de parámetros de consulta renameQueryParameters.

    Por ejemplo:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "requestPolicies": {
            "queryParameterTransformations": {
              "renameQueryParameters": {
                "items": [
                  {
                    "from": "X-Username",
                    "to": "X-User-ID"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    En este ejemplo, el gateway de API cambia el nombre de cualquier parámetro de consulta X-Username a X-User-ID, manteniendo al mismo tiempo el valor original del parámetro de consulta.

  6. Para agregar un nuevo parámetro de consulta a una solicitud (o para cambiar o retener los valores de un parámetro de consulta existente ya incluido en una solicitud), especifique una política de solicitud de transformación de parámetros de consulta setQueryParameters:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "requestPolicies": {
            "queryParameterTransformations": {
              "setQueryParameters": {
                "items": [
                  {
                    "name": "<query-parameter-name>",
                    "values": ["<query-parameter-value>"],
                    "ifExists": "<OVERWRITE|APPEND|SKIP>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    donde:

    • "name": "<query-parameter-name>" es el nombre del parámetro de consulta que se agregará a la solicitud (o para cambiar el valor). El nombre especificado 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": ["<query-parameter-value>"] es el valor del nuevo parámetro de consulta (o el valor que se va a sustituir o agregar al valor de un parámetro de consulta 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", "values": "${request.path[region]}", "values": "${request.headers[opc-request-id]}".

      Puede especificar hasta 10 valores. Si especifica varios valores, el gateway de API agrega un parámetro de consulta para cada valor.

    • "ifExists": "<OVERWRITE|APPEND|SKIP>" indica qué hacer con el valor existente del parámetro de consulta si el parámetro de consulta especificado por <query-parameter-name> ya existe:

      • Utilice OVERWRITE para sustituir el valor existente del parámetro de consulta por el valor especificado.
      • Utilice APPEND para agregar el valor especificado al valor existente del parámetro de consulta.
      • Utilice SKIP para mantener el valor existente del parámetro de consulta.

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

    Puede agregar hasta 20 parámetros de consulta (o cambiar sus valores) en una política de solicitud de transformación de parámetros de consulta setQueryParameters.

    Por ejemplo:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "requestPolicies": {
            "queryParameterTransformations": {
              "setQueryParameters": {
                "items": [
                  {
                    "name": "X-Api-Key",
                    "values": ["zyx987wvu654tsu321"],
                    "ifExists": "OVERWRITE"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    En este ejemplo, el gateway de API agrega el parámetro de consulta X-Api-Key:zyx987wvu654tsu321 a todas las solicitudes entrantes. Si una solicitud entrante ya tiene un parámetro de consulta X-Api-Key definido 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.