Transferir datos al servicio de backend y desde ese servicio
Cuando un cliente de API hace una solicitud a tu API implementada en API Gateway, puede enviar toda o parte de la siguiente información como parte de la solicitud:
- Encabezados de solicitud
- Parámetros de consulta
- Datos de formularios
- Cargas útiles XML o JSON
- Rutas de la solicitud
Al crear su respuesta a la solicitud de la API, el servicio de backend puede devolver datos al cliente de la API, como los siguientes:
- Encabezados de respuesta
- Cargas útiles XML o JSON
En este documento se describe cómo se transfieren estos datos al servicio de backend y desde ese servicio.
¿Cómo se transfieren los datos de las solicitudes al servicio de backend?
Todos los datos de la solicitud del cliente de la API se transfieren sin cambios al servicio de backend. A continuación, el servicio de backend debe analizar los datos de la solicitud como parte de la gestión de la solicitud.
¿Cómo se devuelven los datos de respuesta al cliente de la API?
Todos los datos recibidos en la respuesta del servicio de backend se transfieren sin cambios al cliente de la API. A continuación, el cliente de la API debe procesar los datos devueltos en la respuesta.
¿Cómo se transfiere la URL de la solicitud al servicio de backend?
La extensión x-google-backend
controla la URL que se usa para enviar una solicitud al servicio de backend.
En esta sección se describen las opciones para configurar la URL del servicio de backend.
Definir la dirección y la ruta del servicio de backend en la especificación de OpenAPI
En la especificación de OpenAPI que usas para crear una configuración de API, se usa la extensión x-google-backend
para especificar la URL del servicio backend.
Por ejemplo, puede especificar el servicio de backend de la siguiente forma:
Backend | x-google-backend |
---|---|
Cloud Run Functions | x-google-backend: address: https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello |
Cloud Run | x-google-backend: address: https://hello-HASH.a.run.app |
Entorno estándar de App Engine | x-google-backend: address: https://PROJECT_ID.appspot.com |
En estos ejemplos:
- GCP_REGION especifica la Google Cloud región del backend implementado.
- PROJECT_ID especifica el Google Cloud ID del proyecto.
- HASH especifica el código hash único que se genera cuando se crea el servicio de Cloud Run.
Además, el parámetro path
de la especificación de OpenAPI indica el endpoint o el recurso que admite tu API. Puedes especificar una ruta absoluta o una que use parámetros de ruta:
Ruta | Ruta con parámetros |
---|---|
paths: /hello: |
paths: /hello/{name}: |
Generar la URL del servicio de backend a partir de una solicitud de API
Cuando API Gateway gestiona una solicitud del cliente de la API, toma la URL de la solicitud enviada por el cliente de la API y la traduce a la URL que se usa para enviar la solicitud al servicio de backend. La forma exacta en que se produce esta traducción depende de la estrategia de traducción de rutas que utilices.
La opción path_translation
de la extensión x-google-backend
admite dos estrategias de traducción de rutas:
APPEND_PATH_TO_ADDRESS
: la URL del servicio backend se genera añadiendo la ruta del recurso de la solicitud del cliente a la URLaddress
de la extensiónx-google-backend
.La mayoría de los servicios backend usan
APPEND_PATH_TO_ADDRESS
porque significa que el backend recibe la misma ruta de recurso que la especificada por el cliente de la API.CONSTANT_ADDRESS
: la URL del servicio backend es constante, tal como se define en la URL de la extensiónx-google-backend
.address
Si la solicitud del cliente contiene una ruta de recurso, esta se añade a la URL del servicio de backend mediante parámetros de consulta.Este método suele utilizarse en Cloud Run Functions.
Por ejemplo:
APPEND_PATH_TO_ADDRESS
address
:https://PROJECT_ID.appspot.com
- Sin parámetros de ruta de OpenAPI:
- Ruta de OpenAPI:
/hello
- Ruta del recurso de solicitud de cliente de API:
/hello
- URL de solicitud del servicio de backend:
https://PROJECT_ID.appspot.com/hello
- Ruta de OpenAPI:
- Con parámetros de ruta de OpenAPI:
- Ruta de OpenAPI:
/hello/{name}
- Ruta del recurso de solicitud de cliente de API:
/hello/Dave
- URL de solicitud del servicio de backend:
https://PROJECT_ID.appspot.com/hello/Dave
- Ruta de OpenAPI:
CONSTANT_ADDRESS
address
:https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello
- Sin parámetros de ruta de OpenAPI
- Ruta de OpenAPI:
/hello
- Ruta del recurso de solicitud de cliente de API:
/hello
- URL de solicitud del servicio de backend:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello
- Ruta de OpenAPI:
- Con parámetros de ruta de OpenAPI
- Ruta de OpenAPI:
/hello/{name}
- Ruta del recurso de solicitud de cliente de API:
/hello/Dave
- URL de solicitud del servicio de backend:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello?name=Dave
- Ruta de OpenAPI:
Configurando path_translation
Configura path_translation
como parte de la configuración de x-google-backend
:
x-google-backend: address: https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello path_translation: [ APPEND_PATH_TO_ADDRESS | CONSTANT_ADDRESS ]`
El valor predeterminado de path_translation
depende de dónde definas x-google-backend
en tu especificación de OpenAPI:
Cuando se usa
x-google-backend
en el nivel superior de la especificación de OpenAPI,path_translation
tiene el valor predeterminadoAPPEND_PATH_TO_ADDRESS
.Cuando se usa
x-google-backend
en el nivel de operación de la especificación de OpenAPI,path_translation
tiene el valor predeterminadoCONSTANT_ADDRESS
.