Transferir dados para e a partir do serviço de back-end
Quando um cliente API faz um pedido à sua API implementada no API Gateway, o cliente pode transmitir algumas ou todas as seguintes informações como parte do pedido:
- Cabeçalhos do pedido
- Parâmetros de consulta
- Dados do formulário
- Payloads XML ou JSON
- Caminhos de pedidos
Ao criar a respetiva resposta ao pedido da API, o serviço de back-end pode devolver dados ao cliente da API, incluindo:
- Cabeçalhos das respostas
- Payloads XML ou JSON
Este documento descreve como estes dados são transmitidos para e a partir do serviço de back-end.
Como são transmitidos os dados de pedidos ao serviço de back-end?
Todos os dados no pedido do cliente da API são transmitidos inalterados para o serviço de back-end. Em seguida, cabe ao serviço de back-end analisar os dados do pedido como parte do processamento do pedido.
Como é que os dados de resposta são devolvidos ao cliente API?
Todos os dados recebidos na resposta do serviço de back-end são transmitidos inalterados ao cliente da API. Em seguida, cabe ao cliente API processar todos os dados devolvidos na resposta.
Como é que o URL do pedido é transmitido ao serviço de back-end?
O URL usado para fazer um pedido ao serviço de back-end é controlado pela extensão x-google-backend
.
Esta secção descreve as opções de configuração do URL do serviço de back-end.
Definir o endereço e o caminho do serviço de back-end na especificação OpenAPI
Na especificação OpenAPI que usa para criar uma configuração da API, usa a extensão x-google-backend
para especificar o URL do serviço de back-end.
Por exemplo, especifica o serviço de back-end no formulário:
Back-end | x-google-backend |
---|---|
Funções do Cloud Run | x-google-backend: address: https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello |
Cloud Run | x-google-backend: address: https://hello-HASH.a.run.app |
Ambiente padrão do App Engine | x-google-backend: address: https://PROJECT_ID.appspot.com |
Nestes exemplos:
- GCP_REGION especifica a Google Cloud região para o back-end implementado.
- PROJECT_ID especifica o Google Cloud ID do projeto.
- HASH especifica o código hash exclusivo gerado quando o serviço do Cloud Run é criado.
Além disso, o parâmetro path
na especificação OpenAPI especifica o ponto final ou o recurso,
suportado pela sua API. Pode especificar um caminho absoluto ou um que use
parâmetros de caminho:
Caminho | Caminho com parâmetros |
---|---|
paths: /hello: |
paths: /hello/{name}: |
Gerar o URL do serviço de back-end a partir de um pedido de API
À medida que o API Gateway processa um pedido do cliente API, recebe o URL do pedido enviado pelo cliente API e traduz o URL no URL usado para fazer o pedido ao serviço de back-end. A forma exata como esta tradução ocorre depende da estratégia de tradução de caminhos que está a usar.
A opção path_translation
para a extensão x-google-backend
suporta duas estratégias de tradução de caminhos:
APPEND_PATH_TO_ADDRESS
: o URL do serviço de back-end é gerado anexando o caminho do recurso do pedido do cliente ao URLaddress
da extensãox-google-backend
.A maioria dos serviços de back-end usa
APPEND_PATH_TO_ADDRESS
porque significa que o back-end recebe o mesmo caminho de recurso especificado pelo cliente API.CONSTANT_ADDRESS
: o URL do serviço de back-end é constante, conforme definido pelo URLaddress
da extensãox-google-backend
. Se o pedido do cliente contiver um caminho do recurso, o caminho do recurso é adicionado ao URL do serviço de back-end através de parâmetros de consulta.Normalmente, este método é usado por funções do Cloud Run.
Por exemplo:
APPEND_PATH_TO_ADDRESS
address
:https://PROJECT_ID.appspot.com
- Sem parâmetros de caminho do OpenAPI:
- Caminho da OpenAPI:
/hello
- Caminho do recurso do pedido do cliente API:
/hello
- URL do pedido do serviço de back-end:
https://PROJECT_ID.appspot.com/hello
- Caminho da OpenAPI:
- Com parâmetros de caminho da OpenAPI:
- Caminho da OpenAPI:
/hello/{name}
- Caminho do recurso do pedido do cliente API:
/hello/Dave
- URL do pedido do serviço de back-end:
https://PROJECT_ID.appspot.com/hello/Dave
- Caminho da OpenAPI:
CONSTANT_ADDRESS
address
:https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello
- Sem parâmetros de caminho OpenAPI
- Caminho da OpenAPI:
/hello
- Caminho do recurso do pedido do cliente API:
/hello
- URL do pedido do serviço de back-end:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello
- Caminho da OpenAPI:
- Com parâmetros de caminho da OpenAPI
- Caminho da OpenAPI:
/hello/{name}
- Caminho do recurso do pedido do cliente API:
/hello/Dave
- URL do pedido do serviço de back-end:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello?name=Dave
- Caminho da OpenAPI:
A definir path_translation
Defina path_translation
como parte da definição de x-google-backend
:
x-google-backend: address: https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello path_translation: [ APPEND_PATH_TO_ADDRESS | CONSTANT_ADDRESS ]`
O valor predefinido de path_translation
depende de onde define x-google-backend
na especificação da API OpenAPI:
Quando
x-google-backend
é usado no nível superior da especificação OpenAPI, o valor predefinido depath_translation
éAPPEND_PATH_TO_ADDRESS
.Quando
x-google-backend
é usado ao nível da operação da especificação OpenAPI,path_translation
tem como predefiniçãoCONSTANT_ADDRESS
.