Gestionar cargas útiles de JSON como cadenas en tareas de conectores HTTP

En este tutorial, aprenderá a gestionar cargas útiles JSON cuando utilice una tarea Conectores HTTP en Application Integration.

Si el payload no se trata correctamente, las APIs pueden interpretarlo de forma errónea, lo que provoca 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 define explícitamente el encabezado Content-Type como application/json.

Antes de empezar

  • Comprueba que puedes acceder a Application Integration.
  • Selecciona tu Google Cloud proyecto y completa las siguientes tareas:

    • Asigna los siguientes roles a la cuenta de servicio que quieras usar para crear la conexión:
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor
    • Habilita los siguientes servicios:
      • secretmanager.googleapis.com (API Secret Manager)
      • connectors.googleapis.com (API Connectors)

      Si no has habilitado estos servicios en tu proyecto, la página Crear conexión te pedirá que lo hagas cuando crees la conexión.

  • Añade y configura una tarea Conectores HTTP.
  • Añade y configura la tarea Transformador de datos para preparar la carga útil y los encabezados de JSON.

Gestionar cargas útiles de JSON como cadenas

Para gestionar cargas útiles JSON que contengan caracteres especiales cuando uses una tarea Conectores HTTP, sigue estos pasos:

Crear una variable de cadena para la carga útil de JSON

  1. En la Google Cloud consola, ve a la página Integración de aplicaciones.

    Ir a Integración de aplicaciones

  2. En el menú de navegación, haz clic en Integraciones.
  3. Seleccione una integración que ya tenga o cree una. Asegúrate de que tu integración incluya las tareas Conectores HTTP y Transformador de datos configuradas, tal como se detalla en la sección Antes de empezar.
  4. En el editor de integraciones, haga clic en Crear para abrir el cuadro de diálogo Crear variable.
  5. En el cuadro de diálogo Crear variable, haga lo siguiente:
    1. Especifica la siguiente información:
      1. Nombre: introduce un nombre; por ejemplo, jsonPayloadString.
      2. Tipo de datos: selecciona Cadena.
      3. Valor predeterminado:
        • Si la carga útil JSON se rellena con una tarea anterior del flujo de integración (por ejemplo, otra tarea Transformador de datos), deje este campo vacío. La variable se rellenará de forma dinámica en función de la salida de las tareas anteriores de la integración.
        • Si una tarea anterior no rellena la carga útil de JSON, debes proporcionar una carga útil de JSON predeterminada estática. Introduce la estructura JSON como una sola cadena en este campo.

          A continuación se muestran dos ejemplos de cómo introducir cadenas JSON en el campo Valor predeterminado:

          Sin caracteres especiales: para representar el JSON {"name": "Developer", "key": "test"}, introduce exactamente { "name": "Developer", "key": "test" }.

          Con caracteres especiales: si tu JSON contiene caracteres especiales, como saltos de línea (\n), debes usar secuencias de escape. Por ejemplo, para representar el JSON {"key": "value1\nvalue2"}, introduce {"key": "value1\\nvalue2"} en el campo.

    2. Haz clic en Crear.
    Crear una variable de cadena para la carga útil de JSON
  6. Para obtener más información sobre cómo crear y usar variables, consulta el artículo Variables.

Asigna la variable de cadena al cuerpo de entrada del conector

En el Editor de transformador de datos, asigne la variable jsonPayloadString al campo connectorInputPayload.Body.

  1. En su integración, añada una tarea de transformación de datos.
  2. Abre el editor de transformador de datos. Puedes usar el modo de diagrama o el modo de secuencia de comandos.
  3. Para asignar la variable, haz lo siguiente:
    • Modo de diagrama: añade jsonPayloadString como entrada y asígnalo al campo de salida connectorInputPayload.Body.
    • Modo de secuencias de comandos: escribe código Jsonnet para asignar el valor: connectorInputPayload.Body = vars.jsonPayloadString;.

Añadir un encabezado Content-Type personalizado

  1. En el editor de transformador de datos, añade una asignación para los encabezados personalizados al campo connectorInputPayload.Headers.
    • Modo de diagrama: añade una entrada constante con el valor {"Content-Type": "application/json"} y asígnala a connectorInputPayload.Headers.
    • Modo de secuencia de comandos: añade el siguiente Jsonnet para definir el encabezado:
      connectorInputPayload.Headers = {
        "Content-Type": "application/json"
      };
              

Ejecutar la tarea de conectores HTTP

Antes de ejecutar la integración, comprueba que connectorInputPayload.Body se rellena con la variable jsonPayloadString y que connectorInputPayload.Headers incluye el encabezado Content-Type: application/json. Esta configuración asegura que la tarea Conectores HTTP envíe la carga útil de JSON como una cadena con el Content-Type correcto en la tarea Transformador de datos.

Ejecuta la integración para probar la solicitud de 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 Transformador de datos.

Siguientes pasos

Prueba a crear integraciones con otros conectores. Para ver una lista de todos los conectores admitidos, consulta la referencia de conectores.