Valida los datos de respuesta

La validación de respuestas te permite verificar que un recurso supervisado muestre un código de estado HTTP esperado y contenido de carga útil específico durante una verificación de tiempo de actividad. De forma predeterminada, las verificaciones de tiempo de actividad de HTTP y HTTPS solo verifican que el código de estado se encuentre en el rango 2xx y no inspeccionan el cuerpo. Puedes personalizar estos parámetros de configuración para aceptar códigos de estado adicionales, como 3xx, o para verificar si la carga útil coincide con cadenas, expresiones regulares o rutas de JSON específicas.

Cómo validar los datos de respuesta

Puedes configurar Cloud Monitoring para validar los datos de respuesta de un recurso verificado cuando crees o edites una verificación de tiempo de actividad.

Console

Para crear una verificación de tiempo de actividad que valide los datos de respuesta, haz lo siguiente:

  1. En la consola de Google Cloud , ve a la página  Verificaciones de tiempo de actividad:

    Ve a Verificaciones de tiempo de actividad

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.

  2. En la barra de herramientas de la consola de Google Cloud , selecciona tu proyecto de Google Cloud . Para las configuraciones de App Hub, selecciona el proyecto host o el proyecto de administración de App Hub.
  3. Haz clic en Crear una verificación de tiempo de actividad.
  4. Ingresa un título y haz clic en Siguiente.
  5. Ingresa el objetivo y haz clic en Siguiente.
  6. Configura la Validación de respuesta de la siguiente manera:

    • Para validar los datos de la respuesta, asegúrate de que se muestre el mensaje Se habilitó la coincidencia de contenido y, luego, completa los campos relacionados con la validación de la respuesta. Para obtener información sobre estas opciones, consulta la siguiente sección de este documento.
    • Para las verificaciones de tiempo de actividad HTTP, configura los códigos de respuesta aceptables. De forma predeterminada, las verificaciones de tiempo de actividad HTTP marcan cualquier respuesta 2xx como una respuesta exitosa.
  7. Haz clic en Siguiente y completa la configuración de la verificación de tiempo de actividad.

REST

Para configurar una verificación de tiempo de actividad que valide los datos de respuesta, completa el array contentMatchers del objeto UptimeCheckConfig.

Los objetos ContentMatcher contienen los siguientes campos:

  • matcher: Describe cómo se realiza la comparación. Para obtener una lista de valores, consulta ContentMatcherOption.

    No uses el valor CONTENT_MATCHER_OPTION_UNSPECIFIED.

  • content: Almacena el valor que se buscará en los datos de respuesta. El valor es un literal de cadena o una expresión regular.

  • jsonPathMatcher: Almacena un objeto JsonPathMatcher que describe qué JSONPath buscar y cómo realizar la comparación.

    Omite este campo, a menos que la verificación de tiempo de actividad valide un JSONpath específico.

En el resto de este documento, se describe cómo usar las opciones de correlación de contenido.

Opciones para validar los datos de respuesta

En esta sección, se describen las estrategias de coincidencia de cadenas que puedes usar para validar la respuesta que envía un recurso verificado. Para cada estrategia, especificas un valor y si encontrar ese valor en los datos de respuesta hace que la verificación de tiempo de actividad se apruebe o falle.

Es posible que no se busque en toda la respuesta de un recurso verificado:

  • Verificaciones de tiempo de actividad de HTTP y HTTPS: Se buscan los primeros 4 MB.
  • Verificaciones de tiempo de actividad de TCP: Se buscan los primeros 1 MB.

Cómo buscar una subcadena literal

Console

Para configurar la verificación de tiempo de actividad de modo que se apruebe cuando los datos de respuesta contengan una subcadena literal, usa los siguientes parámetros de configuración:

  1. Selecciona Contiene en el menú Tipo de coincidencia del contenido de la respuesta.
  2. Ingresa la subcadena literal en el campo Contenido de la respuesta.
  3. Para verificar la configuración, haz clic en Probar.

