Armazenando Respostas no Cache para Melhorar o Desempenho

Descubra como usar a solicitação de armazenamento em cache de resposta e as políticas de resposta para reduzir o número de solicitações enviadas aos serviços de back-end com o API Gateway.

Normalmente, você evitará colocar carga desnecessária em serviços de back-end para melhorar o desempenho e reduzir custos. Uma maneira de reduzir essa carga é armazenar respostas em cache para solicitações, caso as respostas possam ser reutilizadas posteriormente. Se solicitações semelhantes forem recebidas, elas poderão ser atendidas recuperando dados de um cache de resposta em vez de enviar a solicitação ao serviço de back-end.

O serviço API Gateway pode se integrar a um servidor de cache externo ao qual você já tem acesso, como um servidor Redis ou KeyDB. Você pode configurar gateways de API gerenciados pelo serviço Gateway de API para:

  • Armazene dados no servidor de cache que foram retornados por um serviço de back-end em resposta a uma solicitação original.
  • Recupere dados armazenados anteriormente do servidor de cache em resposta a uma solicitação posterior semelhante à solicitação original, sem enviar a solicitação posterior ao serviço de back-end.

Para configurar um gateway de API para armazenamento no cache de resposta, você:

Você pode configurar o cache de resposta:

  • usando a Console
  • editando um arquivo JSON

Como Funciona o Cache de Resposta?

Quando você ativou um gateway de API para armazenamento no cache de resposta, o gateway de API analisa solicitações de clientes de API para rotas que têm políticas de armazenamento no cache de resposta. O gateway de API tenta corresponder uma nova solicitação com solicitações semelhantes anteriores para as quais as respostas já estão armazenadas no servidor de cache. O gateway de API armazena respostas no servidor de cache para solicitações GET, HEAD e OPTIONS, desde que as respostas tenham um código de status HTTP de 200, 204, 301 ou 410. Observe que o gateway de API usa as políticas de solicitação e resposta de cache de resposta que você configura e ignora qualquer cabeçalho de controle de cache (se presente) na solicitação ou na resposta.

Para identificar exclusivamente respostas no servidor de cache, o gateway de API usa chaves de cache derivadas das solicitações GET, HEAD e OPTIONS que provocaram as respostas. Por padrão, uma chave de cache compreende:

  • o URL da solicitação que gerou a resposta (excluindo quaisquer parâmetros de consulta no URL)
  • o método HTTP (um de GET, HEAD ou OPTIONS)
  • o OCID da implantação de API que recebeu a solicitação

Para fazer uma correspondência mais próxima das respostas armazenadas em cache com solicitações específicas, você pode opcionalmente personalizar chaves de cache adicionando os valores de uma ou mais variáveis de contexto da solicitação à chave de cache (consulte Observações sobre como Personalizar Chaves de Cache).

O que acontece a seguir depende se o gateway de API pode corresponder à nova solicitação GET, HEAD ou OPTIONS com uma resposta de uma solicitação semelhante anterior:

  • Se o gateway de API encontrar uma chave de cache correspondente no servidor de cache, o gateway de API recuperará os dados de resposta correspondentes do servidor de cache e os enviará para o cliente de API como resposta.
  • Se o gateway de API não encontrar uma chave de cache correspondente no servidor de cache, o gateway de API encaminhará a solicitação ao serviço de back-end. Quando o serviço de back-end retorna uma resposta, o gateway de API envia a resposta ao cliente de API e também armazena a resposta no servidor de cache com uma nova chave de cache.
O gateway de API adiciona um cabeçalho adicional às respostas às solicitações GET, HEAD e OPTIONS para rotas que têm políticas de armazenamento em cache de resposta. O cabeçalho de resposta adicional, X-Cache-Status, indica se a resposta foi recuperada do servidor de cache da seguinte forma:
  • X-Cache-Status: HIT indica que uma chave de cache correspondente foi encontrada no servidor de cache; portanto, a resposta foi recuperada do servidor de cache.
  • X-Cache-Status: MISS indica que nenhuma chave de cache correspondente foi encontrada no servidor de cache; portanto, a resposta veio do serviço de back-end.
  • X-Cache-Status: BYPASS indica que o servidor de cache não foi verificado; portanto, a resposta veio do serviço de back-end. Os motivos para não verificar o servidor de cache incluem problemas de comunicação com o servidor de cache e definições de configuração que impedem que respostas para solicitações específicas sejam recuperadas do servidor de cache.

