Valide os dados de resposta

Este documento descreve como configurar uma verificação de tempo de atividade para validar o código de resposta HTTP e os dados de resposta enviados por um recurso verificado. Por predefinição, as verificações de tempo de atividade HTTP verificam se o código de resposta é 2xx. Além disso, por predefinição, os dados de resposta não são validados. No entanto, pode modificar estas definições. Por exemplo, pode configurar uma verificação de tempo de atividade HTTP para aceitar códigos de resposta 2xx e 3xx. Para todas as verificações de tempo de atividade, pode especificar um valor que os dados de resposta têm ou não de conter para que a verificação de tempo de atividade seja bem-sucedida.

Esta funcionalidade só é suportada para projetos do Google Cloud . Para configurações do App Hub, selecione o projeto anfitrião do App Hub ou o projeto de gestão da pasta com apps ativadas.

Como validar os dados de resposta

Pode configurar o Cloud Monitoring para validar os dados de resposta de um recurso verificado quando cria ou edita uma verificação de tempo de atividade.

Google Cloud consola

Para criar uma verificação de tempo de atividade que valide os dados de resposta, faça o seguinte:

  1. Na Google Cloud consola, aceda à página  Verificações de tempo de atividade:

    Aceda a Verificações de tempo de atividade

    Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.

  2. Na barra de ferramentas da Google Cloud consola, selecione o seu Google Cloud projeto. Para configurações do App Hub, selecione o projeto anfitrião do App Hub ou o projeto de gestão da pasta com apps ativadas.
  3. Clique em Criar verificação de tempo de atividade.
  4. Introduza um Título e clique em Seguinte.
  5. Introduza o alvo e clique em Seguinte.
  6. Configure a Validação da resposta:

    • Para validar os dados de resposta, certifique-se de que a opção A correspondência de conteúdo está ativada é apresentada e, em seguida, preencha os campos relacionados com a validação de respostas. Para obter informações sobre estas opções, consulte a secção seguinte deste documento.
    • Para as verificações de tempo de atividade HTTP, configure os códigos de resposta aceitáveis. Por predefinição, as verificações de tempo de atividade HTTP marcam qualquer resposta 2xx como uma resposta bem-sucedida.
  7. Clique em Seguinte e conclua a configuração da verificação do tempo de atividade.

Cloud Monitoring API

Para configurar uma verificação de tempo de atividade para validar os dados de resposta, preencha a matriz contentMatchers do objeto UptimeCheckConfig.

Os objetos ContentMatcher contêm os seguintes campos:

  • matcher: descreve como é feita a comparação. Para ver uma lista de valores, consulte ContentMatcherOption.

    Não use o valor CONTENT_MATCHER_OPTION_UNSPECIFIED.

  • content: armazena o valor a pesquisar nos dados de resposta. O valor é uma string literal ou uma expressão regular.

  • jsonPathMatcher: armazena um objeto JsonPathMatcher que descreve o JSONpath a pesquisar e como fazer a comparação.

    Omita este campo, a menos que a verificação de tempo de atividade esteja a validar um JSONpath específico.

O resto deste documento descreve como usar as opções de correspondência de conteúdo.

Opções para validar os dados de resposta

Esta secção descreve as estratégias de correspondência de strings que pode usar para validar a resposta enviada por um recurso verificado. Para cada estratégia, especifica um valor e se a deteção desse valor nos dados de resposta faz com que a verificação do tempo de atividade seja aprovada ou reprovada.

Pode não ser possível pesquisar toda a resposta de um recurso verificado:

  • Verificações de tempo de atividade de HTTP e HTTPS: os primeiros 4 MB são pesquisados.
  • Verificações de tempo de atividade de TCP: é feita uma pesquisa no primeiro MB.

Pesquise uma substring literal

Google Cloud consola

Para configurar a verificação de tempo de atividade para ser aprovada quando os dados de resposta contiverem uma subcadeia literal, use as seguintes definições:

  1. Selecione Contém no menu Tipo de correspondência de conteúdo da resposta.
  2. Introduza a substring literal no campo Conteúdo da resposta.
  3. Para validar a configuração, clique em Testar.

Para configurar a verificação de tempo de atividade de modo a falhar quando os dados de resposta contiverem uma substring literal, use as seguintes definições:

  1. Selecione Não contém no menu Tipo de correspondência do conteúdo da resposta.
  2. Introduza a substring literal no campo Conteúdo da resposta.
  3. Para validar a configuração, clique em Testar.

