Adicionando Políticas de Solicitação de Transformação de Parâmetro de Consulta

Você pode adicionar políticas de solicitação da transformação do parâmetro da consulta às especificações da implantação de API usando a Console ou editando um arquivo JSON.

Usando a Console para Adicionar Políticas de Solicitação de Transformação de Parâmetro de Consulta

Para adicionar políticas de solicitação de transformação do parâmetro da consulta a uma especificação da implantação da API usando a Console:

  1. Crie ou atualize uma implantação de API usando a Console, selecione a opção Criar implantação e informe detalhes na página Informações Básicas.

    Para obter mais informações, consulte Implantando uma API em um Gateway da API Criando uma Implantação de API e Updating an API Gateway.

  2. Selecione Próximo e especifique as opções de autenticação na página Autenticação.

    Para obter mais informações sobre opções de autenticação, consulte Adicionando Autenticação e Autorização a Implantações de API.

  3. Selecione Próximo para informar detalhes de rotas individuais na implantação de API na página Routes.

  4. Na página Rotas, selecione a rota para a qual deseja especificar políticas de solicitação de transformação de parâmetro de consulta.
  5. Selecione Mostrar políticas de solicitação de rota.
  6. Selecione o botão Adicionar ao lado de Transformações de parâmetro de consulta para atualizar os parâmetros da consulta incluídos em uma solicitação para o gateway de API da rota atual.
  7. Para limitar os parâmetros de consulta incluídos em uma solicitação, especifique:

    • Ação: Filtrar.
    • Tipo: Bloquear para remover da solicitação os parâmetros de consulta listados explicitamente ou Permitir para permitir na solicitação apenas os parâmetros de consulta listados explicitamente (quaisquer outros parâmetros de consulta são removidos da solicitação).
    • Nomes de parâmetros da consulta: A lista de parâmetros da consulta para remover da solicitação ou permitir a solicitação (dependendo da definição de Tipo). Os nomes especificados diferenciam maiúsculas de minúsculas e não devem ser incluídos em nenhuma outra política de solicitação de transformação para a rota (com exceção dos itens filtrados conforme permitido). Por exemplo, User-Agent.
  8. Para alterar o nome de um parâmetro de consulta incluído em uma solicitação (mantendo seu valor original), especifique:

    • Ação: Renomear.
    • Nome do parâmetro de pesquisa: O nome original do parâmetro de pesquisa que você estiver renomeando. O nome especificado faz distinção entre maiúsculas e minúsculas e não deve ser incluído em nenhuma outra política de solicitação de transformação para a rota. Por exemplo, X-Username.
    • Novo nome do parâmetro da consulta: O novo nome do parâmetro da consulta que você estiver renomeando. O nome especificado faz distinção entre maiúsculas e minúsculas (a capitalização é respeitada) e não deve ser incluído em nenhuma outra política de solicitação de transformação para a rota (com exceção dos itens filtrados conforme permitido). Por exemplo, X-User-ID.
  9. Para adicionar um novo parâmetro de consulta a uma solicitação (ou para alterar ou manter os valores de um parâmetro de consulta existente já incluído em uma solicitação), especifique:

    • Ação: Definir.
    • Comportamento: Se o parâmetro de consulta já existir, especifique o que fazer com o valor existente do parâmetro de consulta:

      • Substituir, para substituir o valor existente do parâmetro de consulta pelo valor especificado.
      • Anexar, para acrescentar o valor especificado ao valor existente do parâmetro de consulta.
      • Ignorar, para manter o valor existente do parâmetro de consulta.
    • Nome do parâmetro de pesquisa: O nome do parâmetro de pesquisa a ser incluído na solicitação (ou para alterar o valor da). O nome especificado faz distinção entre maiúsculas e minúsculas e não deve ser incluído em nenhuma outra política de solicitação de transformação para a rota (com exceção dos itens filtrados conforme permitido). Por exemplo, X-Api-Key.
    • Valores: O valor do novo parâmetro de consulta (ou o valor a ser substituído ou acrescentado ao valor de um parâmetro de consulta existente, dependendo da definição de Comportamento). O valor especificado pode ser uma string simples ou pode incluir variáveis de contexto entre delimitadores ${...}. Por exemplo, "value": "zyx987wvu654tsu321", "value": "${request.path[region]}", "value": "${request.headers[opc-request-id]}". Você pode especificar vários valores.
  10. Selecione Atualizar.
  11. Selecione Atualizar e, em seguida, selecione Próximo para revisar os detalhes informados para rotas individuais.
  12. Selecione Criar ou Atualizar para criar ou atualizar a implantação de API.
  13. (Opcional) Confirme se a API foi implantada com êxito, chamando-a (consulte Chamando uma API Implantada em um Gateway de API).

Editando um Arquivo JSON para Adicionar Políticas de Solicitação de Transformação de Parâmetro de Consulta