Dica: Se você não quiser que as respostas contenham o cabeçalho X-Cache-Status adicional, use uma política de resposta de transformação de cabeçalho para removê-lo (consulte Adicionando Políticas de Resposta de Transformação de Cabeçalho).

Observações sobre Cache de Resposta e Segurança

Para garantir que os dados no servidor de cache sejam armazenados e acessados com segurança:

  • Você configura o gateway de API para autenticação no servidor de cache usando credenciais salvas como segredo em um vault no serviço Vault.
  • Você pode especificar se deseja configurar uma conexão segura por meio de TLS (anteriormente SSL) entre o gateway de API e um servidor de cache ativado para TLS e se deve verificar os certificados TLS. Observe que somente certificados assinados por autoridades de certificação públicas são verificados no momento.
  • Você pode especificar um tempo de expiração para garantir que os dados armazenados em cache não sejam armazenados por um período excessivamente longo e que os dados obsoletos não sejam retornados do servidor de cache em resposta a uma solicitação posterior.
  • Você pode limitar os URLs de solicitação que correspondem às chaves de cache personalizando as chaves de cache para incluir um ou mais parâmetros presentes nos URLs de solicitação (consulte Observações sobre como Personalizar Chaves de Cache).
  • Você pode especificar respostas de não cache para solicitações que incluem credenciais (consulte Observações sobre Respostas de Cache para Solicitações que Contêm Credenciais (Cache Privado)).

Observe que é sua responsabilidade garantir que o próprio servidor de cache esteja configurado corretamente para proteger os dados armazenados nele. Especificamente, a Oracle recomenda enfaticamente que você não reutilize um servidor de cache existente. Em vez disso, a Oracle recomenda que você configure um novo servidor de cache exclusivamente para armazenamento no cache de resposta do gateway de API e restrinja o acesso ao servidor de cache apenas para gateways de API.

Observações sobre Respostas de Armazenamento no Cache para Solicitações que Contêm Credenciais (Armazenamento no Cache Privado)

As solicitações podem incluir cabeçalhos de autorização que contenham as credenciais para autenticar um cliente de API com um serviço de back-end. As credenciais geralmente fornecem acesso a dados privados a um indivíduo ou organização. Por exemplo, um cabeçalho de autorização de solicitação contendo um token de autenticação pode ser usado para obter uma resposta contendo informações da conta bancária. A existência de cabeçalhos de autorização em uma solicitação é uma indicação de que a resposta pode ser de natureza sensível e somente para ser compartilhada com aqueles autorizados a vê-la.

Da mesma forma, se você tiver usado funções de autorizador para autenticação e autorização, uma política de autenticação identificará um cabeçalho ou parâmetro de consulta em uma solicitação que contém um token de acesso (consulte Passando Tokens para Funções de Autorizador para Adicionar Autenticação e Autorização a Implantações de API). A existência em uma solicitação do cabeçalho ou parâmetro de consulta identificado em uma política de autenticação também é uma indicação de que a resposta pode ser de natureza confidencial e só deve ser compartilhada com aqueles que podem vê-la.

O armazenamento em cache de respostas para solicitações que contêm cabeçalhos de autorização ou que contêm um cabeçalho ou parâmetro de consulta identificado em uma política de autenticação é chamado de "cache privado". Embora o armazenamento em cache privado possa acelerar as respostas a solicitações semelhantes no futuro, ele tem o potencial de comprometer a segurança dos dados. Portanto, para evitar violações de segurança, o armazenamento no cache privado é desativado por padrão. No entanto, rota a rota, você pode ativar o armazenamento em cache privado.

