Política de validação da OAS

Esta página aplica-se ao Apigee e ao Apigee Hybrid.

Veja a documentação do Apigee Edge.

Ícone de política

Acerca da política OASValidation

A política OASValidation (validação da especificação OpenAPI) permite-lhe validar uma mensagem de pedido ou resposta recebida em função de uma especificação OpenAPI 3.0, usando o formato JSON ou YAML. Consulte Que conteúdo é validado?

A política OASValidation especifica o nome da especificação OpenAPI a usar para validação quando o passo ao qual a política está anexada é executado. A especificação OpenAPI é armazenada como um recurso na seguinte localização padrão no pacote do proxy de API: apiproxy/resources/oas. O documento de especificação OpenAPI tem de ter uma extensão .json, .yml ou .yaml.

Adicione uma especificação OpenAPI como um recurso a um pacote de proxy de API através da IU ou da API, conforme descrito em Gerir recursos.

Esta política é uma política padrão e pode ser implementada em qualquer tipo de ambiente. Para obter informações sobre os tipos de políticas e a disponibilidade com cada tipo de ambiente, consulte Tipos de políticas.

Que conteúdo é validado?

A tabela seguinte resume o conteúdo da mensagem de pedido validado pela política OASValidation, por componente.

Componentes Pedir validação
Basepath Valida o caminho base definido pelo proxy de API; ignora o caminho base especificado na especificação OpenAPI.
Caminho Valida se o caminho do pedido (menos o caminho base) corresponde a um dos padrões de caminho definidos na especificação OpenAPI.
Verbo Valida se o verbo está definido para o caminho na especificação OpenAPI.
Corpo da mensagem de pedido
  • Valida a existência do corpo da mensagem no pedido, se necessário.
  • Opcionalmente, valida o corpo da mensagem em relação ao esquema do corpo do pedido da operação na especificação OpenAPI. Configure esta opção através de <ValidateMessageBody>

Nota: a política valida o corpo de uma mensagem de pedido em relação à especificação OpenAPI apenas se o Content-Type estiver definido como application/json. Se o tipo de conteúdo não estiver definido como application/json, a validação do corpo da mensagem de pedido é aprovada automaticamente (sem validar efetivamente o conteúdo).

Parâmetros
  • Valida se os parâmetros obrigatórios estão presentes no pedido, incluindo parâmetros de caminho, cabeçalho, consulta e cookies.
  • Valida se os valores dos parâmetros correspondem aos definidos na especificação OpenAPI.
  • Opcionalmente, valida se existem parâmetros no pedido que não estão definidos na especificação OpenAPI. Configure esta opção através de <AllowUnspecifiedParameters>

A tabela seguinte resume o conteúdo da mensagem de resposta validado pela política OASValidation, por componente.

Componentes Validação da resposta
Caminho Valida se o caminho do pedido (menos o caminho base) corresponde a um dos padrões de caminho definidos na especificação OpenAPI.
Verbo Valida se o verbo está definido para o caminho na especificação OpenAPI.
Corpo da mensagem de resposta
  • Valida a existência do corpo da mensagem na resposta, se necessário.
  • Valida se os cabeçalhos de resposta na especificação OpenAPI estão presentes na mensagem de resposta e se o valor dos cabeçalhos de resposta corresponde ao esquema.
  • Opcionalmente, valida o corpo da mensagem em relação ao esquema do corpo da resposta da operação na especificação OpenAPI. Configure esta opção através de <ValidateMessageBody>

Amostras

Os exemplos seguintes mostram algumas das formas como pode usar a política OASValidation para validar mensagens com base numa especificação OpenAPI 3.0.

Valide a mensagem de pedido

No exemplo seguinte, a política myoaspolicy valida o corpo da mensagem de pedido em relação ao esquema do corpo da mensagem de pedido da operação definido na my-spec.json especificação da OpenAPI.

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.json</OASResource>
   <Options>
      <ValidateMessageBody>true</ValidateMessageBody>
   </Options>
   <Source>request</Source>
</OASValidation>

Se o corpo da mensagem não estiver em conformidade com a especificação OpenAPI, é devolvido um erro policies.oasvalidation.Failed.

Valide os parâmetros