Cloud Monitoring API

Para configurar a verificação de tempo de atividade para ser aprovada quando os dados de resposta contiverem uma subcadeia literal, use os seguintes valores:

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

Para configurar a verificação de tempo de atividade para falhar quando os dados de resposta contiverem uma substring literal, use os seguintes valores:

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

A tabela seguinte apresenta o estado da verificação de tempo de atividade para diferentes dados de resposta, strings de teste e tipos de testes:

Estado da verificação de tempo de atividade       
Dados de resposta String de teste Contém Não contém
abcd abcd passar falhar
abc abcd falhar passar
abc a passar falhar
Uptime Checks Uptime passar falhar
Uptime Checks uptime falhar passar

Na tabela anterior, a coluna Dados de resposta descreve os dados devolvidos pelo recurso selecionado, enquanto a coluna String de teste apresenta a string literal. As duas colunas seguintes especificam o tipo de teste e o resultado da verificação do tempo de atividade.

Pesquise através de uma expressão regular

Google Cloud consola

Para configurar a verificação de tempo de atividade para ser aprovada quando os dados de resposta corresponderem a uma expressão regular, use as seguintes definições:

  1. Selecione Corresponde à regex no menu Tipo de correspondência de conteúdo da resposta.
  2. Introduza uma expressão regular no campo Conteúdo da resposta.
  3. Para validar a configuração, clique em Testar.

Para configurar a verificação de tempo de atividade de modo a falhar quando os dados de resposta corresponderem a uma expressão regular, use as seguintes definições:

  1. Selecione Não corresponde à regex no menu Tipo de correspondência do conteúdo da resposta.
  2. Introduza uma expressão regular no campo Conteúdo da resposta.
  3. Para validar a configuração, clique em Testar.

Cloud Monitoring API

Para configurar a verificação de tempo de atividade para ser aprovada quando os dados de resposta corresponderem a uma expressão regular, use os seguintes valores:

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

Para configurar a verificação de tempo de atividade para falhar quando os dados de resposta corresponderem a uma expressão regular, use os seguintes valores:

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

A tabela seguinte apresenta o estado da verificação de tempo de atividade para diferentes dados de resposta, expressões regulares e tipos de testes:

Estado da verificação de tempo de atividade       
Dados de resposta Regex Corresponde à expressão regular Não corresponde à regex
abcd abcd passar falhar
Uptime Checks [uU]ptime passar falhar
Uptime Checks [a-z]{6} falhar passar
Uptime Checks [a-zA-Z]{6} passar falhar

Na tabela anterior, a coluna Dados de resposta descreve os dados devolvidos pelo recurso selecionado, enquanto a coluna Regex apresenta a expressão regular. As duas colunas seguintes especificam o tipo de teste e o resultado da verificação do tempo de atividade.

Pesquise um campo específico numa resposta JSON

Pode configurar uma verificação de tempo de atividade para validar um JSONpath. Quando seleciona um teste JSONpath, o teste compara um valor de caminho com um número, um literal de string ou uma expressão regular:

Quando especifica um JSONpath, tem de especificar o objeto raiz com $. e, em seguida, usar um identificador de campo específico. Quando a resposta JSON contém uma matriz de elementos, use parênteses retos, [], para identificar o elemento da matriz específico a corresponder. Os exemplos seguintes ilustram a sintaxe do caminho:

  • $.type corresponde ao campo type de um objeto raiz.
  • $.[0].address.city corresponde ao campo city no objeto address armazenado no primeiro elemento da matriz da resposta JSON.
  • $.content[0].phone corresponde ao campo phone do primeiro elemento da matriz do campo content. O campo content é um elemento secundário do objeto raiz.

Pode configurar um teste de tempo de atividade para corresponder a vários campos. Considere o JSON seguinte:

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

Para fazer corresponder todo o caminho do campo geo no primeiro elemento da matriz, defina o JSONpath como $.[0].address.geo e introduza o valor completo no campo de conteúdo:

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

Se tiver interesse em experimentar estas opções, procure um Website público que devolva uma resposta JSON.

Compare o JSONpath com um número ou um literal de string

Google Cloud consola

