Política OASValidation

Esta página se aplica à Apigee e à Apigee híbrida.

Confira a documentação da Apigee Edge.

Ícone da política

Sobre a política OASValidation

A política OASValidation (Validação da especificação OpenAPI) permite que você valide uma solicitação de entrada ou mensagem de resposta em relação a uma especificação OpenAPI 3.0, no formato JSON ou YAML. Consulte Qual conteúdo é validado?

A política OASValidation especifica o nome da especificação OpenAPI a ser usada para validação quando a etapa a que a política está anexada é executada. A especificação OpenAPI é armazenada como um recurso no seguinte local padrão no pacote de proxy da API: apiproxy/resources/oas. O documento de especificação da OpenAPI precisa ter uma extensão .json, .yml ou .yaml.

Adicione uma especificação OpenAPI como um recurso a um pacote de proxy de API usando a IU ou a API, conforme descrito em Gerenciar recursos.

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

Qual conteúdo é validado?

A tabela a seguir resume o conteúdo da mensagem de solicitação validado pela política OASValidation, por componente.

Componentes Validação da solicitação
Caminho base Valida o caminho base definido pelo proxy de API. Ignora o caminho base definido na especificação OpenAPI.
Caminho Valida se o caminho da solicitação (menos o caminho base) corresponde a um dos padrões de caminho definidos na especificação OpenAPI.
Verbo Valida se o verbo foi definido para o caminho na especificação OpenAPI.
Corpo da mensagem da solicitação
  • Valida a existência do corpo da mensagem na solicitação, se necessário.
  • Opcionalmente, valida o corpo da mensagem com o esquema de corpo da solicitação da operação na especificação OpenAPI. Configure essa opção usando <ValidateMessageBody>

Observação: a política valida um corpo de mensagem de solicitação com a especificação OpenAPI apenas se o Content-Type está definido como application/json. Se o tipo de conteúdo não for definido como application/json, a validação do corpo da mensagem de solicitação será aprovada automaticamente (sem realmente validar o conteúdo).

Parâmetros
  • Valida se os parâmetros necessários estão presentes na solicitação, incluindo os parâmetros de caminho, cabeçalho, consulta e cookie.
  • Valida se os valores de parâmetro correspondem aos definidos na especificação OpenAPI.
  • Opcionalmente, valida se existem parâmetros na solicitação que não estão definidos na especificação OpenAPI. Configure essa opção usando <AllowUnspecifiedParameters>

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

Componentes Validação da resposta
Caminho Valida se o caminho da solicitação (menos o caminho base) corresponde a um dos padrões de caminho definidos na especificação OpenAPI.
Verbo Valida se o verbo foi definido para o caminho na especificação OpenAPI.
Corpo da mensagem da 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 com o esquema de corpo de resposta da operação na especificação OpenAPI. Configure essa opção usando <ValidateMessageBody>

Amostras

Os exemplos a seguir mostram algumas das maneiras em que é possível usar a política OASValidation para validar mensagens em uma especificação OpenAPI 3.0.

Validar a mensagem de solicitação

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

<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, um erro policies.oasvalidation.Failed será retornado.

Validar parâmetros

O exemplo a seguir configura a política para falhar se um parâmetro de cabeçalho, consulta ou cookie for especificado na solicitação que não foi definida 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>

Elemento <OASValidation>

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

Valor padrão Consulte a guia Política padrão a seguir
Obrigatório? Obrigatório
Tipo Objeto complexo
Elemento pai n/a
Elemento filho <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 padrão

O exemplo a seguir mostra as configurações padrão quando você adiciona uma política de validação de OAS ao seu fluxo na IU da 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 a elementos filhos

Esta seção descreve os elementos filhos 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>

Define a especificação OpenAPI para usar na validação. Você pode armazenar este arquivo:

  • No escopo do proxy da API em /apiproxy/resources/oas no pacote de proxy de API
  • Na seção Resources da visualização do navegador do editor de proxy de API.

Para mais informações, consulte Gerenciar recursos.

É possível definir a especificação OpenAPI usando um modelo de mensagem, como {oas.resource.url}. Nesse caso, o valor da variável de fluxo oas.resource.url (entre chaves) será avaliado e substituído na string de payload no ambiente de execução. Para mais informações, consulte Modelos de mensagem.

Valor padrão Nenhum
Obrigatório? Obrigatório
Tipo String
Elemento pai <OASValidation>
Elemento filho Nenhum

Sintaxe

O elemento <OASResource> usa a seguinte sintaxe:

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

Exemplo

O exemplo a seguir refere-se à especificação my-spec.yaml armazenada em /apiproxy/resources/oas no pacote de proxy de API:

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

O elemento <OASResource> não tem atributos ou elementos filhos.

<Options>

Configura as opções da política.

Valor padrão n/a
Obrigatório? Opcional
Tipo Tipo complexo
Elemento pai <OASValidation>
Elemento filho <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