O exemplo seguinte configura a política para falhar se for especificado um cabeçalho, uma consulta ou parâmetros de cookies no pedido que não estejam definidos na especificação OpenAPI.

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Header>false</Header>
         <Query>false</Query>
         <Cookie>false</Cookie>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

<OASValidation> elemento

Define a política de validação da especificação OpenAPI.

Valor predefinido Consulte o separador Política predefinida abaixo
Obrigatório? Obrigatória
Tipo Objeto complexo
Elemento principal N/A
Elementos subordinados <DisplayName>
<OASResource>
<Source>
<Options>
<Source>

Sintaxe

O elemento <OASValidation> usa a seguinte sintaxe:

<OASValidation
  continueOnError="[true|false]"
  enabled="[true|false]"
  name="policy_name"
>
    <!-- All OASValidation child elements are optional except OASResource -->
    <DisplayName>policy_display_name</DisplayName>
    <OASResource>validation_JSON_or_YAML</OASResource>
    <Options>
        <ValidateMessageBody>[true|false]</ValidateMessageBody>
        <AllowUnspecifiedParameters>
            <Header>[true|false]</Header>
            <Query>[true|false]</Query>
            <Cookie>[true|false]</Cookie>
        </AllowUnspecifiedParameters>
    </Options>
    <Source>message_to_validate</Source>
</OASValidation>

Política predefinida

O exemplo seguinte mostra as predefinições quando adiciona uma política de validação de OAS ao seu fluxo na IU do Apigee:

<OASValidation continueOnError="false" enabled="true" name="OpenAPI-Spec-Validation-1">
    <DisplayName>OpenAPI Spec Validation-1</DisplayName>
    <Properties/>
    <Source>request</Source>
    <OASResource>oas://OpenAPI-Spec-Validation-1.yaml</OASResource>
</OASValidation>

Este elemento tem os seguintes atributos comuns a todas as políticas:

Atributo Predefinição Obrigatório? Descrição
name N/A Obrigatório

O nome interno da política. O valor do atributo name pode conter letras, números, espaços, hífenes, sublinhados e pontos finais. Este valor não pode exceder 255 carateres.

Opcionalmente, use o elemento <DisplayName> para etiquetar a política no editor de proxy da IU de gestão com um nome diferente em linguagem natural.

continueOnError falso Opcional Definido como false para devolver um erro quando uma política falha. Este comportamento é o esperado para a maioria das políticas. Definido como true para que a execução do fluxo continue mesmo depois de uma política falhar. Veja também:
enabled verdadeiro Opcional Defina como true para aplicar a política. Defina como false para desativar a política. A política não é aplicada, mesmo que permaneça anexada a um fluxo.
async   falso Descontinuado Este atributo foi descontinuado.

Referência de elemento secundário

Esta secção descreve os elementos subordinados de <OASValidation>.

<DisplayName>

Use em conjunto com o atributo name para etiquetar a política no editor de proxy da IU de gestão com um nome diferente e mais natural.

O elemento <DisplayName> é comum a todas as políticas.

Valor predefinido N/A
Obrigatório? Opcional. Se omitir <DisplayName>, é usado o valor do atributo name da política.
Tipo String
Elemento principal <PolicyElement>
Elementos subordinados Nenhum

O elemento <DisplayName> usa a seguinte sintaxe:

Sintaxe

<PolicyElement>
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  ...
</PolicyElement>

Exemplo

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

O elemento <DisplayName> não tem atributos nem elementos subordinados.

<OASResource>

Especifica a especificação OpenAPI para validação. Pode armazenar este ficheiro:

  • No âmbito do proxy de API em /apiproxy/resources/oas no pacote do proxy de API
  • Na secção Resources da vista Navigator do editor de proxy de API.

Para mais informações, consulte o artigo Faça a gestão dos recursos.

Pode especificar a especificação OpenAPI através de um modelo de mensagem, como {oas.resource.url}. Neste caso, o valor da variável de fluxo oas.resource.url (entre chavetas) vai ser avaliado e substituído na string de payload no momento da execução. Para mais informações, consulte o artigo Modelos de mensagens.

Valor predefinido Nenhum
Obrigatório? Obrigatória
Tipo String
Elemento principal <OASValidation>
Elementos subordinados Nenhum