Para configurar la verificación de tiempo de actividad de modo que falle cuando los datos de respuesta contengan una subcadena literal, usa los siguientes parámetros de configuración:

  1. Selecciona No contiene en el menú Tipo de coincidencia del contenido de la respuesta.
  2. Ingresa la subcadena literal en el campo Contenido de la respuesta.
  3. Para verificar la configuración, haz clic en Probar.

REST

Para configurar la verificación de tiempo de actividad de modo que se apruebe cuando los datos de respuesta contengan una subcadena literal, usa los siguientes valores:

...
"contentMatchers": [
    {
      "content": "Set to the string to be matched.",
      "matcher": "CONTAINS_STRING"
    }
],
...

Para configurar la verificación de tiempo de actividad de modo que falle cuando los datos de respuesta contengan una subcadena literal, usa los siguientes valores:

...
"contentMatchers": [
    {
      "content": "Set to the string to be matched.",
      "matcher": "NOT_CONTAINS_STRING"
    }
],
...

En la siguiente tabla, se muestra el estado de la verificación de tiempo de actividad para diferentes datos de respuesta, cadenas de prueba y tipos de prueba:

Estado de la verificación de tiempo de actividad       
Datos de respuesta Cadena de prueba Contiene No contiene
abcd abcd pass desaprobado
abc abcd desaprobado pass
abc a pass desaprobado
Uptime Checks Uptime pass desaprobado
Uptime Checks uptime desaprobado pass

En la tabla anterior, la columna Datos de respuesta describe los datos que devuelve el recurso verificado, mientras que la columna Cadena de prueba enumera el literal de cadena. En las siguientes dos columnas, se especifican el tipo de prueba y el resultado de la verificación de tiempo de actividad.

Cómo buscar con una expresión regular

Console

Para configurar la verificación de tiempo de actividad de modo que se apruebe cuando los datos de respuesta coincidan con una expresión regular, usa los siguientes parámetros de configuración:

  1. Selecciona Coincide con la regex en el menú Tipo de coincidencia de contenido de la respuesta.
  2. Ingresa una expresión regular en el campo Contenido de la respuesta.
  3. Para verificar la configuración, haz clic en Probar.

Para configurar la verificación de tiempo de actividad de modo que falle cuando los datos de respuesta coincidan con una expresión regular, usa los siguientes parámetros de configuración:

  1. Selecciona No coincide con la regex en el menú Tipo de coincidencia de contenido de la respuesta.
  2. Ingresa una expresión regular en el campo Contenido de la respuesta.
  3. Para verificar la configuración, haz clic en Probar.

REST

Para configurar la verificación de tiempo de actividad de modo que se apruebe cuando los datos de respuesta coincidan con una expresión regular, usa los siguientes valores:

...
"contentMatchers": [
    {
      "content": "Set to the regular expression to be matched.",
      "matcher": "MATCHES_REGEX"
    }
],
...

Para configurar la verificación de tiempo de actividad de modo que falle cuando los datos de respuesta coincidan con una expresión regular, usa los siguientes valores:

...
"contentMatchers": [
    {
      "content": "Set to the regular expression to be matched.",
      "matcher": "NOT_MATCHES_REGEX"
    }
],
...

En la siguiente tabla, se muestra el estado de la verificación de tiempo de actividad para diferentes datos de respuesta, expresiones regulares y tipos de pruebas:

Estado de la verificación de tiempo de actividad       
Datos de respuesta Regex Coincide con la expresión regular No coincide con la regex
abcd abcd pass desaprobado
Uptime Checks [uU]ptime pass desaprobado
Uptime Checks [a-z]{6} desaprobado pass
Uptime Checks [a-zA-Z]{6} pass desaprobado

En la tabla anterior, la columna Datos de respuesta describe los datos que devuelve el recurso verificado, mientras que la columna Regex enumera la expresión regular. En las siguientes dos columnas, se especifican el tipo de prueba y el resultado de la verificación de tiempo de actividad.

Cómo buscar un campo específico en una respuesta JSON

Puedes configurar una verificación de tiempo de actividad para validar una ruta de JSON. Cuando seleccionas una prueba de JSONPath, la prueba compara un valor de ruta con un número, un literal de cadena o una expresión regular:

Cuando especificas una ruta de JSON, debes especificar el objeto raíz con $. y, luego, agregar un identificador de campo específico. Cuando la respuesta JSON contiene un array de elementos, usa corchetes, [], para identificar el elemento específico del array que debe coincidir. En los siguientes ejemplos, se ilustra la sintaxis de la ruta de acceso:

  • $.type coincide con el campo type de un objeto raíz.
  • $.[0].address.city coincide con el campo city del objeto address almacenado en el primer elemento del array de la respuesta JSON.
  • $.content[0].phone coincide con el campo phone del primer elemento del array del campo content. El campo content es secundario del objeto raíz.

Puedes configurar una prueba de tiempo de actividad para que coincida con varios campos. Considera el siguiente JSON:

[
  {
    ...
    "address": {
      ...
      "city": "Gwenborough",
      "geo": {
        "lat": "-37.3159",
        "lng": "81.1496"
      }
    },
  },
  ...
]

Para que coincida con toda la ruta de acceso del campo geo en el primer elemento del array, configura JSONPath en $.[0].address.geo y, luego, ingresa el valor completo en el campo de contenido:

{
  "lat": "-37.3159",
  "lng": "81.1496"
}

Si te interesa experimentar con estas opciones, busca un sitio web público que muestre una respuesta JSON.

Compara JSONPath con un literal de número o cadena

Console

Para configurar la verificación de tiempo de actividad de modo que se apruebe cuando un JSONpath específico en los datos de respuesta coincida con un literal de cadena, usa los siguientes parámetros de configuración:

  1. Selecciona Coincidencias en JSONPath en el menú Tipo de coincidencia de contenido de la respuesta.
  2. Ingresa la ruta de acceso en el campo JSONPath.
  3. Ingresa el número o el literal de cadena en el campo Contenido de la respuesta.
  4. Para verificar la configuración, haz clic en Probar.

Para configurar la verificación de tiempo de actividad de modo que falle cuando una ruta JSON específica en los datos de respuesta coincida con un literal de cadena, usa los siguientes parámetros de configuración:

  1. Selecciona No coincide en JSONPath en el menú Tipo de coincidencia de contenido de la respuesta.
  2. Ingresa la ruta de acceso en el campo JSONPath.
  3. Ingresa el número o el literal de cadena en el campo Contenido de la respuesta.
  4. Para verificar la configuración, haz clic en Probar.

REST

Para configurar la verificación de tiempo de actividad de modo que se apruebe cuando un campo específico de la respuesta con formato JSON coincida con un número o un literal de cadena, usa los siguientes valores para el objeto ContentMatcher:

...
"contentMatchers": [
    {
       "content" : "Set to a number, a boolean, or the string to be matched.",
       "matcher" : "MATCHES_JSON_PATH",
       "jsonPathMatcher" : {
           "jsonPath" : "Set to the JSONpath.",
           "jsonMatcher" : "EXACT_MATCH"
       }
    }
],
...

Para configurar la verificación de tiempo de actividad de modo que falle cuando un campo específico de la respuesta con formato JSON coincida con un número o un literal de cadena, usa los siguientes valores para el objeto ContentMatcher:

...
"contentMatchers": [
    {
       "content" : "Set to a number, a boolean, or the string to be matched.",
       "matcher" : "NOT_MATCHES_JSON_PATH",
       "jsonPathMatcher" : {
           "jsonPath" : "Set to the JSONpath.",
           "jsonMatcher" : "EXACT_MATCH"
       }
    }
],
...

Para ilustrar cómo funcionan las pruebas de coincidencia de cadenas de JSONPath, considera los siguientes datos de respuesta JSON:

{
    "name": "Sample Uptime Check",
    "type": "JSONpath",
    "content": [
        {
            "id": 1,
            "phone": "1234567890",
            "alias": "Exact",
            "enabled": true,
        },
        {
            "id": 2,
            "phone": "1234512345",
            "alias": "Regex",
            "enabled": false,
        }
    ]
}

En la siguiente tabla, se muestra el estado de la verificación de tiempo de actividad para la respuesta anterior, pero para diferentes rutas de acceso, valores de prueba y tipos de prueba:

Estado de la verificación de tiempo de actividad       
JSONpath Valor de prueba Coincidencias de JSONPath La ruta de JSON no coincide
$.type "JSONpath" pass desaprobado
$.name "Sample" desaprobado pass
$.name "Sample Uptime Check" pass desaprobado
$.content[0].id 1 pass desaprobado
$.content[0].alias "Exact" pass desaprobado
$.content[0].enabled true pass desaprobado

En la tabla anterior, la columna JSONpath identifica qué elemento se debe probar, y la columna Valor de prueba enumera el valor. Las siguientes dos columnas especifican el tipo de prueba y el resultado de la verificación de tiempo de actividad.

Compara JSONPath con una expresión regular

Las coincidencias de expresiones regulares admiten la coincidencia de una cadena, un número, un valor booleano y valores JSON nulos.

Console

Para configurar la verificación de tiempo de actividad de modo que se apruebe cuando una ruta JSON específica en los datos de respuesta coincida con una expresión regular, usa los siguientes parámetros de configuración:

  1. Selecciona Coincidencias en JSONPath en el menú Tipo de coincidencia de contenido de la respuesta.
  2. Ingresa la ruta de acceso en el campo JSONPath.
  3. Ingresa la expresión regular en el campo Contenido de la respuesta.
  4. Para verificar la configuración, haz clic en Probar.

Para configurar la verificación de tiempo de actividad de modo que falle cuando una ruta JSON específica en los datos de respuesta coincida con una expresión regular, usa los siguientes parámetros de configuración:

  1. Selecciona No coincide en JSONPath en el menú Tipo de coincidencia de contenido de la respuesta.
  2. Ingresa la ruta de acceso en el campo JSONPath.
  3. Ingresa la expresión regular en el campo Contenido de la respuesta.
  4. Para verificar la configuración, haz clic en Probar.

REST

Para configurar la verificación de tiempo de actividad de modo que se apruebe cuando un campo específico de la respuesta con formato JSON coincida con una expresión regular, usa los siguientes valores para el objeto ContentMatcher:

...
"contentMatchers": [
    {
       "content" : "Set to the regular expression to be matched.",
       "matcher" : "MATCHES_JSON_PATH",
       "jsonPathMatcher" : {
           "jsonPath" : "Set to the JSONpath.",
           "jsonMatcher" : "REGEX_MATCH"
       }
    }
],
...

Para configurar la verificación de tiempo de actividad de modo que falle cuando un campo específico de la respuesta con formato JSON coincida con una expresión regular, usa los siguientes valores para el objeto ContentMatcher:

...
"contentMatchers": [
    {
       "content" : "Set to the regular expression to be matched.",
       "matcher" : "NOT_MATCHES_JSON_PATH",
       "jsonPathMatcher" : {
           "jsonPath" : "Set to the JSONpath.",
           "jsonMatcher" : "REGEX_MATCH"
       }
    }
],
...

Para ilustrar cómo funcionan las pruebas de expresiones regulares de JSONPath, considera los siguientes datos de respuesta JSON:

{
    "name": "Sample Uptime Check",
    "type": "JSONpath",
    "content": [
        {
            "id": 1,
            "phone": "1234567890",
            "alias": "Exact",
            "enabled": true,
        },
        {
            "id": 2,
            "phone": "1234512345",
            "alias": "Regex",
            "enabled": false,
        }
    ]
}

En la siguiente tabla, se muestra el estado de la verificación de tiempo de actividad de la respuesta anterior, pero para diferentes rutas de acceso, expresiones regulares y tipos de pruebas:

Estado de la verificación de tiempo de actividad       
JSONpath Regex JSONPath coincide con la regex JSONPath no coincide con la regex
$.type [A-Z]{4}Path pass desaprobado
$.name Sample desaprobado pass
$.name .*Sample.* pass desaprobado
$.content[1].id 2 pass desaprobado
$.content[1].phone "[12345]{2}" pass desaprobado
$.content[1].enabled f.* pass desaprobado

En la tabla anterior, la columna JSONpath identifica qué elemento se debe probar, y la columna Regex enumera la expresión regular. Las siguientes dos columnas especifican el tipo de prueba y el resultado de la verificación de tiempo de actividad.

¿Qué sigue?