Valida los datos de respuesta

En este documento, se describe cómo configurar una verificación de tiempo de actividad para validar el código de respuesta HTTP y los datos de respuesta que envía un recurso verificado. De forma predeterminada, las verificaciones de tiempo de actividad HTTP verifican que el código de respuesta sea 2xx. Además, de forma predeterminada, los datos de respuesta no se validan. Sin embargo, puedes modificar estos parámetros. Por ejemplo, puedes configurar una verificación de tiempo de actividad HTTP para aceptar los códigos de respuesta 2xx y 3xx. Para todas las verificaciones de tiempo de actividad, puedes especificar un valor que los datos de la respuesta deben o no contener para que la verificación de tiempo de actividad se realice correctamente.

Cómo validar los datos de respuesta

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

Consola de Google Cloud

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. Haz clic en Crear una verificación de tiempo de actividad.
  3. Ingresa un Título y haz clic en Siguiente.
  4. Ingresa el objetivo y haz clic en Siguiente.
  5. Configura la validación de respuesta:

    • Para validar los datos de respuesta, asegúrate de que se muestre Coincidencia de contenido habilitada 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 correcta.
  6. Haz clic en Siguiente y completa la configuración de la verificación del tiempo de actividad.

API de Cloud Monitoring

Para configurar una verificación de tiempo de actividad para validar los datos de respuesta, propaga 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 va a 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 coincidencia 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 la respuesta hace que la verificación de tiempo de actividad se apruebe o se rechace.

Es posible que no se busque 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 busca el primer 1 MB.

Busca una substring literal

Consola de Google Cloud

Para configurar la verificación de tiempo de actividad para que se apruebe cuando los datos de respuesta contengan una subcadena literal, usa la siguiente configuración:

  1. Selecciona Contiene en el menú Tipo de concordancia 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 la siguiente configuración:

  1. Selecciona No contiene en el menú Tipo de concordancia 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.

API de Cloud Monitoring

Para configurar la verificación del tiempo de actividad para 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 del 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 Response data describe los datos que muestra el recurso verificado, mientras que la columna Test string enumera la cadena literal. En las siguientes dos columnas, se especifica el tipo de prueba y el resultado de la verificación del tiempo de actividad.

Cómo realizar una búsqueda con una expresión regular

Consola de Google Cloud

Para configurar la verificación del tiempo de actividad para que se apruebe cuando los datos de respuesta coincidan con una expresión regular, usa la siguiente configuración:

  1. Selecciona Coincide con la regex en el menú Tipo de concordancia del 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 del tiempo de actividad de modo que falle cuando los datos de respuesta coincidan con una expresión regular, usa la siguiente configuración:

  1. Selecciona No coincide con la regex en el menú Tipo de concordancia del 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.

API de Cloud Monitoring

Para configurar la verificación del tiempo de actividad para 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 del tiempo de actividad de modo que falle cuando los datos de la 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 prueba:

Estado de la verificación de tiempo de actividad       
Datos de respuesta Expresión regular 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 Response data describe los datos que muestra el recurso verificado, mientras que la columna Regex enumera la expresión regular. En las siguientes dos columnas, se especifica el tipo de prueba y el resultado de la verificación del 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 un JSONPath. Cuando seleccionas una prueba de JSONPath, esta compara un valor de ruta con un número, una cadena literal o una expresión regular:

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

  • $.type coincide con el campo type de un objeto raíz.
  • $.[0].address.city coincide con el campo city en el 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 un elemento 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. Por ejemplo, consulta Prueba de JSON.

Compara JSONPath con un número o una cadena literal

Consola de Google Cloud

Para configurar la verificación de tiempo de actividad para que se apruebe cuando una JSONPath específica en los datos de respuesta coincida con una cadena literal, usa la siguiente configuración:

  1. Selecciona Coincidencias en JSONPath en el menú Tipo de concordancia del contenido de la respuesta.
  2. Ingresa la ruta de acceso en el campo JSONPath.
  3. Ingresa el número o la cadena literal 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 un JSONPath específico en los datos de respuesta coincida con una cadena literal, usa la siguiente configuración:

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

API de Cloud Monitoring

Para configurar la verificación de tiempo de actividad para que se apruebe cuando un campo específico en la respuesta con formato JSON coincida con un número o una cadena literal, 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 en la respuesta con formato JSON coincida con un número o una cadena literal, 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 del tiempo de actividad de 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 probar y la columna Test value enumera el valor. Las siguientes dos columnas especifican el tipo de prueba y el resultado de la verificación del 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.

Consola de Google Cloud

Para configurar la verificación de tiempo de actividad para que se apruebe cuando una ruta de acceso JSON específica en los datos de respuesta coincida con una expresión regular, usa la siguiente configuración:

  1. Selecciona Coincide con JSONPath en el menú Tipo de concordancia del 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 JSONPath específica en los datos de respuesta coincida con una expresión regular, usa la siguiente configuración:

  1. Selecciona No coincide en JSONPath en el menú Tipo de concordancia del 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.

API de Cloud Monitoring

Para configurar la verificación de tiempo de actividad para que se apruebe cuando un campo específico en 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 del tiempo de actividad de modo que falle cuando un campo específico en 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 del tiempo de actividad de la respuesta anterior, pero para diferentes rutas de acceso, expresiones regulares y tipos de prueba:

Estado de la verificación de tiempo de actividad       
JSONpath Expresión regular JSONPath coincide con 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 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 del tiempo de actividad.

¿Qué sigue?