Criterio OASValidation

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

icona delle norme

Informazioni sulle norme relative a OASValidation

Il criterio OASValidation (convalida della specifica OpenAPI) consente di convalidare un messaggio di richiesta o risposta in entrata in base a una specifica OpenAPI 3.0 utilizzando il formato JSON o YAML. Consulta la pagina Quali contenuti vengono convalidati?

Il criterio OASValidation specifica il nome della specifica OpenAPI da utilizzare per la convalida quando viene eseguito il passaggio a cui è associato il criterio. La specifica OpenAPI viene archiviata come risorsa nella seguente posizione standard all'interno del bundle del proxy API: apiproxy/resources/oas. Il documento della specifica OpenAPI deve avere un'estensione .json, .yml o .yaml.

Aggiungi una specifica OpenAPI come risorsa a un bundle di proxy API utilizzando l'interfaccia utente o l'API, come descritto in Gestire le risorse.

Questo criterio è un criterio standard e può essere implementato in qualsiasi tipo di ambiente. Per informazioni sui tipi di criteri e sulla loro disponibilità in base a ciascun tipo di ambiente, consulta Tipi di criteri.

Quali contenuti vengono convalidati?

La seguente tabella riepiloga i contenuti del messaggio di richiesta convalidati dal criterio OASValidation, per componente.

Componenti Convalida della richiesta
Percorso di base Convalida il percorso base definito dal proxy API e ignora il percorso base specificato nella specifica OpenAPI.
Percorso Verifica che il percorso della richiesta (meno il percorso base) corrisponda a uno dei pattern di percorso definiti nella specifica OpenAPI.
Verbo Convalida che il verbo sia definito per il percorso nella specifica OpenAPI.
Corpo del messaggio di richiesta
  • Se necessario, convalida l'esistenza del corpo del messaggio nella richiesta.
  • Se vuoi, convalida il corpo del messaggio in base allo schema del corpo della richiesta dell'operazione nella specifica OpenAPI. Configura questa opzione utilizzando <ValidateMessageBody>

Nota:il criterio convalida il corpo del messaggio di richiesta in base alla specifica OpenAPI solo se il Content-Type è impostato su application/json. Se il tipo di contenuto non è impostato su application/json, la convalida del corpo del messaggio di richiesta verrà superata automaticamente (senza convalidare effettivamente i contenuti).

Parametri
  • Verifica che nella richiesta siano presenti i parametri obbligatori, inclusi i parametri di percorso, intestazione, query e cookie.
  • Verifica che i valori dei parametri corrispondano a quelli definiti nella specifica OpenAPI.
  • Se vuoi, convalida se nella richiesta esistono parametri non definiti nella specifica OpenAPI. Configura questa opzione utilizzando <AllowUnspecifiedParameters>

La seguente tabella riassume i contenuti del messaggio di risposta convalidati dal criterio OASValidation, per componente.

Componenti Convalida della risposta
Percorso Verifica che il percorso della richiesta (meno il percorso base) corrisponda a uno dei pattern di percorso definiti nella specifica OpenAPI.
Verbo Convalida che il verbo sia definito per il percorso nella specifica OpenAPI.
Corpo del messaggio di risposta
  • Convalida l'esistenza del corpo del messaggio nella risposta, se necessario.
  • Verifica che le intestazioni di risposta nella specifica OpenAPI siano presenti nel messaggio di risposta e che il valore delle intestazioni di risposta corrisponda allo schema.
  • Se vuoi, convalida il corpo del messaggio in base allo schema del corpo della risposta dell'operazione nella specifica OpenAPI. Configura questa opzione utilizzando <ValidateMessageBody>

Esempi

I seguenti esempi mostrano alcuni dei modi in cui puoi utilizzare il criterio OASValidation per convalidare i messaggi in base a una specifica OpenAPI 3.0.

Messaggio di convalida della richiesta

Nell'esempio seguente, il criterio myoaspolicy convalida il corpo del messaggio di richiesta in base allo schema del corpo del messaggio di richiesta dell'operazione definito nella specifica OpenAPI my-spec.json.

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

Se il corpo del messaggio non è conforme alla specifica OpenAPI, viene restituito un errore policies.oasvalidation.Failed.

Convalida i parametri

L'esempio seguente configura il criterio in modo che non venga eseguito se nella richiesta viene specificato un parametro di intestazione, query o cookie non definito nella specifica 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>