No exemplo a seguir, configuramos as opções da política. Cada uma das opções está 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 com o esquema de corpo da solicitação da operação na especificação OpenAPI. Defina como true para validar o conteúdo do corpo da mensagem. Defina como false para validar apenas que o corpo da mensagem existe.

Você pode controlar se a execução do fluxo continuará após um erro de validação definindo o atributo continueOnError do elemento <OASValidation> como true.

Valor padrão false
Obrigatório? Opcional
Tipo Booleano
Elemento pai <Options>
Elemento filho 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 a seguir permite a validação do conteúdo 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 quando há parâmetros de cabeçalho, consulta ou cookie presentes na solicitação que não estão definidos na especificação OpenAPI.

Valor padrão n/a
Obrigatório? Opcional
Tipo Tipo complexo
Elemento pai <Options>
Elemento filho <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 a seguir configura a política para falhar se um parâmetro de cabeçalho, consulta ou cookie for especificado na solicitação que não foi definida 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 quando há parâmetros de cabeçalho na solicitação que não estão definidos na especificação OpenAPI.

Para permitir que os parâmetros do cabeçalho sejam especificados na solicitação que não estejam definidos na especificação OpenAPI, defina esse parâmetro como true. Caso contrário, defina esse parâmetro como false para que a execução da política falhe.

Valor padrão true
Obrigatório? Booleano
Tipo Tipo complexo
Elemento pai <AllowUnspecifiedParameters>
Elemento filho 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

No exemplo a seguir, a política falhará se um parâmetro de cabeçalho for especificado na solicitação não definida 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 quando há parâmetros de consulta na solicitação que não estão definidos na especificação OpenAPI.

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

Valor padrão true
Obrigatório? Booleano
Tipo Tipo complexo
Elemento pai <AllowUnspecifiedParameters>
Elemento filho 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

No exemplo a seguir, a política falha se um parâmetro de consulta é especificado na solicitação que não foi definida 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 quando há parâmetros de cookies presentes na solicitação que não estão definidos na especificação OpenAPI.

Para permitir que parâmetros de cookie sejam especificados em uma solicitação não definida na especificação OpenAPI, configure esse parâmetro como true. Caso contrário, defina esse parâmetro como false para que a execução da política falhe.

Valor padrão true
Obrigatório? Booleano
Tipo Tipo complexo
Elemento pai <AllowUnspecifiedParameters>
Elemento filho 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

No exemplo a seguir, a política falha se um parâmetro de consulta é especificado na solicitação que não foi definida 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 ao ataques de payload JSON. Geralmente, essa configuração é definida como request, já que você normalmente precisará avaliar as solicitações recebidas de apps clientes. Defina como response para avaliar as mensagens de resposta. Defina como message para avaliar automaticamente a mensagem de solicitação quando a política estiver anexada ao fluxo de solicitação e a mensagem de resposta quando a política estiver anexada ao fluxo de resposta.

Valor padrão solicitação
Obrigatório? Opcional
Tipo String
Elemento pai <Source>
Elemento filho 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 a seguir avalia automaticamente a mensagem de solicitação quando a política está anexada ao fluxo de solicitação e a mensagem de resposta quando a política está anexada ao fluxo de resposta:

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

O elemento <Source> não tem atributos ou elementos filhos.

Esquema para esta política

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

Códigos de erro

This section describes the fault codes and error messages that are returned and fault variables that are set by Apigee when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause
steps.oasvalidation.Failed 400 The Request message body cannot be validated against the provided OpenAPI Specification.
steps.oasvalidation.Failed 500 The Response message body cannot be validated against the provided OpenAPI Specification.
steps.oasvalidation.SourceMessageNotAvailable 500

Variable specified in the <Source> element of the policy is either out of scope or cannot be resolved.

steps.oasvalidation.NonMessageVariable 500

<Source> element is set to a variable that is not of type message.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause
ResourceDoesNotExist OpenAPI Specification referenced in the <OASResource> element does not exist.
ResourceCompileFailed OpenAPI Specification that is included in the deployment contains errors that prevent it from being compiled. This generally indicates that the specification is not a well-formed OpenAPI Specification 3.0.
BadResourceURL OpenAPI Specification referenced in the <OASResource> element cannot be processed. This can occur if the file is not a JSON or YAML file or the file URL is not specified correctly.

Fault variables

These variables are set when this policy triggers an error at runtime. For more information, see What you need to know about policy errors.

Variable Description Example
fault.category The category of the fault. When the policy rejects a request, this will always hold Step. fault.category = "Step"
fault.name The name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "ResourceDoesNotExist"
fault.reason The reason for the fault. It is a human-readable string explaining the reason for the fault. OASValidation OAS-1 with resource "oas://my-spec1.yaml": failed with reason: "[ERROR - POST operation not allowed on path '/persons/13'.: []]"
fault.subcategory The subcategory of the fault. When the policy rejects a request, this will always hold OASValidationFailure. fault.subcategory = "OASValidationFailure"
OASValidation.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. OASValidation.myoaspolicy.failed = true

