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 URLaddressde la extensiónx-google-backend.La mayoría de los servicios backend usan
APPEND_PATH_TO_ADDRESSporque 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.addressSi 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_ADDRESSaddress: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_ADDRESSaddress: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-backenden el nivel superior de la especificación de OpenAPI,path_translationtiene el valor predeterminadoAPPEND_PATH_TO_ADDRESS.Cuando se usa
x-google-backenden el nivel de operación de la especificación de OpenAPI,path_translationtiene el valor predeterminadoCONSTANT_ADDRESS.