Definisce il criterio di convalida della specifica OpenAPI.

Valore predefinito Consulta la scheda Criterio predefinito di seguito
Obbligatorio? Obbligatorio
Tipo Oggetto complesso
Elemento principale n/a
Elementi secondari <DisplayName>
<OASResource>
<Source>
<Options>
<Source>

Sintassi

La sintassi dell'elemento <OASValidation> è la seguente:

<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>

Norme predefinite

L'esempio seguente mostra le impostazioni predefinite quando aggiungi un criterio di convalida OAS al flusso nell'interfaccia utente di 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>

Questo elemento ha i seguenti attributi comuni a tutti i criteri:

Attributo Predefinito Obbligatorio? Descrizione
name N/D Obbligatorio

Il nome interno del criterio. Il valore dell'attributo name può contenere lettere, numeri, spazi, trattini, trattini bassi e punti. Questo valore non può superare i 255 caratteri.

Se vuoi, utilizza l'elemento <DisplayName> per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso in linguaggio naturale.

continueOnError falso Facoltativo Imposta su false per restituire un errore quando un criterio non va a buon fine. Questo è un comportamento previsto per la maggior parte dei criteri. Imposta su true per continuare l'esecuzione del flusso anche dopo un fallimento del criterio. Vedi anche:
enabled true Facoltativo Imposta su true per applicare il criterio. Imposta su false per disattivare il criterio. Il criterio non verrà applicato anche se rimane collegato a un flusso.
async   falso Ritirato Questo attributo è stato ritirato.

Riferimento all'elemento secondario

Questa sezione descrive gli elementi secondari di <OASValidation>.

<DisplayName>

Da utilizzare insieme all'attributo name per etichettare il criterio nell'editor proxy dell'interfaccia utente di gestione con un nome diverso e più naturale.

L'elemento <DisplayName> è comune a tutti i criteri.

Valore predefinito N/D
Obbligatorio? Facoltativo. Se ometti <DisplayName>, viene utilizzato il valore dell'attributo name del criterio.
Tipo Stringa
Elemento principale <PolicyElement>
Elementi secondari Nessuno

La sintassi dell'elemento <DisplayName> è la seguente:

Sintassi

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

Esempio

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

L'elemento <DisplayName> non ha attributi o elementi secondari.

<OASResource>

Specifica la specifica OpenAPI in base alla quale eseguire la convalida. Puoi archiviare questo file:

  • Nell'ambito del proxy API in /apiproxy/resources/oas nel bundle del proxy API
  • Nella sezione Resources della visualizzazione Navigator dell'editor del proxy API.

Per saperne di più, consulta Gestire le risorse.

Puoi specificare la specifica OpenAPI utilizzando un modello di messaggio, ad esempio {oas.resource.url}. In questo caso, il valore della variabile di flusso oas.resource.url (tra parentesi graffe) verrà valutato e sostituito nella stringa del payload in fase di runtime. Per ulteriori informazioni, vedi Modelli di messaggi.

Valore predefinito Nessuno
Obbligatorio? Obbligatorio
Tipo Stringa
Elemento principale <OASValidation>
Elementi secondari Nessuno

Sintassi

La sintassi dell'elemento <OASResource> è la seguente:

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

Esempio

L'esempio seguente fa riferimento alla specifica my-spec.yaml memorizzata in /apiproxy/resources/oas nel bundle proxy API:

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

L'elemento <OASResource> non ha attributi o elementi secondari.

<Options>

Configura le opzioni per il criterio.

Valore predefinito n/a
Obbligatorio? Facoltativo
Tipo Tipo complesso
Elemento principale <OASValidation>
Elementi secondari <ValidateMessageBody>
<AllowUnspecifiedParameters>

Sintassi

La sintassi dell'elemento <Options> è la seguente:

<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>

Esempio

L'esempio seguente configura le opzioni per il criterio. Di seguito sono descritte più dettagliatamente le varie opzioni.

<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>

Specifica se il criterio deve convalidare il corpo del messaggio in base allo schema del corpo della richiesta dell'operazione nella specifica OpenAPI. Imposta su true per convalidare i contenuti del corpo del messaggio. Imposta il valore false per convalidare solo l'esistenza del corpo del messaggio.

Puoi controllare se l'esecuzione del flusso continua dopo un errore di convalida impostando l'attributo continueOnError per l'elemento <OASValidation> su true.