Sintaxe

O elemento <OASResource> usa a seguinte sintaxe:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   ...
</OASValidation>

Exemplo

O exemplo seguinte faz referência à especificação my-spec.yaml que está armazenada em /apiproxy/resources/oas no pacote do proxy de API:

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
</OASValidation>

O elemento <OASResource> não tem atributos nem elementos subordinados.

<Options>

Configura opções para a política.

Valor predefinido N/A
Obrigatório? Opcional
Tipo Tipo complexo
Elemento principal <OASValidation>
Elementos subordinados <ValidateMessageBody>
<AllowUnspecifiedParameters>

Sintaxe

O elemento <Options> usa a seguinte sintaxe:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
      <ValidateMessageBody>[true|false]</ValidateMessageBody>
      <AllowUnspecifiedParameters>
         <Header>[true|false]</Header>
         <Query>[true|false]</Query>
         <Cookie>[true|false]</Cookie>
      </AllowUnspecifiedParameters>
   </Options>
   ...
</OASValidation>

Exemplo

O exemplo seguinte configura as opções da política. Cada uma das opções é descrita mais detalhadamente abaixo.

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <ValidateMessageBody>false</ValidateMessageBody>
      <AllowUnspecifiedParameters>
         <Header>false</Header>
         <Query>false</Query>
         <Cookie>false</Cookie>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

<ValidateMessageBody>

Especifica se a política deve validar o corpo da mensagem em relação ao esquema do corpo do pedido da operação na especificação OpenAPI. Definido como verdadeiro para validar o conteúdo do corpo da mensagem. Defina como false para validar apenas se o corpo da mensagem existe.

Pode controlar se a execução do fluxo continua após um erro de validação definindo o atributo continueOnError do elemento <OASValidation> como true.

Valor predefinido falso
Obrigatório? Opcional
Tipo Booleano
Elemento principal <Options>
Elementos subordinados Nenhum

Sintaxe

O elemento <ValidateMessageBody> usa a seguinte sintaxe:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
         <ValidateMessageBody>[true|false]</ValidateMessageBody>
   </Options>
   ...
</OASValidation>

Exemplo

O exemplo seguinte ativa a validação dos conteúdos do corpo da mensagem:

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <ValidateMessageBody>true</ValidateMessageBody>
   </Options>
</OASValidation>

<AllowUnspecifiedParameters>

Configura o comportamento da política se existirem parâmetros de cabeçalho, de consulta ou de cookies presentes no pedido que não estão definidos na especificação OpenAPI.

Valor predefinido N/A
Obrigatório? Opcional
Tipo Tipo complexo
Elemento principal <Options>
Elementos subordinados <Header>
<Query>
<Cookie>

Sintaxe

O elemento <AllowUnspecifiedParameters> usa a seguinte sintaxe:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Header>[true|false]</Header>
         <Query>[true|false]</Query>
         <Cookie>[true|false]</Cookie>
      </AllowUnspecifiedParameters>
   </Options>
   ...
</OASValidation>

Exemplo

O exemplo seguinte configura a política para falhar se for especificado um cabeçalho, uma consulta ou parâmetros de cookies no pedido que não estejam definidos na especificação OpenAPI.

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Header>false</Header>
         <Query>false</Query>
         <Cookie>false</Cookie>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

Configura o comportamento da política se existirem parâmetros de cabeçalho presentes no pedido que não estão definidos na especificação OpenAPI.

Para permitir que os parâmetros do cabeçalho sejam especificados no pedido que não estão definidos na especificação OpenAPI, defina este parâmetro como verdadeiro. Caso contrário, defina este parâmetro como false para fazer com que a execução da política falhe.

Valor predefinido verdadeiro
Obrigatório? Booleano
Tipo Tipo complexo
Elemento principal <AllowUnspecifiedParameters>
Elementos subordinados Nenhum

Sintaxe

O elemento <Header> usa a seguinte sintaxe:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Header>[true|false]</Header>
      </AllowUnspecifiedParameters>
   </Options>
   ...
</OASValidation>

Exemplo

O exemplo seguinte configura a política para falhar se um parâmetro de cabeçalho for especificado no pedido que não esteja definido na especificação OpenAPI.

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Header>false</Header>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

