Adicionando Respostas Padrão como um Back-End de Serviço API Gateway

Descubra como definir um caminho para um back-end de resposta padrão com o API Gateway.

Com frequência, você precisará verificar se uma API foi implantada com sucesso em um gateway de API sem ter de configurar um serviço de back-end real. Uma abordagem é definir uma rota na especificação de implantação de API que tenha um caminho para um back-end 'fictício'. Ao receber uma solicitação para esse caminho, o gateway de API em si age como o back-end e retorna uma resposta padrão que você especificou.

Igualmente, há algumas situações em uma implantação de produção em que você quer que um caminho específico para uma rota retorne consistentemente a mesma resposta padrão sem enviar uma solicitação a um back-end. Por exemplo, quando você quiser que uma chamada de um caminho sempre retorne um código de status HTTP específico na resposta.

Usando o serviço API Gateway, você pode definir um caminho para um back-end de resposta padrão que sempre retorna o mesmo:

  • Código de status HTTP
  • Campos do cabeçalho HTTP (pares nome-valor)
  • conteúdo no corpo da resposta

Observe as seguintes restrições ao definir respostas padrão e back-ends de resposta padrão:

  • cada nome de cabeçalho não deve exceder 1 KB de comprimento
  • cada valor de cabeçalho não deve exceder 4 KB de comprimento
  • cada resposta do corpo não deve exceder 5 KB (incluindo qualquer codificação)
  • uma definição de back-end de resposta padrão não deve incluir mais de 50 campos de cabeçalho

Você pode adicionar back-ends de resposta padrão a uma especificação de implantação de API:

  • usando a Console
  • editando um arquivo JSON

Usando a Console para Adicionar Respostas Padrão a uma Especificação de Implantação de API

Para adicionar respostas padrão 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. Na página Autenticação, especifique opções de autenticação.

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

  3. Na página Rotas, crie uma nova rota e especifique:

    • Caminho: Um caminho para chamadas de API usando os métodos listados para o serviço de back-end. Observe que o caminho da rota que você especificar:

    • Métodos: Um ou mais métodos aceitos pelo serviço de back-end. Por exemplo, GET, PUT.
    • Adicionar um único backend ou Adicionar vários backends: Se todas as solicitações devem ser roteadas para o mesmo back-end ou para rotear solicitações para diferentes back-ends de acordo com a variável de contexto e as regras informadas.

      Essas instruções pressupõem que você deseja usar um único back-end; portanto, selecione Adicionar um único backend. Como alternativa, se você quiser usar back-ends diferentes, selecione Adicionar vários back-ends e siga as instruções em Usando a Console para Adicionar Seleção de Back-End Dinâmico a uma Especificação de Implantação de API.

    • Tipo de Backend: O tipo do serviço de back-end como Stock Response.
    • Código de Status: Qualquer código de resposta HTTP válido. Por exemplo, 200
    • Corpo: Como opção, especifica o conteúdo do corpo da resposta em um formato apropriado. Por exemplo:

      • Se você especificar um Nome do Cabeçalho e Valor do Cabeçalho de Content-Type e text/plain respectivamente, o corpo da resposta poderá ser "Hello world".
      • Se você especificar um Nome do Cabeçalho e Valor do Cabeçalho de Content-Type e application/json respectivamente, o corpo da resposta poderá ser {"username": "john.doe"}.

      Observe que o corpo da resposta não deve exceder 5 KB (incluindo qualquer codificação).

    • Nome do Cabeçalho e Valor do Cabeçalho: Opcionalmente, você pode especificar o nome de um cabeçalho de resposta HTTP e seu valor. Por exemplo, um nome de Content-Type e um valor de application/json. Você pode especificar vários pares de nome e valor de cabeçalho (até um máximo de 50). Observe que, em cada caso:

      • o nome de cabeçalho não deve exceder 1 KB de tamanho
      • o valor do cabeçalho não deve exceder 4 KB de tamanho

    Neste exemplo, uma solicitação para o caminho /test retorna um código de status 200 e um payload JSON no corpo da resposta.

    Campo: Informe:
    Caminho: /test
    Métodos: GET
    Tipo de Back-end: Stock Response
    Código do Status: 200
    Corpo: {"username": "john.doe"}
    Nome do Cabeçalho: Content-Type
    Valor do Cabeçalho: application/json

    Neste exemplo, uma solicitação ao caminho /test-redirect retorna um código de status 302 e um url temporário no cabeçalho Location da resposta.

    Campo: Informe:
    Caminho: /test-redirect
    Métodos: GET
    Tipo de Back-end: Stock Response
    Código do Status: 302
    Corpo: n/d
    Nome do Cabeçalho: Location
    Valor do Cabeçalho: http://www.example.com
  4. (Opcional) Selecione Outra Rota para inserir detalhes de rotas adicionais.
  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 Respostas Padrão a uma Especificação de Implantação de API