Para adicionar políticas de solicitação de transformação de parâmetro de consulta a uma especificação de implantação de API em um arquivo JSON:

  1. Usando seu editor JSON preferido, edite a especificação de implantação de API existente à qual você deseja adicionar políticas de solicitação de transformação de parâmetro de consulta ou crie uma nova especificação de implantação de API (consulte Criando uma Especificação de Implantação de API).

    Por exemplo, a seguinte especificação de implantação básica da API define uma função simples sem servidor do Hello World nas Funções do OCI como um back-end único:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  2. Insira uma seção requestPolicies após a seção backend da rota à qual você deseja que a política de solicitação de transformação do parâmetro de consulta seja aplicada. Por exemplo:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "requestPolicies": {}
        }
      ]
    }
  3. Adicione uma seção queryParameterTransformations à seção requestPolicies.

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "requestPolicies": {
            "queryParameterTransformations":{}
          }
        }
      ]
    }
  4. Para limitar os parâmetros de consulta incluídos em uma solicitação, especifique uma política de solicitação de transformação 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>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    em que:

    • "type": "<BLOCK|ALLOW>" indica o que fazer com os parâmetros de consulta especificados por "items":[{"name":"<query-parameter-name>"}]:
      • Use BLOCK para remover da solicitação os parâmetros de consulta listados explicitamente.
      • Use ALLOW para permitir na solicitação apenas os parâmetros de consulta listados explicitamente (quaisquer outros parâmetros de consulta são removidos da solicitação).
    • "name":"<query-parameter-name> é um parâmetro de consulta a ser removido da solicitação ou permitido na solicitação (dependendo da definição de "type": "<BLOCK|ALLOW>"). O nome especificado faz distinção entre maiúsculas e minúsculas e não deve ser incluído em nenhuma outra política de solicitação de transformação para a rota (com exceção dos itens nas listas ALLOW). Por exemplo, User-Agent.

    Você pode remover e permitir até 50 parâmetros de consulta em uma política de solicitação de transformação de parâmetro de consulta filterQueryParameters.

    Por exemplo:

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

    Neste exemplo, o gateway da API remove o parâmetro de consulta User-Agent de todas as solicitações de entrada.

  5. Para alterar o nome de um parâmetro de consulta incluído em uma solicitação (mantendo seu valor original), especifique uma política de solicitação de transformação de parâmetro 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>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    em que:

    • "from": "<original-name>" é o nome original do parâmetro de consulta que você está renomeando. O nome especificado faz distinção entre maiúsculas e minúsculas e não deve ser incluído em nenhuma outra política de solicitação de transformação para a rota. Por exemplo, X-Username.
    • "to": "<new-name>" é o novo nome do parâmetro de consulta que você está renomeando. O nome especificado faz distinção entre maiúsculas e minúsculas (a capitalização é respeitada) e não deve ser incluído em nenhuma outra política de solicitação de transformação para a rota (com exceção dos itens nas listas ALLOW). Por exemplo, X-User-ID.

    Você pode renomear até 20 parâmetros de consulta em uma política de solicitação de transformação de parâmetro de consulta renameQueryParameters.

    Por exemplo:

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

    Neste exemplo, o gateway da API renomeia qualquer parâmetro de consulta X-Username como X-User-ID, mantendo o valor original do parâmetro de consulta.

  6. Para adicionar um novo parâmetro de consulta a uma solicitação (ou para alterar ou manter os valores de um parâmetro de consulta existente já incluído em uma solicitação), especifique uma política de solicitação de transformação de parâmetro 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>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    em que:

    • "name": "<query-parameter-name>" é o nome do parâmetro de consulta a ser adicionado à solicitação (ou para alterar o valor de). O nome especificado faz distinção entre maiúsculas e minúsculas e não deve ser incluído em nenhuma outra política de solicitação de transformação para a rota (com exceção dos itens nas listas ALLOW). Por exemplo, X-Api-Key.
    • "values": ["<query-parameter-value>"] é o valor do novo parâmetro de consulta (ou o valor a ser substituído ou anexado ao valor de um parâmetro de consulta existente, dependendo da definição de "ifExists": "<OVERWRITE|APPEND|SKIP>"). O valor especificado pode ser uma string simples ou pode incluir variáveis de contexto entre delimitadores ${...}. Por exemplo, "values": "zyx987wvu654tsu321", "values": "${request.path[region]}", "values": "${request.headers[opc-request-id]}".

      É possível especificar até 10 valores. Se você especificar vários valores, o gateway da API adicionará um parâmetro de consulta para cada valor.

    • "ifExists": "<OVERWRITE|APPEND|SKIP>" indica o que fazer com o valor existente do parâmetro de consulta se o parâmetro de consulta especificado por <query-parameter-name> já existir:

      • Use OVERWRITE para substituir o valor existente do parâmetro de consulta pelo valor especificado.
      • Use APPEND para acrescentar o valor especificado ao valor existente do parâmetro de consulta.
      • Use SKIP para manter o valor existente do parâmetro de consulta.

      Se não for especificado, o padrão será OVERWRITE.

    Você pode adicionar (ou alterar os valores de) até 20 parâmetros de consulta em uma política de solicitação de transformação de parâmetro de consulta setQueryParameters.

    Por exemplo:

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

    Neste exemplo, o gateway da API adiciona o parâmetro de consulta X-Api-Key:zyx987wvu654tsu321 a todas as solicitações de entrada. Se uma solicitação de entrada já tiver um parâmetro de consulta X-Api-Key definido com um valor distinto, o gateway da API substituirá o valor existente por zyx987wvu654tsu321.

  7. Salve o arquivo JSON que contém a especificação de implantação de API.
  8. Use a especificação de implantação de API ao criar ou atualizar uma implantação de API das seguintes formas:

    • especificando o arquivo JSON na Console quando você seleciona a opção Fazer Upload de uma API de implantação existente
    • especificando o arquivo JSON em uma solicitação à API REST do serviço API Gateway

    Para obter mais informações, consulte Implantando uma API em um Gateway da API Criando uma Implantação de API e Updating an API Gateway.

  9. (Opcional) Confirme se a API foi implantada com êxito, chamando-a (consulte Chamando uma API Implantada em um Gateway de API).