<Query> (filho de <AllowUnspecifiedParameters>)

Configura o comportamento da política se existirem parâmetros de consulta presentes no pedido que não estão definidos na especificação da OpenAPI.

Para permitir que os parâmetros de consulta sejam especificados no pedido que não estão definidos na especificação OpenAPI, defina este parâmetro como true. Caso contrário, defina este parâmetro como false para fazer com que a execução da política falhe.

Valor predefinido verdadeiro
Obrigatório? Booleano
Tipo Tipo complexo
Elemento principal <AllowUnspecifiedParameters>
Elementos subordinados Nenhum

Sintaxe

O elemento <Query> usa a seguinte sintaxe:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Query>[true|false]</Query>
      </AllowUnspecifiedParameters>
   </Options>
   ...
</OASValidation>

Exemplo

O exemplo seguinte configura a política para falhar se for especificado um parâmetro de consulta no pedido que não esteja definido na especificação OpenAPI.

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Query>false</Query>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

Configura o comportamento da política se existirem parâmetros de cookies presentes no pedido que não estão definidos na especificação da OpenAPI.

Para permitir que os parâmetros de cookies sejam especificados no pedido que não estão definidos na especificação OpenAPI, defina este parâmetro como verdadeiro. Caso contrário, defina este parâmetro como false para fazer com que a execução da política falhe.

Valor predefinido verdadeiro
Obrigatório? Booleano
Tipo Tipo complexo
Elemento principal <AllowUnspecifiedParameters>
Elementos subordinados Nenhum

Sintaxe

O elemento <Cookie> usa a seguinte sintaxe:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Query>[true|false]</Query>
      </AllowUnspecifiedParameters>
   </Options>
   ...
</OASValidation>

Exemplo

O exemplo seguinte configura a política para falhar se for especificado um parâmetro de consulta no pedido que não esteja definido na especificação OpenAPI.

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Options>
      <AllowUnspecifiedParameters>
         <Cookie>false</Cookie>
      </AllowUnspecifiedParameters>
   </Options>
</OASValidation>

<Source>

Mensagem JSON a ser avaliada em relação a ataques de payload JSON. Normalmente, esta opção está definida como request, uma vez que, normalmente, tem de avaliar os pedidos recebidos de apps de cliente. Defina como response para avaliar mensagens de resposta. Definido como message para avaliar automaticamente a mensagem de pedido quando a política está anexada ao fluxo de pedido e a mensagem de resposta quando a política está anexada ao fluxo de resposta.

Valor predefinido pedido
Obrigatório? Opcional
Tipo String
Elemento principal <Source>
Elementos subordinados Nenhum

Sintaxe

O elemento <Source> usa a seguinte sintaxe:

<OASValidation name="policy_name">
   <OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
   <Source>[message|request|response]</Source>
   ...
</OASValidation>

Exemplo

O exemplo seguinte avalia automaticamente a mensagem de pedido quando a política está anexada ao fluxo de pedidos e a mensagem de resposta quando a política está anexada ao fluxo de respostas:

<OASValidation name="myoaspolicy">
   <OASResource>oas://my-spec.yaml</OASResource>
   <Source>message</Source>
</OASValidation>

O elemento <Source> não tem atributos nem elementos subordinados.

Esquema para esta política

Cada tipo de política é definido por um esquema XML (.xsd). Para referência, os esquemas de políticas estão disponíveis no GitHub.

Códigos de erro

Esta secção descreve os códigos de falha e as mensagens de erro devolvidas, bem como as variáveis de falha definidas pelo Apigee quando esta política aciona um erro. Estas informações são importantes para saber se está a desenvolver regras de falhas para tratar falhas. Para saber mais, consulte o artigo O que precisa de saber acerca dos erros de políticas e Como processar falhas.

Erros de tempo de execução

Estes erros podem ocorrer quando a política é executada.

Código de falha Estado de HTTP Causa
steps.oasvalidation.Failed 400 Não é possível validar o corpo da mensagem de pedido em relação à especificação OpenAPI fornecida.
steps.oasvalidation.Failed 500 Não é possível validar o corpo da mensagem de resposta em relação à especificação OpenAPI fornecida.
steps.oasvalidation.SourceMessageNotAvailable 500

