Pasar datos hacia y desde el servicio de backend
Cuando un cliente de API realiza una solicitud a la API implementada en API Gateway, el cliente puede pasar toda la siguiente información, como parte, de la solicitud:
- Encabezados de la solicitud
- Parámetros de consulta
- Datos de formulario
- Cargas útiles de XML o JSON
- Rutas de solicitud
Cuando se compila la respuesta a la solicitud a la API, el servicio de backend puede devolver datos al cliente de API, incluidos los siguientes:
- Encabezados de respuesta
- Cargas útiles de XML o JSON
En este documento, se describe cómo se pasan estos datos hacia y desde el servicio de backend.
¿Cómo se pasan los datos de solicitud al servicio de backend?
Todos los datos de la solicitud del cliente de API se pasan sin cambios al servicio de backend. Luego, el servicio de backend debe analizar los datos de la solicitud como parte de su procesamiento.
¿Cómo se devuelven los datos de respuesta al cliente de API?
Todos los datos que se reciben en la respuesta del servicio de backend se pasan sin cambios al cliente de API. Luego, el cliente de API debe procesar los datos que se devuelven en la respuesta.
¿Cómo se pasa la URL de la solicitud al servicio de backend?
La URL que se usa para realizar una solicitud al servicio de backend se controla con la
extensión x-google-backend.
En esta sección, se describen las opciones para configurar la URL del servicio de backend.
Establece la dirección y la ruta de acceso 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, usas la
extensión x-google-backend para especificar la URL del servicio de backend.
Por ejemplo, especifica el servicio de backend de la siguiente manera:
| Backend | x-google-backend |
|---|---|
| Cloud Run Functions | x-google-backend: address: https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello |
| Cloud Run | Uno de los siguientes:
|
| Entorno estándar de App Engine | x-google-backend: address: https://PROJECT_ID.appspot.com |
En estos ejemplos, sucede lo siguiente:
- APP_URL especifica la URL real de tu servicio de Cloud Run (la ruta de acceso completa de la API a la que se llama), también conocida como la URL no determinista. Por ejemplo:
https://hello-abc1def2gh-uc.a.run.app. - DETERMINISTIC_URL es la URL determinística del backend de tu servicio de Cloud Run.
Además, el parámetro path en la especificación de OpenAPI indica el extremo o recurso
que admite tu API. Puedes especificar una ruta de acceso absoluta o una que use
parámetros de ruta de acceso:
| Ruta | Ruta con parámetros |
|---|---|
paths: /hello: |
paths:
/hello/{name}: |
Genera la URL del servicio de backend a partir de una solicitud a la API
Como API Gateway controla una solicitud del cliente de API, toma la URL de la solicitud que envía el cliente de la API y la traduce a la URL que se usa para realizar la solicitud al servicio de backend. La forma exacta en la que ocurre esta traducción depende de la estrategia de traducción de ruta de acceso que uses.
La opción path_translation de la extensión x-google-backend admite dos estrategias de traducción de rutas de acceso:
APPEND_PATH_TO_ADDRESS: La URL del servicio de backend se genera agregando la ruta de acceso del recurso de la solicitud del cliente a la URL deaddressde la extensiónx-google-backend.La mayoría de los servicios de backend usan
APPEND_PATH_TO_ADDRESSporque significa que el backend recibe la misma ruta de acceso de recursos que especifica el cliente de API.CONSTANT_ADDRESS: La URL del servicio de backend es constante, como se define en la URLaddressde la extensiónx-google-backend. Si la solicitud del cliente contiene una ruta de acceso al recurso, esta se agrega a la URL del servicio de backend con parámetros de consulta.Por lo general, las funciones de Cloud Run usan este método.
Por ejemplo:
APPEND_PATH_TO_ADDRESSaddress:https://PROJECT_ID.appspot.com- Sin parámetros de ruta de acceso de OpenAPI
- Ruta de acceso de OpenAPI:
/hello - Ruta de acceso del recurso de la solicitud del cliente de API:
/hello - URL de solicitud del servicio de backend:
https://PROJECT_ID.appspot.com/hello
- Ruta de acceso de OpenAPI:
- Con parámetros de ruta de acceso de OpenAPI
- Ruta de acceso de OpenAPI:
/hello/{name} - Ruta de acceso del recurso de la solicitud del cliente de API:
/hello/Dave - URL de solicitud del servicio de backend:
https://PROJECT_ID.appspot.com/hello/Dave
- Ruta de acceso de OpenAPI:
CONSTANT_ADDRESSaddress:https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello- Sin parámetros de ruta de acceso de OpenAPI
- Ruta de acceso de OpenAPI:
/hello - Ruta de acceso del recurso de la solicitud del cliente de API:
/hello - URL de solicitud del servicio de backend:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello
- Ruta de acceso de OpenAPI:
- Con parámetros de ruta de acceso de OpenAPI
- Ruta de acceso de OpenAPI:
/hello/{name} - Ruta de acceso del recurso de la solicitud del cliente de API:
/hello/Dave - URL de solicitud del servicio de backend:
https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello?name=Dave
- Ruta de acceso de OpenAPI:
Configura path_translation
Establece 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 configures x-google-backend
en tu especificación de OpenAPI:
Cuando se usa
x-google-backenden el nivel superior de la especificación de OpenAPI,path_translationse establece de forma predeterminada enAPPEND_PATH_TO_ADDRESS.Cuando se usa
x-google-backenden el nivel de operación de la especificación de OpenAPI,path_translationse establece de forma predeterminada enCONSTANT_ADDRESS.