Se você decidir ativar o armazenamento em cache privado, recomendamos que você personalize a chave de cache para isolar respostas para que cada resposta seja retornada apenas para aqueles com permissão para vê-la. Por exemplo:

  • Adicione o valor do cabeçalho de autorização de solicitação ou o valor do cabeçalho ou parâmetro de consulta identificado em uma política de autenticação à chave de cache como uma variável de contexto de uma tabela de contexto.
  • Se você tiver usado funções de autorizador ou JWTs para autenticação e autorização, adicione o valor de uma variável de contexto que identifique o controlador de solicitações (como sub ou principalId) à chave de cache da tabela de contexto request.auth. Consulte Adicionando Autenticação e Autorização às Implantações de API.

Uma resposta em cache com um valor em sua chave de cache para uma variável de contexto só será retornada em resposta a uma solicitação que tenha um valor correspondente.

É sua responsabilidade especificar uma adição de chave de cache que forneça isolamento suficiente entre as respostas armazenadas em cache. Consulte Observações sobre a Personalização de Chaves de Cache.

Observações sobre a Personalização de Chaves de Cache

As respostas armazenadas no servidor de cache são identificadas exclusivamente por uma chave de cache. Por padrão, uma chave de cache é derivada do URL da solicitação que provocou a resposta (excluindo quaisquer variáveis de contexto presentes na solicitação), o método HTTP e o OCID da implantação de API. Para fazer uma correspondência mais próxima das respostas armazenadas em cache com solicitações específicas, você pode opcionalmente personalizar chaves de cache adicionando os valores de uma ou mais variáveis de contexto da solicitação à chave de cache. Se você decidir ativar o armazenamento em cache privado para solicitações que contenham cabeçalhos de autorização ou que contenham um cabeçalho ou parâmetro de consulta identificado em uma política de autenticação, recomendamos que você adicione seus valores como variáveis de contexto à chave de cache.

Para especificar os valores de variável de contexto a serem adicionados à chave de cache, use o formato <context-table-name>.[<key>], em que:

  • <context-table-name> é um entre request.query, request.headers ou request.auth
  • <key> é um dentre:
    • um nome de parâmetro de consulta incluído na solicitação à API
    • um nome de cabeçalho incluído na solicitação à API
    • um nome de parâmetro de autenticação retornado por uma função do autorizador ou contido em um token JWT
    • o campo de cabeçalho Host na solicitação à API

Por exemplo:

  • Para adicionar o valor da variável de contexto X-Username a uma chave de cache quando ela for incluída em um cabeçalho de solicitação, especifique request.headers[X-Username] como uma adição de chave de cache.
  • Para adicionar o controlador de solicitações (a pessoa ou o aplicativo que está enviando a solicitação) a uma chave de cache quando ela for incluída como reivindicação sub em um token JWT, especifique request.auth[sub] como uma adição de chave de cache.
  • Para adicionar o valor do cabeçalho Authorization a uma chave de cache, especifique request.headers[Authorization] como uma adição de chave de cache.
  • Para adicionar o valor de um token de acesso retornado por uma função de autorizador e contido em um cabeçalho chamado X-Custom-Auth a uma chave de cache, especifique request.headers[X-Custom-Auth] como uma adição de chave de cache.
  • Para adicionar o valor do campo de cabeçalho Host incluído na solicitação a uma chave de cache, especifique request.host.

Para obter mais informações sobre variáveis de contexto, consulte Adicionando Variáveis de Contexto a Políticas e Definições de Back-End de HTTP.

Pré-requisitos para o Armazenamento no Cache de Resposta

Para que você possa ativar o armazenamento em cache de resposta para um gateway de API:

  • Um servidor de cache que implementa o protocolo RESP (como Redis ou KeyDB) já deve ter sido configurado e deve estar disponível.
  • A sub-rede do gateway de API deve poder acessar o servidor de cache.
  • O servidor de cache deve ser hospedado em um único host de servidor de cache e não distribuído em várias instâncias de um cluster.
  • Você já deve ter armazenado as credenciais para autenticação no servidor de cache como segredo em um vault no serviço Vault (consulte Criando um Segredo em um Vault) e deve saber o OCID e o número da versão do segredo. Ao especificar o conteúdo do segredo, use o formato {"username":"<cache-server-username>", "password":"<cache-server-password>"}. Observe que a especificação de um nome de usuário é opcional. Por exemplo:
    {"password":"<cache-server-password>"}
  • Você já deve ter configurado uma política para conceder aos gateways de API em um grupo dinâmico permissão para acessar o segredo no serviço Vault que contém as credenciais para autenticação no servidor de cache (consulte Criar uma Política para Conceder aos Gateways de API Acesso às Credenciais Armazenadas como Segredos no Serviço Vault).