Valore predefinito falso
Obbligatorio? Facoltativo
Tipo Booleano
Elemento principale <Options>
Elementi secondari Nessuno

Sintassi

La sintassi dell'elemento <ValidateMessageBody> è la seguente:

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

Esempio

L'esempio seguente consente la convalida dei contenuti del corpo del messaggio:

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

<AllowUnspecifiedParameters>

Configura il comportamento del criterio se nella richiesta sono presenti parametri di intestazione, query o cookie non definiti nella specifica OpenAPI.

Valore predefinito n/a
Obbligatorio? Facoltativo
Tipo Tipo complesso
Elemento principale <Options>
Elementi secondari <Header>
<Query>
<Cookie>

Sintassi

La sintassi dell'elemento <AllowUnspecifiedParameters> è la seguente:

<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>

Esempio

L'esempio seguente configura il criterio in modo che non venga eseguito se nella richiesta viene specificato un parametro di intestazione, query o cookie non definito nella specifica 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 il comportamento del criterio se nella richiesta sono presenti parametri di intestazione non definiti nella specifica OpenAPI.

Per consentire la specifica nella richiesta di parametri di intestazione non definiti nella specifica OpenAPI, imposta questo parametro su true. In caso contrario, imposta questo parametro su false per causare l'errore di esecuzione del criterio.

Valore predefinito true
Obbligatorio? Booleano
Tipo Tipo complesso
Elemento principale <AllowUnspecifiedParameters>
Elementi secondari Nessuno

Sintassi

La sintassi dell'elemento <Header> è la seguente:

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

Esempio

L'esempio seguente configura il criterio in modo che non vada a buon fine se nella richiesta viene specificato un parametro di intestazione non definito nella specifica OpenAPI.

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

<Query> (elemento figlio di <AllowUnspecifiedParameters>)

Configura il comportamento del criterio se nella richiesta sono presenti parametri di ricerca non definiti nella specifica OpenAPI.

Per consentire la specifica nella richiesta di parametri di ricerca non definiti nella specifica OpenAPI, imposta questo parametro su true. In caso contrario, imposta questo parametro su false per causare l'errore di esecuzione del criterio.

Valore predefinito true
Obbligatorio? Booleano
Tipo Tipo complesso
Elemento principale <AllowUnspecifiedParameters>
Elementi secondari Nessuno

Sintassi

La sintassi dell'elemento <Query> è la seguente:

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

Esempio

L'esempio seguente configura il criterio in modo che non vada a buon fine se nella richiesta è specificato un parametro di query non definito nella specifica OpenAPI.

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

Configura il comportamento del criterio se nella richiesta sono presenti parametri di cookie non definiti nella specifica OpenAPI.

Per consentire di specificare nella richiesta parametri cookie non definiti nella specifica OpenAPI, imposta questo parametro su true. In caso contrario, imposta questo parametro su false per causare l'errore di esecuzione del criterio.

Valore predefinito true
Obbligatorio? Booleano
Tipo Tipo complesso
Elemento principale <AllowUnspecifiedParameters>
Elementi secondari Nessuno

Sintassi

La sintassi dell'elemento <Cookie> è la seguente:

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

Esempio

L'esempio seguente configura il criterio in modo che non vada a buon fine se nella richiesta è specificato un parametro di query non definito nella specifica OpenAPI.

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

<Source>

Messaggio JSON da valutare in base agli attacchi di payload JSON. Di solito viene impostato su request, in quanto in genere dovrai valutare le richieste in entrata dalle app client. Imposta su response per valutare i messaggi di risposta. Imposta su message per valutare automaticamente il messaggio di richiesta quando il criterio è associato al flusso di richiesta e il messaggio di risposta quando il criterio è associato al flusso di risposta.

Valore predefinito richiesta
Obbligatorio? Facoltativo
Tipo Stringa
Elemento principale <Source>
Elementi secondari Nessuno

Sintassi

La sintassi dell'elemento <Source> è la seguente:

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

Esempio

L'esempio seguente valuta automaticamente il messaggio di richiesta quando il criterio è associato al flusso di richiesta e il messaggio di risposta quando il criterio è associato al flusso di risposta:

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

L'elemento <Source> non ha attributi o elementi secondari.

Schema di queste norme

Ogni tipo di norma è definito da uno schema XML (.xsd). Come riferimento, gli schemi delle norme sono disponibili su GitHub.

Codici di errore

