Criando uma Especificação de Implantação de API
Descubra como criar uma especificação de API (uma definição legível por máquina de uma API no formato JSON) para uso com o API Gateway.
Para possa implantar uma API em um gateway de API, você precisa criar uma especificação de implantação de API. Cada implantação de API possui uma especificação de implantação de API.
Cada especificação de implantação de API descreve um conjunto de recursos e os métodos (por exemplo, GET, PUT) que podem ser executados em cada recurso.
Você pode usar um gateway de API único como front-end para diversos serviços de back-end:
- Criando uma implantação de API única no gateway de API, com uma especificação de implantação de API que define vários serviços de back-end.
- Criando várias implantações de API no mesmo gateway de API, cada uma com uma especificação de implantação de API que define um (ou mais) serviços de back-end.
Geralmente, serviços de back-end estarão na mesma VCN do gateway de API no qual você disponibiliza uma API. No entanto, eles não precisam estar. Na especificação de implantação de API, você pode descrever serviços de back-end que estejam em uma sub-rede privada ou pública em sua tenancy, assim como serviços fora da tenancy (inclusive na internet pública). Onde quer que estejam localizados, os serviços de back-end deverão ser roteáveis da sub-rede que contém o gateway de API no qual a API está implantada. Por exemplo, se o serviço de back-end estiver na internet pública, a VCN deverá ter um gateway de internet para permitir que o gateway de API roteie solicitações para o serviço de back-end.
Você pode criar uma especificação de implantação de API:
- Usando caixas de diálogo na Console ao criar uma implantação de API.
- Usando o editor de JSON preferido para criar um arquivo JSON separado. Você pode especificar o arquivo JSON ao usar a Console, a CLI ou a API para criar uma implantação de API.
- Usando um arquivo de descrição de API que você carrega por upload para um recurso de API. O arquivo de descrição da API fornece alguns valores iniciais para a especificação de implantação da API, que você pode modificar e estender ao implantar o recurso da API em um gateway de API. Consulte Criando um Recurso de API com uma Descrição de API.
As instruções neste tópico mostram uma especificação básica de implantação de API com um único back-end, apenas uma rota e nenhuma política de solicitação ou resposta. Consulte Exemplo de Especificação de Implantação de API com Vários Back-Ends para ver uma especificação de implantação de API mais típica que inclui vários back-ends, cada um com uma ou mais rotas.
Além disso, você pode adicionar políticas de solicitação e resposta que se aplicam a rotas em uma especificação de implantação de API (consulte Adicionando Políticas de Solicitação e Políticas de Resposta a Especificações de Implantação de API).
Usando a Console para Criar uma Especificação de Implantação de API
Para criar uma especificação de implantação de API ao criar uma implantação de API usando caixas de diálogo na Console, consulte Usando a Console para Criar uma Implantação de API do Início.
Usando um Editor de JSON para Criar uma Especificação de Implantação de API em um Arquivo JSON Separado
Para criar uma especificação de implantação de API em um arquivo JSON:
-
Usando seu editor de JSON preferido, crie a especificação de implantação de API em um arquivo JSON no formato:
{ "requestPolicies": {}, "routes": [ { "path": "<api-route-path>", "methods": ["<method-list>"], "backend": { "type": "<backend-type>", "<backend-target>": "<identifier>" }, "requestPolicies": {} } ] }
em que:
"requestPolicies"
especifica políticas opcionais para controlar o comportamento de uma implantação de API. Se você quiser aplicar políticas a todas as rotas em uma especificação de implantação de API, coloque as políticas fora da seçãoroutes
. Se quiser aplicar as políticas apenas a uma rota específica, coloque as políticas na seçãoroutes
. Consulte Adicionando Políticas de Solicitação e Políticas de Resposta a Especificações de Implantação de API.-
<api-route-path>
especifica 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:- é relativo ao prefixo do caminho de implantação (consulte Implantando uma API em um Gateway de API por meio da Criação de uma Implantação de API)
- deve ser precedido por uma barra ( / ) e pode ser apenas uma barra
- pode conter várias barras (desde que elas não sejam adjacentes) e pode terminar com uma barra
- pode incluir caracteres alfanuméricos maiúsculos e minúsculos
- pode incluir os caracteres especiais
$ - _ . + ! * ' ( ) , % ; : @ & =
- pode incluir parâmetros e curingas (consulte Adicionando Parâmetros de Caminho e Curingas a Caminhos de Rota)
<method-list>
especifica um ou mais métodos aceitos pelo serviço de back-end, separados por vírgulas. Por exemplo,GET, PUT
.<backend-type>
especifica o tipo do serviço de back-end. Os valores válidos sãoORACLE_FUNCTIONS_BACKEND
,HTTP_BACKEND
eSTOCK_RESPONSE_BACKEND
.<backend-target>
e<identifier>
especificam o serviço de back-end. Os valores válidos para<backend-target>
e<identifier>
dependem do valor de<backend-type>
, como se segue:- Se você definir
<backend-type>
comoORACLE_FUNCTIONS_BACKEND
, substitua<backend-target>
porfunctionId
e substitua<identifier>
pelo OCID da função. Por exemplo,"functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab5b..."
. Consulte Adicionando uma Função no Serviço OCI Functions como um Backend do Serviço API Gateway - Se você definir
<backend-type>
comoHTTP_BACKEND
, substitua<backend-target>
porurl
e substitua<identifier>
pelo URL do serviço de back-end. Por exemplo,"url": "https://api.weather.gov"
. Consulte Adicionando um URL HTTP ou HTTPS como um Back-End do Serviço API Gateway. - Se você definir
<backend-type>
comoSTOCK_RESPONSE_BACKEND
, substitua<backend-target>
e<identifier>
por pares chave-valor apropriados. Consulte Adicionando Respostas Padrão como um Back-End do Serviço API Gateway
- Se você definir
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" } } ] }
Para obter um exemplo mais complexo que defina vários back-ends, consulte Exemplo de Especificação de Implantação da API com Vários Back-Ends.
- 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ê 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.
Usando um Arquivo de Descrição da API para Criar uma Especificação de Implantação da API
Para criar uma especificação de implantação de API com base em um arquivo de descrição de API carregado por upload para um recurso de API, consulte Criando um Recurso de API com uma Descrição de API
O arquivo de descrição da API fornece alguns valores iniciais para a especificação de implantação da API, que você pode modificar e estender ao implantar o recurso da API em um gateway de API.
Exemplo de Especificação de Implantação de API com Vários Back-Ends
Você pode criar uma implantação de API única em um gateway de API, com uma especificação de implantação de API que defina vários serviços de back-end.
Por exemplo, a especificação de implantação de API a seguir define uma função simples sem servidor Hello World no OCI Functions como um back-end e a API National Weather Service como um segundo back-end.
{
"routes": [
{
"path": "/hello",
"methods": ["GET"],
"backend": {
"type": "ORACLE_FUNCTIONS_BACKEND",
"functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
}
},
{
"path": "/weather",
"methods": ["GET"],
"backend": {
"type": "HTTP_BACKEND",
"url": "https://api.weather.gov"
}
}
]
}