Ativando o Armazenamento em Cache de Resposta em um Gateway de API

Você pode ativar o armazenamento em cache de resposta em um gateway de API usando a Console ou editando um arquivo JSON.

Usando a Console para Ativar e Configurar o Cache de Resposta

Para ativar e configurar o armazenamento em cache de resposta para um gateway de API usando a Console:

  1. Crie ou atualize um gateway de API usando a Console.

    Para obter mais informações, consulte Criando um Gateway de API e Atualizando um Gateway de API.

  2. Na seção Opções Avançadas da caixa de diálogo Criar Gateway, selecione o botão Ativar ao lado de Armazenamento em Cache de Resposta e:

    1. Especifique as opções do Servidor de Cache, da seguinte forma:
      • Host: O nome do host do servidor de cache. Por exemplo, "cache.example.com".
      • Número da Porta: O número da porta no servidor de cache. Por exemplo, 6379.
    2. Especifique as opções de Credenciais do Servidor de Cache, da seguinte forma:
      • Vault: O nome do vault no serviço Vault que contém as credenciais para fazer log-in no servidor de cache.
      • Segredo do Vault: O nome do segredo no vault especificado que contém as credenciais para fazer log-in no servidor de cache.
      • Número da Versão do Segredo do Vault: A versão do segredo a ser usado.
    3. Especifique as opções de Conexão do Servidor de Cache, da seguinte forma:
      • Usar SSL/TLS em Solicitações: Se o servidor de cache está ativado para TLS e, portanto, se deve configurar uma conexão segura entre o gateway de API e o servidor de cache por TLS (anteriormente SSL).
      • Verificar Certificado SSL/TLS: Se o gateway de API verifica o certificado TLS (anteriormente SSL) do servidor de cache. Observe que somente certificados assinados por autoridades de certificação públicas são verificados no momento.
      • Timeout de Conexão: Quanto tempo de espera antes de abandonar uma tentativa de conexão com o servidor de cache, em milissegundos. Se o gateway de API não puder se conectar ao servidor de cache dentro desse período, o gateway de API não recuperará dados armazenados no cache anteriormente do servidor de cache e não gravará novos dados no servidor de cache para possível reutilização futura.
      • Timeout de Leitura: Quanto tempo de espera antes de abandonar uma tentativa de ler dados do servidor de cache, em milissegundos. Se o gateway de API não puder recuperar dados do servidor de cache dentro desse período, o gateway de API enviará uma solicitação ao serviço de back-end.
      • Timeout de Envio: Quanto tempo de espera antes de abandonar uma tentativa de gravar dados no servidor de cache, em milissegundos. Se o gateway de API não puder enviar dados para o servidor de cache dentro desse período, uma resposta não será armazenada em cache para reutilização futura potencial.
  3. Selecione Criar ou Salvar Alterações para criar ou atualizar o gateway de API.

Usando a CLI e um Arquivo JSON para Ativar e Configurar o Cache de Resposta