Questa sezione descrive i codici di errore e i messaggi di errore restituiti e le variabili di errore impostate da Apigee quando questo criterio attiva un errore. Queste informazioni sono importanti se stai sviluppando regole di errore per gestire gli errori. Per scoprire di più, consulta Informazioni importanti sugli errori relativi alle norme e Gestione degli errori.

Errori di runtime

Questi errori possono verificarsi durante l'esecuzione del criterio.

Codice guasto Stato HTTP Causa
steps.oasvalidation.Failed 400 Il corpo del messaggio di richiesta non può essere convalidato in base alla specifica OpenAPI fornita.
steps.oasvalidation.Failed 500 Il corpo del messaggio di risposta non può essere convalidato in base alla specifica OpenAPI fornita.
steps.oasvalidation.SourceMessageNotAvailable 500

La variabile specificata nell'elemento <Source> del criterio non rientra nell'ambito o non può essere risolta.

steps.oasvalidation.NonMessageVariable 500

L'elemento <Source> è impostato su una variabile che non è di tipo message.

Errori di deployment

Questi errori possono verificarsi quando esegui il deployment di un proxy contenente questo criterio.

Nome dell'errore Causa
ResourceDoesNotExist La specifica OpenAPI a cui viene fatto riferimento nell'elemento <OASResource> non esiste.
ResourceCompileFailed La specifica OpenAPI inclusa nel deployment contiene errori che ne impediscono la compilazione. In genere, ciò indica che la specifica non è una specifica OpenAPI 3.0 ben formattata.
BadResourceURL La specifica OpenAPI a cui viene fatto riferimento nell'elemento <OASResource> non può essere elaborata. Questo può accadere se il file non è un file JSON o YAML o se l'URL del file non è specificato correttamente.

Variabili di errore

Queste variabili vengono impostate quando questo criterio attiva un errore in fase di runtime. Per ulteriori informazioni, consulta Informazioni importanti sugli errori relativi alle norme.

Variabile Descrizione Esempio
fault.category La categoria dell'errore. Quando il criterio rifiuta una richiesta, il valore sarà sempre Step. fault.category = "Step"
fault.name Il nome dell'errore, come indicato nella tabella Errori di runtime sopra. Il nome dell'errore è l'ultima parte del codice dell'errore. fault.name Matches "ResourceDoesNotExist"
fault.reason Il motivo dell'errore. Si tratta di una stringa leggibile che spiega il motivo dell'errore. OASValidation OAS-1 with resource "oas://my-spec1.yaml": failed with reason: "[ERROR - POST operation not allowed on path '/persons/13'.: []]"
fault.subcategory La sottocategoria dell'errore. Quando il criterio rifiuta una richiesta, il valore sarà sempre OASValidationFailure. fault.subcategory = "OASValidationFailure"
OASValidation.policy_name.failed policy_name è il nome specificato dall'utente del criterio che ha generato l'errore. OASValidation.myoaspolicy.failed = true

Funzionalità delle specifiche OpenAPI supportate

Il criterio OASValidation supporta le funzionalità della specifica OpenAPI riepilogate nella tabella seguente, per categoria. Sono elencate anche le funzionalità non supportate.

Categoria Supportato Non supportata
Formati dei tipi di dati boolean
date
date-time
double
email
float
int32/int64
ipv4/ipv6
md5
sha1/sha256/sha512
string
uri
uri-template
uuid
binario
byte
password
Oggetto discriminatore mapping
propertyName
N/D
Oggetto Tipo di media schema encoding
example
examples
Oggetto Operations parameters
requestBody
responses
security (partial support)
callback
server
non più supportati
Oggetto Parameters allowEmptyValue
in (query, header, path)
required
responses
schema
style (deepObject, form, formmatrix, label, pipeDelimited, simple, spaceDelimited)