Para configurar a verificação de tempo de atividade para ser aprovada quando um JSONpath específico nos dados de resposta corresponder a um literal de string, use as seguintes definições:

  1. Selecione Correspondências no JSONPath no menu Tipo de correspondência de conteúdo da resposta.
  2. Introduza o caminho no campo JSONPath.
  3. Introduza o número ou o literal de string no campo Conteúdo da resposta.
  4. Para validar a configuração, clique em Testar.

Para configurar a verificação de tempo de atividade para falhar quando um JSONpath específico nos dados de resposta corresponder a um literal de string, use as seguintes definições:

  1. Selecione Não corresponde no JSONPath no menu Tipo de correspondência de conteúdo da resposta.
  2. Introduza o caminho no campo JSONPath.
  3. Introduza o número ou o literal de string no campo Conteúdo da resposta.
  4. Para validar a configuração, clique em Testar.

Cloud Monitoring API

Para configurar a verificação de tempo de atividade de modo a ser aprovada quando um campo específico na resposta formatada em JSON corresponder a um número ou a um literal de string, use os seguintes valores para o 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 a verificação de tempo de atividade de modo a falhar quando um campo específico na resposta formatada em JSON corresponder a um número ou a um literal de string, use os seguintes valores para o 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 como funcionam os testes de correspondência de strings JSONpath, considere os seguintes dados de resposta JSON:

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

A tabela seguinte apresenta o estado da verificação de tempo de atividade da resposta anterior, mas para diferentes caminhos, valores de teste e tipos de teste:

Estado da verificação de tempo de atividade       
JSONpath Valor de teste JSONpath matches O JSONpath não corresponde
$.type "JSONpath" passar falhar
$.name "Sample" falhar passar
$.name "Sample Uptime Check" passar falhar
$.content[0].id 1 passar falhar
$.content[0].alias "Exact" passar falhar
$.content[0].enabled true passar falhar

Na tabela anterior, a coluna JSONpath identifica o elemento a testar e a coluna Valor de teste apresenta o valor. As duas colunas seguintes especificam o tipo de teste e o resultado da verificação do tempo de atividade.

Compare o JSONpath com uma expressão regular

As correspondências de expressões regulares suportam a correspondência de uma string, um número, um valor booleano e valores JSON nulos.

Google Cloud consola

Para configurar a verificação de tempo de atividade para ser aprovada quando um JSONpath específico nos dados de resposta corresponder a uma expressão regular, use as seguintes definições:

  1. Selecione Correspondências no JSONPath no menu Tipo de correspondência de conteúdo da resposta.
  2. Introduza o caminho no campo JSONPath.
  3. Introduza a expressão regular no campo Conteúdo da resposta.
  4. Para validar a configuração, clique em Testar.

Para configurar a verificação de tempo de atividade de modo a falhar quando um JSONpath específico nos dados de resposta corresponder a uma expressão regular, use as seguintes definições:

  1. Selecione Não corresponde no JSONPath no menu Tipo de correspondência de conteúdo da resposta.
  2. Introduza o caminho no campo JSONPath.
  3. Introduza a expressão regular no campo Conteúdo da resposta.
  4. Para validar a configuração, clique em Testar.

Cloud Monitoring API

Para configurar a verificação de tempo de atividade para ser aprovada quando um campo específico na resposta formatada em JSON corresponde a uma expressão regular, use os seguintes valores para o 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 a verificação de tempo de atividade de modo a falhar quando um campo específico na resposta formatada em JSON corresponder a uma expressão regular, use os seguintes valores para o 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 como funcionam os testes de expressões regulares JSONpath, considere os seguintes dados de resposta JSON:

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

A tabela seguinte apresenta o estado da verificação de tempo de atividade da resposta anterior, mas para diferentes caminhos, expressões regulares e tipos de testes:

Estado da verificação de tempo de atividade       
JSONpath Regex O JSONpath corresponde à regex O JSONpath não corresponde à regex
$.type [A-Z]{4}Path passar falhar
$.name Sample falhar passar
$.name .*Sample.* passar falhar
$.content[1].id 2 passar falhar
$.content[1].phone "[12345]{2}" passar falhar
$.content[1].enabled f.* passar falhar

Na tabela anterior, a coluna JSONpath identifica o elemento a testar e a coluna Regex apresenta a expressão regular. As duas colunas seguintes especificam o tipo de teste e o resultado da verificação do tempo de atividade.

O que se segue?