Controla las cargas útiles de JSON como cadenas en la tarea de conectores HTTP
En este instructivo, aprenderás a controlar cargas útiles JSON cuando uses una tarea de conectores HTTP en Application Integration.
Si se trata la carga útil de forma incorrecta, las APIs pueden interpretarla de forma errónea, lo que genera errores 400 Bad Request. Para asegurarte de que las APIs reciban y analicen tu carga útil de JSON correctamente, trata la carga útil de JSON como una cadena y establece de forma explícita el encabezado Content-Type en application/json.
Antes de comenzar
- Verifica que puedas acceder a Application Integration.
-
Selecciona tu Google Cloud proyecto y completa las siguientes tareas:
- Otorga los siguientes roles a la cuenta de servicio que deseas usar para crear la conexión:
roles/secretmanager.viewerroles/secretmanager.secretAccessor
- Habilita los siguientes servicios:
secretmanager.googleapis.com(API de Secret Manager)connectors.googleapis.com(API de conectores)
Si no habilitaste estos servicios para tu proyecto, la página Crear conexión te solicitará que los habilites cuando crees la conexión.
- Otorga los siguientes roles a la cuenta de servicio que deseas usar para crear la conexión:
- Agrega y configura una tarea de Conectores HTTP.
- Agrega y configura la tarea de Data Transformer para preparar la carga útil y los encabezados de JSON.
Cómo controlar cargas útiles JSON como cadenas
Para controlar cargas útiles JSON que contienen caracteres especiales cuando usas una tarea de conectores HTTP, completa los siguientes pasos:
- Crea una variable de cadena para la carga útil de JSON
- Asigna la variable de cadena al cuerpo de entrada del conector
- Cómo agregar un encabezado Content-Type personalizado
- Ejecuta la tarea de conectores HTTP
Crea una variable de cadena para la carga útil de JSON
- En la consola de Google Cloud , ve a la página Application Integration.
- En el menú de navegación, haz clic en Integraciones.
- Selecciona una integración existente o crea una nueva. Asegúrate de que tu integración incluya las tareas configuradas de Conectores HTTP y Transformador de datos, como se detalla en la sección Antes de comenzar.
- En el editor de integración, haz clic en Crear para abrir el diálogo Crear variable.
- En el diálogo Crear variable, haz lo siguiente:
- Ingresa la siguiente información:
- Nombre: Ingresa un nombre, por ejemplo,
jsonPayloadString. - Tipo de datos: Selecciona Cadena.
- Valor predeterminado:
- Si una tarea anterior del flujo de integración completó la carga útil de JSON, por ejemplo, otra tarea de Data Transformer, deja este campo vacío. La variable se propagará de forma dinámica según el resultado de las tareas anteriores de la integración.
- Si una tarea anterior no completó la carga útil de JSON, debes proporcionar una carga útil de JSON predeterminada estática. Ingresa la estructura JSON como una sola cadena en este campo.
Aquí tienes dos ejemplos de cómo ingresar cadenas JSON en el campo Valor predeterminado:
Sin caracteres especiales: Para representar el JSON
{"name": "Developer", "key": "test"}, ingresa exactamente{ "name": "Developer", "key": "test" }.Con caracteres especiales: Cuando tu JSON contiene caracteres especiales, como un salto de línea (
\n), debes escaparlos. Por ejemplo, para representar el JSON{"key": "value1\nvalue2"}, ingresa{"key": "value1\\nvalue2"}en el campo.
- Nombre: Ingresa un nombre, por ejemplo,
- Haz clic en Crear.
Para obtener más información sobre cómo crear y usar variables, consulta Variables.
- Ingresa la siguiente información:
Asigna la variable de cadena al cuerpo de entrada del conector
En el Editor de transformación de datos, asigna la variable jsonPayloadString al campo connectorInputPayload.Body.
- En tu integración, agrega una tarea de Data Transformer.
- Abre el Editor de Data Transformer. Puedes usar el modo de diagrama o el modo de secuencia de comandos.
- Para asignar la variable, sigue estos pasos:
- Modo de diagrama: Agrega
jsonPayloadStringcomo entrada y asígnala al campo de salida connectorInputPayload.Body. - Modo de secuencia de comandos: Escribe código de Jsonnet para asignar el valor:
connectorInputPayload.Body = vars.jsonPayloadString;.
- Modo de diagrama: Agrega
Agrega un encabezado Content-Type personalizado
- En el Editor de Data Transformer, agrega una asignación para los encabezados personalizados al campo connectorInputPayload.Headers.
- Modo de diagrama: Agrega una entrada constante con el valor
{"Content-Type": "application/json"}y asígnala a connectorInputPayload.Headers. - Modo de secuencia de comandos: Agrega el siguiente Jsonnet para establecer el encabezado:
connectorInputPayload.Headers = { "Content-Type": "application/json" };
- Modo de diagrama: Agrega una entrada constante con el valor
Ejecuta la tarea de Connectors HTTP
Antes de ejecutar la integración, verifica que connectorInputPayload.Body se complete con la variable jsonPayloadString y que connectorInputPayload.Headers incluya el encabezado Content-Type: application/json. Esta configuración garantiza que la tarea HTTP Connectors envíe la carga útil de JSON como una cadena con el Content-Type correcto en la tarea Data Transformer.
Ejecuta tu integración para probar la solicitud a la API. Si la API devuelve un error 400 Bad Request, vuelve a verificar las asignaciones de connectorInputPayload.Body y connectorInputPayload.Headers en la tarea Data Transformer.
¿Qué sigue?
Intenta crear integraciones con otros conectores. Para obtener una lista de todos los conectores compatibles, consulta la referencia del conector.