Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
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 |
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
|
Parâmetros |
|
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 |
|
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 Opcionalmente, use o elemento |
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>
<Header>
(filho de <AllowUnspecifiedParameters>
)
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 |
steps.oasvalidation.NonMessageVariable |
500 |
O elemento |
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 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.