Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Informacje o zasadzie OASValidation
Zasada OASValidation (OpenAPI Specification Validation) umożliwia sprawdzanie, czy przychodzące żądanie lub odpowiedź są sprawdzane ze specyfikacją OpenAPI 3.0 (JSON lub YAML). Zapoznaj się z sekcją Jakie treści są sprawdzane?
Zasada OASValidation określa nazwę specyfikacji OpenAPI, która ma być używana na potrzeby weryfikacji podczas wykonywania kroku, do którego została dołączona zasada.
Specyfikacja OpenAPI jest przechowywana jako zasób w tej standardowej lokalizacji w pakiecie serwera proxy interfejsów API: apiproxy/resources/oas
.
Specyfikacja OpenAPI musi mieć rozszerzenie .json
, .yml
, .yaml
.
Dodaj specyfikację OpenAPI jako zasób do pakietu proxy interfejsów API, korzystając z interfejsu użytkownika lub interfejsu API zgodnie z opisem w sekcji Zarządzanie zasobami.
Jakie treści są weryfikowane?
Poniższa tabela zawiera podsumowanie treści wiadomości z żądaniem weryfikowanej przez zasadę OASValidation w poszczególnych komponentach.
Komponenty | Poproś o weryfikację |
---|---|
Ścieżka podstawowa | Sprawdza ścieżkę podstawową zdefiniowaną przez serwer proxy interfejsu API. ignoruje ścieżkę bazową określoną w specyfikacji OpenAPI. |
Ścieżka | Sprawdza, czy ścieżka żądania (minus ścieżka bazowa) jest zgodna z jednym ze wzorców ścieżki zdefiniowanych w specyfikacji OpenAPI. |
Czasownik | Sprawdza, czy czasownik jest zdefiniowany dla ścieżki w specyfikacji OpenAPI. |
Treść wiadomości żądania |
Uwaga: zasada sprawdza poprawność treści wiadomości żądania pod kątem specyfikacji OpenAPI tylko wtedy, gdy Content-Type ma wartość
|
Parametry |
|
Poniższa tabela zawiera podsumowanie treści wiadomości odpowiedzi weryfikowanej przez zasadę OASValidation w poszczególnych komponentach.
Komponenty | Weryfikacja odpowiedzi |
---|---|
Ścieżka | Sprawdza, czy ścieżka żądania (minus ścieżka bazowa) jest zgodna z jednym ze wzorców ścieżki zdefiniowanych w specyfikacji OpenAPI. |
Czasownik | Sprawdza, czy czasownik jest zdefiniowany dla ścieżki w specyfikacji OpenAPI. |
Treść wiadomości z odpowiedzią |
|
Przykłady
Poniższe przykłady pokazują niektóre sposoby korzystania z OASValidation zasady weryfikacji wiadomości pod kątem specyfikacji OpenAPI 3.0.
Komunikat weryfikacji żądania
W poniższym przykładzie zasada myoaspolicy
weryfikuje treść wiadomości żądania pod kątem
schemat treści wiadomości żądania operacji zdefiniowany w specyfikacji OpenAPI my-spec.json
.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.json</OASResource> <Options> <ValidateMessageBody>true</ValidateMessageBody> </Options> <Source>request</Source> </OASValidation>
Jeśli treść wiadomości nie jest zgodna ze specyfikacją OpenAPI, zwracany jest błąd policies.oasvalidation.Failed
.
Zweryfikuj parametry
Poniższy przykład pokazuje, że zasada nie działa, jeśli w żądaniu określony jest nagłówek, zapytanie lub parametry pliku cookie, które nie są zdefiniowane w specyfikacji 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>
element
Definiuje zasadę walidacji specyfikacji OpenAPI.
Wartość domyślna | Zobacz kartę Zasady domyślne poniżej |
Wymagany? | Wymagane |
Typ | Złożony obiekt |
Element nadrzędny | nie dotyczy |
Elementy podrzędne |
<DisplayName> <OASResource> <Source> <Options> <Source> |
Składnia
Element <OASValidation>
ma taką składnię:
<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>
Domyślna zasada
Poniższy przykład pokazuje ustawienia domyślne, gdy dodajesz zasadę weryfikacji OAS do procesu w interfejsie 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>
Ten element ma te atrybuty, które są wspólne dla wszystkich zasad:
Atrybut | Domyślnie | Wymagany? | Description |
---|---|---|---|
name |
Nie dotyczy | Wymagane |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie użyj elementu |
continueOnError |
fałsz | Opcjonalnie | Ustaw wartość „false”, aby wyświetlać błąd, gdy zasada nie działa. To prawidłowy proces w przypadku większości zasad. Ustaw wartość „true”, aby kontynuować wykonywanie przepływu nawet po wystąpieniu błędu. |
enabled |
prawda | Opcjonalnie | Ustaw wartość „true”, aby egzekwować zasadę. Ustaw wartość „false”, aby wyłączyć zasadę. Zasada nie będzie egzekwowana, nawet jeśli pozostanie powiązana z przepływem. |
async |
fałsz | Wycofano | Ten atrybut został wycofany. |
Odniesienie do elementu podrzędnego
W tej sekcji opisano elementy podrzędne elementu <OASValidation>
.
<DisplayName>
Używaj oprócz atrybutu name
do oznaczania zasady w
edytor serwera proxy w interfejsie zarządzania o innej, bardziej naturalnie brzmiącej nazwie.
Element <DisplayName>
jest wspólny dla wszystkich zasad.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie: Jeśli pominiesz <DisplayName> , wartość pary klucz-wartość
jest używany atrybut name zasady |
Typ | Ciąg znaków |
Element nadrzędny | <PolicyElement> |
Elementy podrzędne | Brak |
Element <DisplayName>
ma taką składnię:
Składnia
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
Przykład
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
Element <DisplayName>
nie ma atrybutów ani elementów podrzędnych.
<OASResource>
Określa specyfikację OpenAPI, która ma zostać sprawdzona. Możesz zapisać ten plik:
- W zakresie serwera proxy interfejsu API w polu
/apiproxy/resources/oas
w pakiecie serwera proxy interfejsów API - W sekcji
Resources
w widoku Nawigator w edytorze serwera proxy interfejsu API.
Więcej informacji znajdziesz w artykule Zarządzanie zasobami.
Specyfikację OpenAPI możesz określić za pomocą szablonu wiadomości, np. {oas.resource.url}
.
W tym przypadku sprawdzana jest wartość zmiennej przepływu oas.resource.url
(w nawiasach klamrowych).
i zastępowane w ciągu ładunku w czasie działania.
Więcej informacji znajdziesz w artykule Szablony wiadomości.
Wartość domyślna | Brak |
Wymagany? | Wymagane |
Typ | Ciąg znaków |
Element nadrzędny |
<OASValidation>
|
Elementy podrzędne | Brak |
Składnia
Element <OASResource>
ma taką składnię:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> ... </OASValidation>
Przykład
Ten przykład odwołuje się do specyfikacji my-spec.yaml
przechowywanej na pozycji /apiproxy/resources/oas
w pakiecie serwerów proxy interfejsów API:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> </OASValidation>
Element <OASResource>
nie ma atrybutów ani elementów podrzędnych.
<Options>
Konfiguruje opcje zasady.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Typ złożony |
Element nadrzędny |
<OASValidation>
|
Elementy podrzędne |
<ValidateMessageBody> <AllowUnspecifiedParameters> |
Składnia
Element <Options>
ma taką składnię:
<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>
Przykład
Poniżej znajduje się przykład konfigurowania opcji zasad. Poniżej znajdziesz szczegółowe informacje na temat każdej z tych opcji.
<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>
Określa, czy zasada powinna sprawdzać treść wiadomości względem schematu treści żądania operacji w specyfikacji OpenAPI. Ustaw jako true, aby zweryfikować treść wiadomości. Ustaw wartość false, aby sprawdzić, czy treść wiadomości istnieje.
Możesz zdecydować, czy wykonywanie przepływu będzie kontynuowane po wystąpieniu błędu weryfikacji, ustawiając atrybut continueOnError
dla <OASValidation>
na true.
Wartość domyślna | fałsz |
Wymagany? | Opcjonalnie |
Typ | Wartość logiczna |
Element nadrzędny |
<Options>
|
Elementy podrzędne | Brak |
Składnia
Element <ValidateMessageBody>
ma taką składnię:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <ValidateMessageBody>[true|false]</ValidateMessageBody> </Options> ... </OASValidation>
Przykład
Poniższy przykład umożliwia sprawdzenie poprawności treści wiadomości:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <ValidateMessageBody>true</ValidateMessageBody> </Options> </OASValidation>
<AllowUnspecifiedParameters>
Konfiguruje działanie zasady w przypadku wystąpienia parametrów nagłówka, zapytania lub pliku cookie które nie są zdefiniowane w specyfikacji OpenAPI.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Typ złożony |
Element nadrzędny |
<Options>
|
Elementy podrzędne |
<Header> <Query> <Cookie> |
Składnia
Element <AllowUnspecifiedParameters>
ma taką składnię:
<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>
Przykład
Poniższy przykład pokazuje, że zasada nie działa, jeśli w żądaniu określony jest nagłówek, zapytanie lub parametry pliku cookie, które nie są zdefiniowane w specyfikacji 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>
(element podrzędny tagu <AllowUnspecifiedParameters>
)
Konfiguruje działanie zasady w przypadku parametrów nagłówka które nie są zdefiniowane w specyfikacji OpenAPI.
Aby umożliwić określenie w żądaniu parametrów nagłówka, które nie są zdefiniowane w specyfikacji OpenAPI, ustaw ten parametr na true. W przeciwnym razie ustaw wartość tego parametru na false, aby spowodować nieudane wykonanie zasady.
Wartość domyślna | prawda |
Wymagany? | Wartość logiczna |
Typ | Typ złożony |
Element nadrzędny |
<AllowUnspecifiedParameters>
|
Elementy podrzędne | Brak |
Składnia
Element <Header>
ma taką składnię:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <AllowUnspecifiedParameters> <Header>[true|false]</Header> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Przykład
W tym przykładzie skonfigurowano błąd zasady, jeśli w żądaniu określony jest parametr nagłówka, który nie jest zdefiniowane w specyfikacji OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Header>false</Header> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Query>
(element podrzędny tagu <AllowUnspecifiedParameters>
)
Konfiguruje zachowanie zasady w przypadku parametrów zapytania które nie są zdefiniowane w specyfikacji OpenAPI.
Aby umożliwić określenie w żądaniu parametrów zapytania, które nie są zdefiniowane w specyfikacji OpenAPI, ustaw ten parametr na true. W przeciwnym razie ustaw wartość tego parametru na false, aby spowodować nieudane wykonanie zasady.
Wartość domyślna | prawda |
Wymagany? | Wartość logiczna |
Typ | Typ złożony |
Element nadrzędny |
<AllowUnspecifiedParameters>
|
Elementy podrzędne | Brak |
Składnia
Element <Query>
ma taką składnię:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <AllowUnspecifiedParameters> <Query>[true|false]</Query> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Przykład
W tym przykładzie skonfigurowano błąd zasady, jeśli w żądaniu określony jest parametr zapytania, który nie jest zdefiniowane w specyfikacji OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Query>false</Query> </AllowUnspecifiedParameters> </Options> </OASValidation>
Konfiguruje działanie zasady w przypadku stosowania parametrów plików cookie które nie są zdefiniowane w specyfikacji OpenAPI.
Aby umożliwić określenie w żądaniu parametrów plików cookie, które nie są zdefiniowane w specyfikacji OpenAPI, ustaw ten parametr na true. W przeciwnym razie ustaw wartość tego parametru na false, aby spowodować nieudane wykonanie zasady.
Wartość domyślna | prawda |
Wymagany? | Wartość logiczna |
Typ | Typ złożony |
Element nadrzędny |
<AllowUnspecifiedParameters>
|
Elementy podrzędne | Brak |
Składnia
Element <Cookie>
ma taką składnię:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <AllowUnspecifiedParameters> <Query>[true|false]</Query> </AllowUnspecifiedParameters> </Options> ... </OASValidation>
Przykład
W tym przykładzie skonfigurowano błąd zasady, jeśli w żądaniu określony jest parametr zapytania, który nie jest zdefiniowane w specyfikacji OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Cookie>false</Cookie> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Source>
Komunikat JSON do oceny pod kątem ataków ładunku JSON. Najczęściej jest to wartość
request
, ponieważ musisz zwykle ocenić żądania przychodzące z aplikacji klienckich.
Aby ocenić wiadomości z odpowiedziami, ustaw na wartość response (odpowiedź).
Ustaw jako message, aby automatycznie ocenić wiadomość z prośbą.
gdy zasada jest dołączona do przepływu żądania, i komunikat z odpowiedzią, gdy zasada jest dołączona do odpowiedzi.
przepływu danych.
Wartość domyślna | żądanie |
Wymagany? | Opcjonalnie |
Typ | Ciąg znaków |
Element nadrzędny |
<Source>
|
Elementy podrzędne | Brak |
Składnia
Element <Source>
ma taką składnię:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Source>[message|request|response]</Source> ... </OASValidation>
Przykład
Ten przykład pozwala automatycznie ocenić wiadomość z żądaniem, gdy do procesu żądania jest dołączona zasada, oraz wiadomość z odpowiedzią, gdy zasada jest dołączona do przepływu odpowiedzi:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Source>message</Source> </OASValidation>
Element <Source>
nie ma atrybutów ani elementów podrzędnych.
Schematy
Każdy typ zasad jest definiowany przez schemat XML (.xsd
). Schematy zasad
są dostępne na GitHubie.
Kody błędów
W tej sekcji opisujemy kody błędów i komunikaty o błędach, które są zwracane, oraz zmienne błędów ustawiane przez Edge, gdy ta zasada wywołuje błąd. Te informacje są ważne, jeśli opracowujesz reguły dotyczące błędów do obsługi takich błędów. Więcej informacji znajdziesz w sekcjach Co musisz wiedzieć o błędach zasad i Postępowanie w przypadku błędów.
Błędy w czasie wykonywania
Te błędy mogą wystąpić podczas wykonywania zasady.
Kod błędu | Stan HTTP | Przyczyna | |
---|---|---|---|
steps.oasvalidation.Failed |
500 | Nie można zweryfikować treści wiadomości żądania pod kątem podanej specyfikacji OpenAPI. | |
steps.oasvalidation.SourceMessageNotAvailable |
500 |
Zmienna określona w elemencie |
|
steps.oasvalidation.NotMessageVariable |
500 |
Element |
build |
Błędy wdrażania
Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego te zasady.
Nazwa błędu | Przyczyna | |
---|---|---|
ResourceDoesNotExist |
Specyfikacja OpenAPI, do której odwołuje się element <OASResource> , nie istnieje.
|
|
ResourceCompileFailed |
Specyfikacja OpenAPI dołączonej do wdrożenia zawiera błędy, które uniemożliwiają jej skompilowanie. Ogólnie oznacza to, że specyfikacja nie jest poprawnie sformułowaną specyfikacją OpenAPI 3.0. | |
BadResourceURL |
Nie można przetworzyć specyfikacji OpenAPI, do której odwołuje się element <OASResource> . Ten błąd może wystąpić, jeśli plik nie jest plikiem JSON lub YAML albo adres URL pliku nie jest poprawnie określony.
|
Zmienne błędów
Te zmienne są ustawiane, gdy zasada wywołuje błąd w czasie działania. Więcej informacji znajdziesz w artykule Co musisz wiedzieć o błędach związanych z zasadami.
Zmienne | Gdzie | Przykład |
---|---|---|
fault.name="fault_name" |
fault_name to nazwa błędu podana w tabeli Błędy środowiska wykonawczego powyżej. Nazwa błędu to ostatnia część kodu. | fault.name Matches "ResourceDoesNotExist" |
oasvalidation.policy_name.failed |
policy_name to określona przez użytkownika nazwa zasady, która spowodowała błąd. | oasvalidation.myoaspolicy.failed = true |
Obsługiwane funkcje specyfikacji OpenAPI
Zasada OASValidation obsługuje funkcje specyfikacji OpenAPI, które zostały opisane w poniższej tabeli według kategorii. Lista zawiera też nieobsługiwane funkcje.
Kategoria | Obsługiwane | Nieobsługiwane |
---|---|---|
Formaty typów danych | wartość logiczna data data-godzina liczba zmiennoprzecinkowa liczba zmiennoprzecinkowa int32/int64 ipv4/ipv6 md5 sha1/sha256/sha512 ciąg znaków identyfikator URI uri-template UUID |
binarny bajt hasło |
Obiekt dyskryminatora | mapowanie propertyName |
Nie dotyczy |
Obiekt typu multimediów | schemat | kodowanie przykład Przykłady |
Obiekt operacji | parametry requestBody odpowiedzi zabezpieczenia (częściowa obsługa) |
wywołania zwrotne wycofane serwery |
Obiekt parametrów | allowEmptyValue w ( query , header , path )wymagane odpowiedzi schemat styl ( deepObject , form , formmatrix , label , pipeDelimited , simple , spaceDelimited )Uwaga: deepObject obsługuje tylko ciągi znaków. tablice i obiekty zagnieżdżone nie są obsługiwane.
|
allowReserved wycofane przykład przykłady treści |
Obiekt ścieżek | usuń pobierz głowa opcje parametry poprawka opublikuj Włącz log czasu zmienne |
serwery |
Obiekt treści żądania | application/json application/hal+json aplikacja/x-www-form-urlencoded (obiekt encoding nie jest obsługiwany)treść wymagane |
aplikacja/xml wieloczęściowy/dane formularzy tekst/zwykły tekst/xml |
Obiekt odpowiedzi | application/json application/hal+json aplikacja/x-www-form-urlencoded (obiekt encoding nie jest obsługiwany)treść nagłówki |
aplikacja/xml linki tekst/zwykły tekst/xml |
Obiekt odpowiedzi | domyślna Kod stanu HTTP |
Nie dotyczy |
Obiekt schematu | $ref DodatkoweWłaściwości (tylko wariant flagi parametru logicznego) allOf (ignorowane, jeśli additionalProperties ma wartość false )anyOf wyliczenie exclusiveMaximum/exclusiveMinimum format elementy maksimum/minimalne maxItems/minItems maxLength/minLength maxProperties/minProperties multipleOf nie dopuszczalna wartość null oneOf wzór właściwości wymagane tytuł typ uniqueItems |
wycofane przykład readOnly writeOnly XML |
Obiekt schematu zabezpieczeń | w (header , query ) (ignorowane, jeśli type ma wartość http )nazwa typ ( apiKey , http )
|
bearerFormat przepływy openIdConnectUrl schemat |
Obiekt serwera | url zmienne |
Wiele definicji serwerów |