Nota: deepObject supporta solo i parametri di stringa; gli array e gli oggetti nidificati non sono supportati.
allowReserved
deprecated
example
examples
content
Oggetto Paths delete
get
head
options
parameters
patch
post
put
trace
variables
server
Oggetto del corpo della richiesta application/json
application/hal+json
application/x-www-form-urlencoded (encoding object not supported)
content
required
application/xml
multipart/form-data
text/plain
text/xml
Oggetto Response application/json
application/hal+json
application/x-www-form-urlencoded (encoding object not supported)
content
headers
application/xml
links
text/plain
text/xml
Oggetto Responses default
Codice di stato HTTP
N/D
Oggetto schema $ref
additionalProperties (solo variante di flag booleano)
allOf (ignorato se additionalProperties è 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
Oggetto dello schema di sicurezza in (header, query) (ignorato se type è http)
nome
tipo (apiKey, http)
bearerFormat
flows
openIdConnectUrl
schema
Oggetto server url
variabili
Più definizioni di server

Utilizzo di pattern nello schema

Lo standard della specifica OpenAPI consente alle specifiche di stabilire un schema per descrivere il tipo di dati di un parametro o di un campo. Per un parametro o un campo di tipo stringa, lo schema può anche definire un pattern, ovvero un'espressione regolare (regex) che definisce le forme valide per la stringa.

Ad esempio, considera il seguente frammento della specifica 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}$'

Questa specifica richiede che, per l'operazione getProduct, il parametro product-id sia conforme alla regex specificata, che prevede una sequenza di 3 caratteri di parole, un trattino e 4 cifre decimali.

La specifica OpenAPI rimanda allo standard di convalida dello schema JSON per definire formalmente il comportamento del pattern nella convalida del valore di stringa e allo standard di base dello schema JSON per i consigli agli autori dello schema in merito all'insieme limitato di sintassi delle espressioni regolari. Quest'ultimo standard consiglia di evitare l'uso di ricerche in avanti e all'indietro, riferimenti a voci precedenti ed espressioni di caratteri octal, tra le altre funzionalità, all'interno dei pattern nei documenti della specifica OpenAPI.

Per impostazione predefinita, Apigee convalida il documento della specifica OpenAPI a cui fa riferimento il criterio OASValidation e segnala gli errori se il documento della specifica non è ben formato. Apigee convalida anche i pattern regex nel documento delle specifiche e segnala i problemi rilevati.

È importante notare che se utilizzi funzionalità regex al di fuori del sottoinsieme consigliato, Apigee non convaliderà la regex e sospenderà qualsiasi convalida aggiuntiva del documento della specifica OpenAPI. Se nel documento o nella regex è presente un errore che utilizza una funzionalità esterna al sottoinsieme consigliato o se la funzionalità regex non è supportata dal runtime Apigee, l'errore verrà rilevato solo in fase di esecuzione quando viene eseguito il criterio.

La tabella seguente fornisce alcuni esempi.

Pattern Comportamento
^\w{3}-\d{4}$

Il pattern è valido. Utilizza solo le funzionalità regex all'interno del sottoinsieme consigliato. Apigee consentirà il salvataggio o l'importazione del proxy e, in fase di esecuzione, il criterio OASValidation funzionerà come previsto, convalidando il parametro in base al pattern.

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

Il pattern non è valido; manca una parentesi di chiusura. Il pattern non utilizza funzionalità regex al di fuori del sottoinsieme consigliato. Apigee segnalerà questo errore al momento dell'importazione o del salvataggio del proxy API.

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

Il pattern non è valido. Come nell'esempio precedente, manca una parentesi di chiusura. Tuttavia, Apigee non segnalerà questo errore al momento del salvataggio o dell'importazione del proxy API, perché la regex utilizza una ricerca anticipata negativa, che non rientra nel sottoinsieme consigliato delle funzionalità regex. L'errore verrà rilevato solo in fase di esecuzione del criterio.

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

Il pattern è valido, ma utilizza una ricerca anticipata negativa, che non rientra nel sottoinsieme consigliato di funzionalità regex. Apigee sospenderà la convalida del documento della specifica OpenAPI. In fase di esecuzione, quando esegui il criterio OASValidation che fa riferimento a una specifica che utilizza questo pattern, poiché il runtime Apigee supporta effettivamente le anticipazioni negative, Apigee applicherà correttamente questa regex per convalidare il valore parametro.

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

Il pattern è valido, ma utilizza un gruppo di cattura condizionale, che non rientra nel sottoinsieme consigliato di funzionalità regex. Apigee sospenderà la convalida del documento della specifica OpenAPI. In fase di runtime, quando esegui il criterio OASValidation che fa riferimento a una specifica che utilizza questo pattern, Apigee restituirà un errore perché il runtime Apigee non supporta questa funzionalità regex.

Per evitare errori di runtime, ti consigliamo di utilizzare solo il sottoinsieme di funzionalità consigliate nella regex.

Argomenti correlati