Adicionando Políticas de Solicitação de Transformação de Cabeçalho
Você pode adicionar políticas de solicitação da 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 solicitação protegidos. Consulte Cabeçalhos de Solicitação Protegidos e Cabeçalhos de Resposta.
Usando a Console para Adicionar Políticas de Solicitação de Transformação de Cabeçalho
Para adicionar políticas de solicitação de transformação do cabeçalho a uma especificação da implantação da API usando a Console:
-
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.
-
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.
-
Selecione Próximo para informar detalhes de rotas individuais na implantação de API na página Routes.
- Na página Rotas, selecione a rota para a qual você deseja especificar as políticas de solicitação de transformação de cabeçalho.
- Selecione Mostrar políticas de solicitação de rota.
- Selecione o botão Adicionar ao lado de Transformações de cabeçalho para atualizar os cabeçalhos incluídos em uma solicitação ao gateway da API para a rota atual.
-
Para limitar os cabeçalhos incluídos em uma solicitação, especifique:
- Ação: Filtrar.
- Tipo: Bloquear para remover da solicitação os cabeçalhos listados explicitamente ou Permitir para permitir na solicitação apenas os cabeçalhos listados explicitamente (quaisquer outros cabeçalhos são removidos da solicitação).
-
Nomes de cabeçalhos: A lista de cabeçalhos a serem removidas da solicitação ou que permitem a solicitação (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 solicitação de transformação para a rota (com exceção dos itens filtrados conforme permitido). Por exemplo,
User-Agent.
-
Para alterar o nome de um cabeçalho incluído em uma solicitação (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 solicitação 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 solicitação de transformação para a rota (com exceção dos itens filtrados conforme permitido). Por exemplo,
X-User-ID.
-
Para adicionar um novo cabeçalho a uma solicitação (ou para alterar ou manter os valores de um cabeçalho existente já incluído em uma solicitação), 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 solicitação (ou para alterar o valor de). 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 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 cabeçalho (ou o valor a ser substituído ou acrescentado ao valor de um cabeçalho existente, dependendo da definição de Comportamento). Você pode especificar vários valores. O valor especificado pode ser uma string simples ou pode incluir variáveis de contexto (exceto
request.body) entre delimitadores${...}. Por exemplo,"value": "zyx987wvu654tsu321","value": "${request.path[region]}","value": "${request.headers[opc-request-id]}".
- Selecione Atualizar.
- Selecione Atualizar e, em seguida, selecione Próximo para revisar os detalhes informados para rotas individuais.
- Selecione Criar ou Atualizar para criar ou atualizar a implantação de API.
- (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 Cabeçalho
Para adicionar políticas de solicitação de transformação de cabeçalho a uma especificação de implantação de API em um arquivo JSON:
-
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 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" } } ] } -
Insira uma seção
requestPoliciesapós a seçãobackendda rota à qual você deseja que a política de solicitação 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" }, "requestPolicies": {} } ] } -
Adicione uma seção
headerTransformationsà seçãorequestPolicies.{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": { "headerTransformations":{} } } ] } -
Para limitar os cabeçalhos incluídos em uma solicitação, especifique uma política de solicitação de transformação de cabeçalho
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>" } ] } } } } ] }em que:
-
"type": "<BLOCK|ALLOW>"indica o que fazer com os cabeçalhos especificados por"items":[{"name":"<header-name>"}]:- Use
BLOCKpara remover da solicitação os cabeçalhos listados explicitamente. - Use
ALLOWpara permitir na solicitação apenas os cabeçalhos listados explicitamente (quaisquer outros cabeçalhos serão removidos da solicitação).
- Use
-
"name":"<header-name>é um cabeçalho a ser removido da solicitação ou permitido na solicitação (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 solicitação de transformação para a rota (com exceção dos itens nas listasALLOW). Por exemplo,User-Agent.
Você pode remover e permitir até 50 cabeçalhos em uma política de solicitação 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" }, "requestPolicies": { "headerTransformations": { "filterHeaders": { "type": "BLOCK", "items": [ { "name": "User-Agent" } ] } } } } ] }Neste exemplo, o gateway da API remove o cabeçalho
User-Agentde todas as solicitações de entrada. -
-
Para alterar o nome de um cabeçalho incluído em uma solicitação (mantendo seu valor original), especifique uma política de solicitação de transformação de cabeçalho
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>" } ] } } } } ] }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 solicitação 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 solicitação de transformação para a rota (com exceção dos itens nas listasALLOW). Por exemplo,X-User-ID.
Você pode renomear até 20 cabeçalhos em uma política de solicitação 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" }, "requestPolicies": { "headerTransformations": { "renameHeaders": { "items": [ { "from": "X-Username", "to": "X-User-ID" } ] } } } } ] }Neste exemplo, o gateway da API renomeia qualquer cabeçalho
X-UsernamecomoX-User-ID, mantendo o valor original do cabeçalho. -
-
Para adicionar um novo cabeçalho a uma solicitação (ou para alterar ou manter os valores de um cabeçalho existente já incluído em uma solicitação), especifique uma política de solicitação de transformação de cabeçalho
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>" } ] } } } } ] }em que:
-
"name":"<header-name>é o nome do cabeçalho a ser adicionado à solicitação (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 solicitação de transformação para a rota (com exceção dos itens nas listasALLOW). 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 (excetorequest.body) 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 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
OVERWRITEpara substituir o valor existente do cabeçalho pelo valor especificado. - Use
APPENDpara adicionar o valor especificado ao valor existente do cabeçalho. - Use
SKIPpara manter o valor existente do cabeçalho.
Se não for especificado, o padrão será
OVERWRITE. - Use
Você pode adicionar (ou alterar os valores de) até 20 cabeçalhos em uma política de solicitação 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" }, "requestPolicies": { "headerTransformations": { "setHeaders": { "items": [ { "name": "X-Api-Key", "values": ["zyx987wvu654tsu321"], "ifExists": "OVERWRITE" } ] } } } } ] }Neste exemplo, o gateway da API adiciona o cabeçalho
X-Api-Key:zyx987wvu654tsu321a todas as solicitações de entrada. Se uma solicitação de entrada já tiver um cabeçalhoX-Api-Keydefinido com um valor distinto, o gateway da API substituirá o valor existente porzyx987wvu654tsu321. -
- Salve o arquivo JSON que contém a especificação de implantação de API.
-
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.
- (Opcional) Confirme se a API foi implantada com êxito, chamando-a (consulte Chamando uma API Implantada em um Gateway de API).