Para ativar e configurar o armazenamento em cache de resposta para um gateway de API usando a CLI e um arquivo JSON:

  1. Usando seu editor de JSON preferido, crie um arquivo de configuração de cache no formato:

    {
      "type" : "EXTERNAL_RESP_CACHE",
      "servers" : [
        {
          "host" : "<cache-server-hostname>",
          "port" : <port-number>
        }
      ],
      "authenticationSecretId" : "<secret-ocid>",
      "authenticationSecretVersionNumber" : <secret-version-number>,
      "isSSLEnabled" : <true|false>,
      "isSSLVerifyDisabled" : <true|false>,
      "connectTimeoutInMs" : <milliseconds>,
      "readTimeoutInMs" : <milliseconds>,
      "readTimeoutInMs" : <milliseconds>
    }
    em que:
    • "type" : "EXTERNAL_RESP_CACHE" indica que o armazenamento no cache de resposta deve ser ativado. Se não for definido, o padrão será "type" : "NONE", indicando que o armazenamento no cache de resposta está desativado.
    • "host" : "<cache-server-hostname>" é o nome do host do servidor de cache. Por exemplo, "host" : "cache.example.com".
    • "port" : <port-number> é o número da porta no servidor de cache. Por exemplo, "port" : 6379.
    • "authenticationSecretId" : "<secret-ocid>" é o OCID do segredo definido em um vault no serviço Vault que contém as credenciais para fazer log-in no servidor de cache. Por exemplo, "authenticationSecretId" : "ocid.oc1.sms.secret.aaaaaa______gbdn"
    • "authenticationSecretVersionNumber" : <secret-version-number> é a versão do segredo a ser usada. Por exemplo, "authenticationSecretVersionNumber" : 1
    • "isSSLEnabled" : <true|false> indica se o servidor de cache está ativado para TLS e, portanto, se deseja configurar uma conexão segura entre o gateway de API e o servidor de cache por meio de TLS (anteriormente SSL). Se não for definido, o padrão será false
    • "isSSLVerifyDisabled" : <true|false> indica se o gateway de API verifica o certificado TLS (anteriormente SSL) do servidor de cache. Observe que somente certificados assinados por autoridades de certificação públicas são verificados no momento. Se não for definido, o padrão será false
    • "connectTimeoutInMs" : <milliseconds> indica quanto tempo esperar antes de abandonar uma tentativa de conexão com o servidor de cache, em milissegundos. Se o gateway de API não puder estabelecer conexão com o servidor de cache dentro desse período, o gateway de API não recuperará dados armazenados no cache anteriormente do servidor de cache e não gravará novos dados no servidor de cache para potencial reutilização futura. Se não for definido, o padrão será 1000. Por exemplo, "connectTimeoutInMs" : 1500
    • "readTimeoutInMs" : <milliseconds> indica quanto tempo esperar antes de abandonar uma tentativa de ler dados do servidor de cache, em milissegundos. Se o gateway de API não puder recuperar dados do servidor de cache dentro desse período, o gateway de API enviará uma solicitação ao serviço de back-end. Se não for definido, o padrão será 1000. Por exemplo, "readTimeoutInMs" : 250
    • "sendTimeoutInMs" : <milliseconds> indica quanto tempo esperar antes de abandonar uma tentativa de gravar dados no servidor de cache, em milissegundos. Se o gateway de API não puder enviar dados para o servidor de cache dentro desse período, as respostas não serão armazenadas em cache para potencial reutilização futura. Se não for definido, o padrão será 1000. Por exemplo, "sendTimeoutInMs" : 1250

    Por exemplo:

    {
      "type" : "EXTERNAL_RESP_CACHE",
      "servers" : [
        {
          "host" : "cache.example.com",
          "port" : 6379
        }
      ],
      "authenticationSecretId" : "ocid.oc1.sms.secret.aaaaaa______gbdn",
      "authenticationSecretVersionNumber" : 1,
      "isSSLEnabled" : true,
      "isSSLVerifyDisabled" : false,
      "connectTimeoutInMs" : 1000,
      "readTimeoutInMs" : 250,
      "sendTimeoutInMs" : 1000
    }
  2. Salve o arquivo de configuração do cache com o nome de sua escolha. Por exemplo, resp-cache-config.json
  3. Use o arquivo de configuração do cache ao criar ou atualizar um gateway de API usando a CLI:
    • Para criar um novo gateway de API com cache de resposta ativado, siga as instruções da CLI em Criando um Gateway de API e defina o parâmetro --response-cache-details como o nome e o local do arquivo de configuração do cache. Por exemplo:
      oci api-gateway gateway create --display-name "Hello World Gateway" --compartment-id ocid1.compartment.oc1..aaaaaaaa7______ysq --endpoint-type "PRIVATE" --subnet-id ocid1.subnet.oc1.iad.aaaaaaaaz______rca --response-cache-details file:///etc/caches/resp-cache-config.json
    • Para atualizar um gateway de API existente para ativar o armazenamento em cache da resposta ou alterar as definições de armazenamento em cache da resposta, siga as instruções da CLI em Atualizando um Gateway de API e defina o parâmetro --response-cache-details com o nome e o local do arquivo de configuração do cache. Por exemplo:
      oci api-gateway gateway update --gateway-id ocid1.apigateway.oc1..aaaaaaaab______hga --response-cache-details file:///etc/caches/resp-cache-config.json