Para adicionar respostas padrão a uma especificação de implantação de API em um arquivo JSON:

  1. Usando seu editor de JSON preferido, edite a especificação de implantação de API existente à qual você deseja adicionar um back-end de resposta padrão 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. Na seção routes, inclua uma nova seção path para um back-end de resposta padrão:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        },
        {
          "path": "<api-route-path>",
          "methods": ["<method-list>"],
          "backend": {
            "type": "STOCK_RESPONSE_BACKEND",
            "status": <http-response-code>,
            "headers": [{
              "name": "<header-name>",
              "value": "<header-value>"
            }],
            "body": "<body-content>"
          }
        }
      ]
    }

    em que:

    • <api-route-path> especifica um caminho para chamadas de API usando os métodos listados para o back-end de resposta padrão. Observe que o caminho da rota que você especificar:

    • <method-list> especifica um ou mais métodos aceitos pelo back-end de resposta padrão, separados por vírgulas. Por exemplo, GET, PUT.
    • "type": "STOCK_RESPONSE_BACKEND" indica que o próprio gateway de API atuará como o back-end e retornará a resposta padrão definida por você (o código de status, os campos de cabeçalho e o conteúdo do corpo).
    • <http-response-code> é qualquer código de resposta HTTP válido. Por exemplo, 200
    • "name": "<header-name>", "value": "<header-value>" especifica opcionalmente o nome de um cabeçalho de resposta HTTP e seu valor. Por exemplo, "name": "Content-Type", "value":"application/json". Você pode especificar vários pares "name": "<header-name>", "value": "<header-value>" na seção headers: (até um máximo de 50). Observe que, em cada caso:
      • <header-name> não deve exceder 1 KB de tamanho
      • <header-value> não deve exceder 4 KB de tamanho
    • "body": "<body-content>" especifica opcionalmente o conteúdo do corpo da resposta, em um formato apropriado. Por exemplo:
      • Se o cabeçalho Content-Type for text/plain, o corpo da resposta poderá ser "body": "Hello world".
      • Se o cabeçalho Content-Type for application/json, o corpo da resposta poderá ser "body": "{\"username\": \"john.doe\"}". No caso de uma resposta JSON, observe que as aspas na resposta devem ter escape com um caractere de barra invertida ( \).

      Observe que <body-content> não deve exceder 5 KB (incluindo qualquer codificação).

    Neste exemplo, uma solicitação para o caminho /test retorna um código de status 200 e um payload JSON no corpo da resposta.

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        },
        {
          "path": "/test",
          "methods": ["GET"],
          "backend": {
            "type": "STOCK_RESPONSE_BACKEND",
            "status": 200,
            "headers": [{
              "name": "Content-Type",
              "value": "application/json"
            }],
            "body" : "{\"username\": \"john.doe\"}"
          }
        }
      ]
    }

    Neste exemplo, uma solicitação ao caminho /test-redirect retorna um código de status 302 e um url temporário no cabeçalho Location da resposta. Este exemplo também demonstra que você pode criar uma especificação de implantação de API com apenas uma rota para um back-end do tipo STOCK_RESPONSE_BACKEND.

    {
      "routes": [
        {
          "path": "/test-redirect",
          "methods": ["GET"],
          "backend": {
            "type": "STOCK_RESPONSE_BACKEND",
            "status": 302,
            "headers": [{
              "name": "Location",
              "value": "http://www.example.com"
            }]
          }
        }
      ]
    }
  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).