A variável especificada no elemento <Source> da política está fora do âmbito ou não pode ser resolvida.

steps.oasvalidation.NonMessageVariable 500

O elemento <Source> está definido para uma variável que não é do tipo message.

Erros de implementação

Estes erros podem ocorrer quando implementa um proxy que contém esta política.

Nome do erro Causa
ResourceDoesNotExist A especificação OpenAPI referenciada no elemento <OASResource> não existe.
ResourceCompileFailed A especificação OpenAPI incluída na implementação contém erros que impedem a sua compilação. Geralmente, isto indica que a especificação não é uma especificação OpenAPI 3.0 bem formada.
BadResourceURL Não é possível processar a especificação OpenAPI referenciada no elemento <OASResource>. Isto pode ocorrer se o ficheiro não for um ficheiro JSON ou YAML, ou se o URL do ficheiro não estiver especificado corretamente.

Variáveis de falha

Estas variáveis são definidas quando esta política aciona um erro no tempo de execução. Para mais informações, consulte o artigo O que precisa de saber sobre os erros de políticas.

Variável Descrição Exemplo
fault.category A categoria da falha. Quando a política rejeita um pedido, esta vai sempre conter Step. fault.category = "Step"
fault.name O nome da falha, conforme indicado na tabela Erros de tempo de execução acima. O nome da falha é a última parte do código de falha. fault.name Matches "ResourceDoesNotExist"
fault.reason O motivo da falha. É uma string legível que explica o motivo da falha. OASValidation OAS-1 with resource "oas://my-spec1.yaml": failed with reason: "[ERROR - POST operation not allowed on path '/persons/13'.: []]"
fault.subcategory A subcategoria da falha. Quando a política rejeita um pedido, esta vai sempre conter OASValidationFailure. fault.subcategory = "OASValidationFailure"
OASValidation.policy_name.failed policy_name é o nome especificado pelo utilizador da política que gerou a falha. OASValidation.myoaspolicy.failed = true

Funcionalidades das especificações da OpenAPI suportadas

A política OASValidation suporta as funcionalidades da especificação OpenAPI resumidas na tabela seguinte, por categoria. As funcionalidades que não são suportadas também são apresentadas.

Categoria Suportado Não suportado
Formatos de tipo de dados boolean
date
date-time
double
email
float
int32/int64
ipv4/ipv6
md5
sha1/sha256/sha512
string
uri
uri-template
uuid
binary
byte
password
Objeto discriminador mapping
propertyName
N/A
Objeto do tipo de suporte esquema encoding
example
examples
Objeto de operações parameters
requestBody
responses
security (suporte parcial)
callbacks
obsoletos
servidores
Objeto de parâmetros allowEmptyValue
in (query, header, path)
required
responses
schema
style (deepObject, form, formmatrix, label, pipeDelimited, simple, spaceDelimited)

Nota: deepObject suporta apenas parâmetros de string. As matrizes e os objetos aninhados não são suportados.
allowReserved
deprecated
example
examples
content
Objeto Paths delete
get
head
options
parameters
patch
post
put
trace
variables
servidores
Objeto do corpo do pedido application/json
application/hal+json
application/x-www-form-urlencoded (objeto encoding não suportado)
content
required
application/xml
multipart/form-data
text/plain
text/xml
Objeto de resposta application/json
application/hal+json
application/x-www-form-urlencoded (objeto encoding não suportado)
content
headers
application/xml
links
text/plain
text/xml
Objeto Responses default
Código de estado HTTP
N/A
Objeto de esquema $ref
additionalProperties (apenas variante de indicador booleano)
allOf (ignorada se additionalProperties for false)
anyOf
enum
exclusiveMaximum/exclusiveMinimum
format
items
maximum/minimum
maxItems/minItems
maxLength/minLength
maxProperties/minProperties
multipleOf
not
nullable
oneOf
pattern
properties
required
title
type
uniqueItems
deprecated
example
readOnly
writeOnly
xml
Objeto do esquema de segurança em (header, query) (ignorada se type for http)
name
type (apiKey, http)
bearerFormat
flows
openIdConnectUrl
scheme
Objeto do servidor url
variables
Várias definições de servidor