Recursos compatíveis das especificações OpenAPI

A política OASValidation é compatível com os recursos de especificação OpenAPI resumidos na tabela a seguir por categoria. Os recursos que não são compatíveis também estão listados.

Categoria Compatível Indisponível
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 de tipo de mídia schema encoding
example
examples
Objeto de operações parameters
requestBody
responses
security (suporte parcial)
callbacks
deprecated
servers
Objeto de parâmetros allowEmptyValue
em (query, header, path)
required
responses
schema
style (deepObject, form, formmatrix, label, pipeDelimited, simple, spaceDelimited)

Observação: deepObject permite apenas parâmetros de string. As matrizes e os objetos aninhados não são permitidos.
allowReserved
deprecated
example
examples
content
Objeto de caminhos delete
get
head
options
parameters
patch
post
put
trace
variables
servers
Objeto de corpo da solicitação application/json
application/hal+json
application/x-www-form-urlencoded (objeto encoding não permitido)
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 permitido)
content
headers
application/xml
links
text/plain
text/xml
Objeto de respostas default
HTTP Status Code
N/A
Objeto de esquema $ref
additionalProperties (apenas variante da sinalização booleana)
allOf (ignorado 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) (ignorado se type for http)
name
type (apiKey, http)
bearerFormat
flows
openIdConnectUrl
scheme
Objeto de servidor url
variables
Várias definições de servidor

Como usar padrões no esquema

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

Por exemplo, considere o seguinte fragmento de 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}$'

Essa especificação exige que, para a operação getProduct, o parâmetro product-id esteja em conformidade com o regex especificado, que estipula uma sequência de três caracteres de palavras, um traço e quatro dígitos decimais.

A especificação OpenAPI segue para o padrão de validação de esquema JSON para definir formalmente o comportamento do padrão na validação do valor da string e para o Padrão JSON Schema Core para recomendações aos autores de esquema sobre o conjunto restrito da sintaxe da expressão regular. Nesse último padrão, recomendamos evitar o uso de lookarounds (aspectos prévios e posteriores), referências anteriores e expressões de caracteres octal, entre outros recursos, dentro de padrões dentro dos documentos de especificação da OpenAPI.

Por padrão, a Apigee valida o documento de especificação OpenAPI referenciado pela política OASValidation e informa erros se o documento de especificação não for bem formado. A Apigee também valida padrões de regex no documento de especificações e relata os problemas encontrados lá.

É importante observar que, se você usar recursos de regex fora do subconjunto recomendado, a Apigee não validará o regex e suspenderá qualquer validação adicional do documento de especificação da OpenAPI. Se houver um erro no documento ou no regex que usa um recurso fora do subconjunto recomendado, ou se o recurso de regex não for compatível com o ambiente de execução da Apigee, o erro será detectado apenas no ambiente de execução quando a política é executada.

Confira alguns exemplos na tabela a seguir.

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

O padrão é válido. Ele usa apenas recursos de regex dentro do subconjunto recomendado. A Apigee vai permitir o salvamento ou a importação do proxy. No ambiente de execução, a política OASValidation vai funcionar conforme o esperado, validando o parâmetro de acordo com o padrão.

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

O padrão é inválido. está faltando um parêntese de fechamento. O padrão não usa recursos de regex fora do subconjunto recomendado. A Apigee informará esse erro quando você importar ou salvar seu proxy de API.

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

O padrão é inválido. Como no exemplo anterior, está faltando um parêntese de fechamento. No entanto, a Apigee não informará esse erro quando você salvar ou importar o proxy de API, porque o regex está usando uma prévia negativa, que está fora do subconjunto recomendado de recursos de regex. O erro só será detectado no ambiente de execução quando a política for executada.

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

O padrão é válido, mas usa uma prévia negativa, que está fora do subconjunto recomendado de recursos de regex. A Apigee suspenderá a validação do documento de especificação da OpenAPI. No ambiente de execução, quando você executa a política OASValidation que se refere a uma especificação usando esse padrão, porque o ambiente de execução da Apigee oferece suporte a Lookaheads negativos, a Apigee vai aplicar corretamente esse regex para validar o valor do parâmetro.

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

O padrão é válido, mas usa um condicional de grupo de captura, que está fora do subconjunto recomendado de recursos de regex. A Apigee suspenderá a validação do documento de especificação da OpenAPI. No ambiente de execução, quando você executa a política OASValidation que se refere a uma especificação usando esse padrão, porque o ambiente de execução da Apigee não é compatível com esse recurso de regex, a Apigee retornará um erro.

Recomendamos usar apenas o subconjunto recomendado de recursos no seu regex para evitar falhas no ambiente de execução.

Temas relacionados