Adicionando Políticas de Resposta de Transformação de Cabeçalho

Você pode adicionar políticas de resposta à transformação do cabeçalho às especificações da implantação de API usando a Console ou editando um arquivo JSON.

Observe que você não pode usar políticas de transformação de cabeçalho para transformar determinados cabeçalhos de resposta protegidos. Consulte Cabeçalhos de Solicitação Protegidos e Cabeçalhos de Resposta.

Usando a Console para Adicionar Políticas de Resposta de Transformação de Cabeçalho

Para adicionar políticas de resposta da transformação do cabeçalho 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 você deseja especificar políticas de resposta de transformação de cabeçalho.
  5. Selecione Mostrar políticas de resposta da rota.
  6. Selecione o botão Adicionar ao lado de Transformações do cabeçalho para atualizar os cabeçalhos incluídos em uma resposta do gateway de API para a rota atual.
  7. Para limitar os cabeçalhos incluídos em uma resposta, especifique:

    • Ação: Filtrar.
    • Tipo: Bloquear para remover da resposta os cabeçalhos listados explicitamente ou Permitir para permitir na resposta apenas os cabeçalhos listados explicitamente (quaisquer outros cabeçalhos são removidos da resposta).
    • Nomes de cabeçalhos: A lista de cabeçalhos a serem removidas da resposta ou a permitir a resposta (dependendo da definição de Tipo). Os nomes especificados não diferenciam maiúsculas de minúsculas e não devem ser incluídos em nenhuma outra política de resposta 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 cabeçalho incluído em uma resposta (mantendo seu valor original), especifique:

    • Ação: Renomear.
    • Nome do cabeçalho: O nome original do cabeçalho que está sendo renomeado. O nome especificado não faz distinção entre maiúsculas e minúsculas e não deve ser incluído em nenhuma outra política de resposta de transformação para a rota. Por exemplo, X-Username.
    • Nome do novo cabeçalho: O novo nome do cabeçalho que você estiver renomeando. O nome especificado não faz distinção entre maiúsculas e minúsculas (a capitalização pode ser ignorada) e não deve ser incluído em nenhuma outra política de resposta de transformação para a rota (com exceção dos itens nas listas ALLOW). Por exemplo, X-User-ID.
  9. Para adicionar um novo cabeçalho a uma resposta (ou para alterar ou manter os valores de um cabeçalho existente já incluído em uma resposta), especifique:

    • Ação: Definir.
    • Comportamento: Se o cabeçalho já existir, especifique o que fazer com o valor existente do cabeçalho:

      • Substituir, para substituir o valor existente do cabeçalho pelo valor especificado.
      • Anexar, para anexar o valor especificado ao valor existente do cabeçalho.
      • Ignorar, para manter o valor existente do cabeçalho.
    • Nome do cabeçalho: O nome do cabeçalho a ser incluído na resposta (ou para alterar o valor do). O nome especificado não faz distinção entre maiúsculas e minúsculas e não deve ser incluído em nenhuma outra política de resposta de transformação para a rota (com exceção dos itens filtrados conforme permitido). Por exemplo, X-Api-Key.
    • Valores: O valor do novo cabeçalho (ou o valor a ser substituído ou acrescentado ao valor de um cabeçalho 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". 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 Resposta de Transformação de Cabeçalho

Para adicionar políticas de resposta de transformação de cabeçalho 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 resposta de transformação de cabeçalho 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 responsePolicies após a seção backend da rota à qual você deseja que a política de resposta de transformação de cabeçalho seja aplicada. Por exemplo:

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

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "responsePolicies": {
            "headerTransformations":{}
          }
        }
      ]
    }
  4. Para limitar os cabeçalhos incluídos em uma resposta, especifique uma política de resposta de transformação de cabeçalho 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>"
                  }
                ]
              }
            }
          }
        }
      ]
    }

    em que:

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

    Você pode remover e permitir até 20 cabeçalhos em uma política de resposta de transformação de cabeçalho filterHeaders.

    Por exemplo:

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

    Neste exemplo, o gateway da API remove o cabeçalho User-Agent de todas as respostas de saída.

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

    em que:

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

    Você pode renomear até 20 cabeçalhos em uma política de resposta de transformação de cabeçalho renameHeaders.

    Por exemplo:

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

    Neste exemplo, o gateway da API renomeia qualquer cabeçalho X-Username como X-User-ID, mantendo o valor original do cabeçalho.

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

    em que:

    • "name":"<header-name> é o nome do cabeçalho a ser adicionado à resposta (ou para alterar o valor de). O nome especificado não faz distinção entre maiúsculas e minúsculas e não deve ser incluído em nenhuma outra política de resposta de transformação para a rota (com exceção dos itens nas listas ALLOW). Por exemplo, X-Api-Key.
    • "values": ["<header-value>"] é o valor do novo cabeçalho (ou o valor a ser substituído ou acrescentado ao valor de um cabeçalho 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".

      É possível especificar até 10 valores. Se você especificar vários valores, o gateway da API adicionará um cabeçalho para cada valor.

    • "ifExists": "<OVERWRITE|APPEND|SKIP>" indica o que fazer com o valor existente do cabeçalho se o cabeçalho especificado por <header-name> já existir:

      • Use OVERWRITE para substituir o valor existente do cabeçalho pelo valor especificado.
      • Use APPEND para adicionar o valor especificado ao valor existente do cabeçalho.
      • Use SKIP para manter o valor existente do cabeçalho.

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

    Você pode adicionar (ou alterar os valores de) até 20 cabeçalhos em uma política de resposta de transformação de cabeçalho setHeaders.

    Por exemplo:

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

    Neste exemplo, o gateway da API adiciona o cabeçalho X-Api-Key:zyx987wvu654tsu321 a todas as respostas de saída. Se uma resposta de saída já tiver um cabeçalho 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).