Usar padrões no esquema

A norma da especificação OpenAPI permite que as especificações estipulem um schema para descrever o tipo de dados de um parâmetro ou um campo. Para um parâmetro ou um campo do tipo string, o esquema também pode definir um pattern, que é uma expressão regular (regex) que define formas válidas para a string.

Por exemplo, considere o seguinte fragmento da especificação OpenAPI:

paths:
  /products/{product-id}:
    get:
      operationId: getProduct
      summary: Get product by id
      description: returns information regarding a product, by id
      parameters:
        - name: product-id
          in: path
          description: id of the product
          required: true
          schema:
            type: string
            pattern: '^\w{3}-\d{4}$'

Esta especificação requer que, para a operação getProduct, o parâmetro product-id esteja em conformidade com a regex fornecida, que estipula uma sequência de 3 carateres de palavras, um traço e 4 dígitos decimais.

A especificação OpenAPI remete para a norma de validação de esquemas JSON para definir formalmente o comportamento do padrão na validação do valor de string e para a norma JSON Schema Core para recomendações aos autores de esquemas relativamente ao conjunto restrito de sintaxe de expressões regulares. Essa norma recomenda que se evite a utilização de lookarounds (lookaheads e lookbehinds), referências anteriores e expressões de carateres octais, entre outras funcionalidades, em padrões nos documentos de especificação OpenAPI.

Por predefinição, o Apigee valida o documento de especificação OpenAPI referenciado pela política OASValidation e comunica erros se o documento de especificação não estiver bem formado. O Apigee também valida padrões de regex no seu documento de especificação e comunica os problemas encontrados.

É importante ter em atenção que, se usar funcionalidades de regex fora do subconjunto recomendado, o Apigee não valida a regex e suspende qualquer validação adicional do seu documento de especificação OpenAPI. Se existir um erro no documento ou na regex que usa uma funcionalidade fora do subconjunto recomendado, ou se a funcionalidade regex não for suportada pelo runtime do Apigee, o erro só é detetado no runtime quando a política é executada.

A tabela seguinte apresenta alguns exemplos.

Padrão Comportamento
^\w{3}-\d{4}$

O padrão é válido. Usa apenas funcionalidades de regex no subconjunto recomendado. O Apigee permite guardar ou importar o proxy e, no momento da execução, a política OASValidation funciona conforme previsto, validando o parâmetro em relação ao padrão.

^([a-z]\w{3}-\d{4}$

O padrão é inválido. Falta um parêntesis de fecho. O padrão não usa funcionalidades de regex fora do subconjunto recomendado. O Apigee comunica este erro no momento em que importa ou guarda o proxy de API.

^(?![a-z]\w{3}-\d{4}$

O padrão é inválido. Tal como no exemplo anterior, falta um parêntesis de fecho. No entanto, o Apigee não comunica este erro quando guarda ou importa o proxy de API, porque a regex está a usar uma antecipação negativa, que está fora do subconjunto recomendado de funcionalidades de regex. O erro só é detetado no tempo de execução quando a política é executada.

^(?![a-z])\w{3}-\d{4}$

O padrão é válido, mas usa uma antecipação negativa, que está fora do subconjunto recomendado de funcionalidades de regex. O Apigee suspende a validação do documento de especificação OpenAPI. Em tempo de execução, quando executa a política OASValidation que faz referência a uma especificação através deste padrão, uma vez que o tempo de execução do Apigee suporta efetivamente lookaheads negativos, o Apigee aplica corretamente esta regex para validar o valor do parâmetro.

^(a)?b(?(1)c|d)$

O padrão é válido, mas usa uma condição de grupo de captura, que está fora do subconjunto recomendado de funcionalidades de regex. O Apigee suspende a validação do documento de especificação OpenAPI. Em tempo de execução, quando executa a política OASValidation que faz referência a uma especificação através deste padrão, o Apigee devolve um erro, uma vez que o tempo de execução do Apigee não suporta esta funcionalidade de regex.

Recomendamos que use apenas o subconjunto de funcionalidades recomendado na sua regex para evitar falhas de tempo de execução.

Tópicos relacionados