Adicionando Políticas de Resposta e Solicitação de Cache de Resposta

Você pode adicionar solicitação de armazenamento em cache de resposta e políticas de resposta às especificações de implantação da API usando a Console ou editando um arquivo JSON. Observe que você deve ativar o armazenamento em cache de resposta em um gateway de API para que as políticas de solicitação e resposta entrem em vigor.

Usando a Console para Adicionar Solicitação de Armazenamento em Cache de Resposta e Políticas de Resposta

Para adicionar solicitações de armazenamento em cache de resposta e políticas de resposta a uma especificação de implantação de API usando a Console:

  1. Crie ou atualize uma implantação de API usando a Console. Selecione a opção Totalmente Nova e insira os detalhes na página Informações Básicas.

    Para obter mais informações, consulte Implantando uma API em um Gateway de API por meio da Criação de uma Implantação de API e Atualizando um Gateway de API.

  2. Selecione Próximo para informar detalhes de rotas individuais na página Rotas e selecione Armazenamento em Cache de Resposta.

  3. Selecione a opção Armazenando em Cache para esta Rota e especifique as opções de armazenamento em cache de resposta que se aplicam a esta rota específica:
    • TTL (Tempo de Vida) para Respostas Armazenadas em Cache em Segundos: Por quanto tempo os dados armazenados em cache estão disponíveis no servidor de cache para essa rota específica.
    • Adições de Chave de Cache: Uma ou mais variáveis de contexto a serem adicionadas à chave de cache padrão para associar mais de perto uma resposta em cache a uma solicitação específica. Por exemplo, request.headers[X-Username]. Você pode selecionar em uma lista de variáveis de contexto comumente usadas ou inserir uma variável de contexto de sua escolha. Não preceda a variável de contexto com um símbolo $ ou coloque-a entre chaves (como faria se estivesse adicionando a variável de contexto a um URL em uma especificação de implantação de API em um arquivo JSON). Para obter mais informações, consulte Observações sobre a Personalização de Chaves de Cache.
  4. Se quiser armazenar em cache respostas para solicitações que contenham um cabeçalho de autorização, ou que contenham um cabeçalho ou parâmetro de consulta identificado em uma política de autenticação, selecione a opção Armazenar em Cache Respostas com Cabeçalhos de Autorização.

    Observe que o armazenamento em cache das respostas para essas solicitações pode comprometer a segurança dos dados. Para obter mais informações, consulte Observações sobre Respostas de Armazenamento no Cache para Solicitações que Contêm Credenciais (Armazenamento no Cache Privado).

  5. Selecione Próximo para revisar os detalhes informados para a implantação de API.
  6. Selecione Criar ou Salvar Alterações para criar ou atualizar a implantação de API.
  7. (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 Solicitação de Armazenamento em Cache de Resposta e Políticas de Resposta

Para adicionar cache de resposta a uma rota específica, adicione uma política de solicitação e uma política de resposta.

Para adicionar a solicitação de cache de resposta e a política de resposta 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 armazenamento em cache de resposta 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 básica de implantação de API define uma função simples sem servidor Hello World no OCI Functions como um único back-end:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  2. Para especificar a solicitação de cache de resposta e a política de resposta que se aplica a uma rota individual:

    1. Insira uma seção requestPolicies e uma seção responsePolicies após a seção de backend para a rota à qual você deseja que a política se aplique. Por exemplo:

      {
        "routes": [
          {
            "path": "/hello",
            "methods": ["GET"],
            "backend": {
              "type": "ORACLE_FUNCTIONS_BACKEND",
              "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
            },
            "requestPolicies": {},
            "responsePolicies": {}
          }
        ]
      }
    2. Adicione a seguinte política de solicitação responseCacheLookup à nova seção requestPolicies para aplicar à rota:
      {
        "routes": [
          {
            "path": "/hello",
            "methods": ["GET"],
            "backend": {
              "type": "ORACLE_FUNCTIONS_BACKEND",
              "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
            },
            "requestPolicies": {
              "responseCacheLookup": {
                "type": "SIMPLE_LOOKUP_POLICY",
                "isEnabled": true,
                "isPrivateCachingEnabled": <true|false>,
                "cacheKeyAdditions": [<list-of-context-variables>]
              }
            },
            "responsePolicies": {}
          }
        ]
      }

      em que:

      • "type": "SIMPLE_LOOKUP_POLICY" é o tipo de cache de resposta a ser implementado. Somente "SIMPLE_LOOKUP_POLICY" é suportado no momento.
      • "isEnabled": true indica que o armazenamento no cache de resposta está ativado para a rota. Se quiser desativar temporariamente o armazenamento no cache de resposta, defina "isEnabled": false. Se não for especificado, o padrão será true.
      • "isPrivateCachingEnabled": <true|false> indica se as respostas devem ser armazenadas em cache para solicitações que contêm um cabeçalho de autorização ou que contêm um cabeçalho ou parâmetro de consulta identificado em uma política de autenticação. Observe que o armazenamento em cache das respostas para essas solicitações pode comprometer a segurança dos dados. Se não for especificado, o padrão será false indicando que as respostas para essas solicitações não são armazenadas em cache. Para obter mais informações, consulte Observações sobre Respostas de Armazenamento no Cache para Solicitações que Contêm Credenciais (Armazenamento no Cache Privado).
      • "cacheKeyAdditions": [<list-of-context-variables>] é uma lista opcional separada por vírgulas de variáveis de contexto a serem adicionadas à chave de cache padrão para associar mais de perto uma resposta em cache a uma solicitação específica. Por exemplo, "cacheKeyAdditions": ["request.headers[Accept]"]. Não preceda a variável de contexto com um símbolo $ ou coloque-a entre chaves (como faria se estivesse adicionando a variável de contexto a um URL em uma especificação de implantação de API em um arquivo JSON). Para obter mais informações, consulte Observações sobre como Personalizar Chaves de Cache.
    3. Adicione a seguinte política de resposta responseCacheStorage à nova seção responsePolicies para aplicar à rota:
      {
        "routes": [
          {
            "path": "/hello",
            "methods": ["GET"],
            "backend": {
              "type": "ORACLE_FUNCTIONS_BACKEND",
              "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
            },
            "requestPolicies": {
              "responseCacheLookup": {
                "type": "SIMPLE_LOOKUP_POLICY",
                "isEnabled": true,
                "isPrivateCachingEnabled": false,
                "cacheKeyAdditions": ["request.headers[Accept]"]
              }
            },
            "responsePolicies": {
              "responseCacheStorage": {
                "type": "FIXED_TTL_STORE_POLICY",
                "timeToLiveInSeconds": <seconds>
              }
            }
          }
        ]
      }

      em que:

      • "type": "FIXED_TTL_STORE_POLICY" é o tipo de cache de resposta no qual as respostas serão armazenadas. Somente "FIXED_TTL_STORE_POLICY" é suportado no momento.
      • "timeToLiveInSeconds": <seconds> especifica por quanto tempo os dados armazenados no cache estão disponíveis no servidor de cache para essa rota específica. Por exemplo, "timeToLiveInSeconds": 300

    Por exemplo:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          },
          "requestPolicies": {
            "responseCacheLookup": {
              "type": "SIMPLE_LOOKUP_POLICY",
              "isEnabled": true,
              "isPrivateCachingEnabled": false,
              "cacheKeyAdditions": ["request.headers[Accept]"]
            }
          },
          "responsePolicies": {
            "responseCacheStorage": {
              "type":"FIXED_TTL_STORE_POLICY",
              "timeToLiveInSeconds": 300
            }
          }
        }
      ]
    }
  3. Salve o arquivo JSON que contém a especificação de implantação de API.
  4. 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ê selecionar a opção Carregar uma API 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 de API por meio da Criação de uma Implantação de API e Atualizando um Gateway de API.

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