Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Zasady dotyczące OASValidation
Zasada OASValidation (weryfikacja specyfikacji OpenAPI) umożliwia sprawdzanie przychodzących żądań lub odpowiedzi pod kątem zgodności ze specyfikacją OpenAPI 3.0 (w formacie JSON lub YAML). Zobacz Jakie treści są weryfikowane?
Zasada OASValidation określa nazwę specyfikacji OpenAPI, której należy używać do weryfikacji podczas wykonywania kroku, do którego jest ona dołączona.
Specyfikacja OpenAPI jest przechowywana jako zasób w standardowej lokalizacji w pakiecie interfejsu API: apiproxy/resources/oas
.
Specyfikacja OpenAPI musi mieć rozszerzenie .json
, .yml
lub .yaml
.
Dodaj specyfikację OpenAPI jako zasób do pakietu interfejsu proxy API za pomocą interfejsu użytkownika lub interfejsu API zgodnie z opisem w artykule Zarządzanie zasobami.
Jakie treści są weryfikowane?
W tabeli poniżej podano treści żądania weryfikowane przez zasady OASValidation według komponentu.
Komponenty | Poproś o weryfikację |
---|---|
Basepath | Weryfikuje ścieżkę podstawową zdefiniowaną przez serwer proxy interfejsu API; ignoruje ścieżkę podstawową określoną w specyfikacji OpenAPI. |
Ścieżka | Sprawdza, czy ścieżka żądania (bez ścieżki podstawowej) pasuje do jednego z wzorców ścieżek zdefiniowanych w specyfikacji OpenAPI. |
Czasownik | Sprawdza, czy czasownik jest zdefiniowany dla ścieżki w specyfikacji OpenAPI. |
Treść żądania |
Uwaga: zasada weryfikuje treść żądania pod kątem specyfikacji OpenAPI tylko wtedy, gdy Content-Type jest ustawiony na |
Parametry |
|
Poniższa tabela zawiera podsumowanie treści wiadomości z odpowiedzią, które są sprawdzane przez zasadę OASValidation, według komponentu.
Komponenty | Weryfikacja odpowiedzi |
---|---|
Ścieżka | Sprawdza, czy ścieżka żądania (bez ścieżki podstawowej) pasuje do jednego z wzorców ścieżek zdefiniowanych w specyfikacji OpenAPI. |
Czasownik | Sprawdza, czy czasownik jest zdefiniowany dla ścieżki w specyfikacji OpenAPI. |
Treść odpowiedzi |
|
Przykłady
Poniższe przykłady pokazują, jak można używać reguły OASValidation do sprawdzania wiadomości pod kątem zgodności ze specyfikacją OpenAPI 3.0.
Weryfikowanie wiadomości z prośbą
W tym przykładzie zasady myoaspolicy
weryfikują treść wiadomości z żądaniem pod kątem schematu treści żądania operacji zdefiniowanego 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
.
Weryfikacja parametrów
W tym przykładzie konfigurujemy zasadę tak, aby nie działała, jeśli w żądaniu jest określony parametr nagłówka, zapytania lub pliku cookie, który nie jest zdefiniowany 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>
Element <OASValidation>
Definiuje zasadę weryfikacji specyfikacji OpenAPI.
Wartość domyślna | Zobacz kartę Domyślne zasady poniżej. |
Wymagany? | Wymagane |
Typ | Obiekt złożony |
Element nadrzędny | nie dotyczy |
Elementy podrzędne |
<DisplayName> <OASResource> <Source> <Options> <Source> |
Składnia
Element <OASValidation>
używa tej 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ślne zasady
Ten przykład pokazuje ustawienia domyślne po dodaniu do przepływu w interfejsie Apigee zasady weryfikacji OAS:
<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. |
Odwołanie do elementu podrzędnego
W tej sekcji opisujemy elementy podrzędne elementu <OASValidation>
.
<DisplayName>
Oprócz atrybutu name
możesz użyć innej, bardziej naturalnie brzmiącej nazwy, aby oznaczyć zasadę w edytorze proxy w interfejsie zarządzania.
Element <DisplayName>
jest wspólny dla wszystkich zasad.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie: Jeśli pominiesz parametr <DisplayName> , zostanie użyta wartość atrybutu name zasady. |
Typ | Ciąg znaków |
Element nadrzędny | <PolicyElement> |
Elementy podrzędne | Brak |
Element <DisplayName>
używa tej 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, według której ma być przeprowadzana weryfikacja. Plik możesz przechowywać:
- W zakresie proxy interfejsu API w sekcji
/apiproxy/resources/oas
w pakiecie proxy interfejsu API - W sekcji
Resources
w widoku Navigatora w edytorze przekierowania 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 wartość zmiennej przepływu oas.resource.url
(w nawiasach klamrowych) zostanie obliczona i zastąpiona w ciągu danych 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>
używa tej składni:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> ... </OASValidation>
Przykład
W tym przykładzie odwołujemy się do specyfikacji my-spec.yaml
, która jest przechowywana w pliku /apiproxy/resources/oas
w pakiecie interfejsu API:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> </OASValidation>
Element <OASResource>
nie ma atrybutów ani elementów podrzędnych.
<Opcje>
Konfiguruje opcje zasady.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Złożony |
Element nadrzędny |
<OASValidation>
|
Elementy podrzędne |
<ValidateMessageBody> <AllowUnspecifiedParameters> |
Składnia
Element <Options>
używa tej 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
W tym przykładzie konfigurujemy opcje zasady. Poniżej znajdziesz szczegółowe omówienie każdej z nich.
<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 zasady mają sprawdzać poprawność treści wiadomości na podstawie schematu treści żądania operacji w specyfikacji OpenAPI. Ustaw jako true, aby zweryfikować zawartość treści wiadomości. Ustaw na false, aby sprawdzić tylko istnienie treści wiadomości.
Aby określić, czy wykonanie przepływu ma być kontynuowane po wystąpieniu błędu weryfikacji, ustaw atrybut continueOnError
elementu <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>
używa tej składni:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Options> <ValidateMessageBody>[true|false]</ValidateMessageBody> </Options> ... </OASValidation>
Przykład
Ten przykład umożliwia sprawdzanie treś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, jeśli w żądaniu występują parametry nagłówka, zapytania lub plików cookie, które nie są zdefiniowane w specyfikacji OpenAPI.
Wartość domyślna | nie dotyczy |
Wymagany? | Opcjonalnie |
Typ | Złożony |
Element nadrzędny |
<Options>
|
Elementy podrzędne |
<Header> <Query> <Cookie> |
Składnia
Element <AllowUnspecifiedParameters>
używa tej 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
W tym przykładzie konfigurujemy zasadę tak, aby nie działała, jeśli w żądaniu jest określony parametr nagłówka, zapytania lub pliku cookie, który nie jest zdefiniowany 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>
(dziecko elementu <AllowUnspecifiedParameters>
)
Konfiguruje działanie zasady, jeśli w zapytaniu są parametry 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 ten parametr na fałsz, aby spowodować niepowodzenie wykonania zasady.
Wartość domyślna | prawda |
Wymagany? | Wartość logiczna |
Typ | Złożony |
Element nadrzędny |
<AllowUnspecifiedParameters>
|
Elementy podrzędne | Brak |
Składnia
Element <Header>
używa tej 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 konfigurujemy zasadę tak, aby nie działała, jeśli w żądaniu podany jest parametr nagłówka, który nie jest zdefiniowany w specyfikacji OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Header>false</Header> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Query>
(dziecko elementu <AllowUnspecifiedParameters>
)
Konfiguruje zachowanie zasady, jeśli w żądaniu występują parametry 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 ten parametr na fałsz, aby spowodować niepowodzenie wykonania zasady.
Wartość domyślna | prawda |
Wymagany? | Wartość logiczna |
Typ | Złożony |
Element nadrzędny |
<AllowUnspecifiedParameters>
|
Elementy podrzędne | Brak |
Składnia
Element <Query>
używa tej 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 konfigurujemy zasady tak, aby nie działały, jeśli w żądaniu występuje parametr zapytania, który nie jest zdefiniowany w specyfikacji OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Query>false</Query> </AllowUnspecifiedParameters> </Options> </OASValidation>
Konfiguruje zachowanie zasady, jeśli w żądaniu występują parametry 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 ten parametr na fałsz, aby spowodować niepowodzenie wykonania zasady.
Wartość domyślna | prawda |
Wymagany? | Wartość logiczna |
Typ | Złożony |
Element nadrzędny |
<AllowUnspecifiedParameters>
|
Elementy podrzędne | Brak |
Składnia
Element <Cookie>
używa tej 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 konfigurujemy zasady tak, aby nie działały, jeśli w żądaniu występuje parametr zapytania, który nie jest zdefiniowany w specyfikacji OpenAPI.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Cookie>false</Cookie> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Source>
wiadomość JSON do oceny w kontekście ataków na ładunek JSON; Zwykle jest to ustawione na request
, ponieważ zwykle trzeba ocenić przychodzące żądania z aplikacji klienckich.
Aby oceniać wiadomości z odpowiedziami, ustaw wartość na response.
Ustaw na message, aby automatycznie oceniać wiadomość z prośbą, gdy zasada jest dołączona do procesu żądania, oraz wiadomość z odpowiedzią, gdy zasada jest dołączona do procesu odpowiedzi.
Wartość domyślna | żądanie |
Wymagany? | Opcjonalnie |
Typ | Ciąg znaków |
Element nadrzędny |
<Source>
|
Elementy podrzędne | Brak |
Składnia
Element <Source>
używa tej składni:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Source>[message|request|response]</Source> ... </OASValidation>
Przykład
W tym przykładzie reguła jest automatycznie oceniana w żądaniu, gdy jest ono dołączone do przepływu żądania, i w odpowiedzi, gdy jest ona 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
). Informacje na temat schematów zasad znajdziesz 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
Zasady OASValidation obsługują funkcje specyfikacji OpenAPI, które są podsumowane w tabeli poniżej według kategorii. Wyświetlają się też funkcje, które nie są obsługiwane.
Kategoria | Obsługiwane | Nieobsługiwane |
---|---|---|
Formaty typów danych | boolean date date-time double float int32/int64 ipv4/ipv6 md5 sha1/sha256/sha512 string uri uri-template uuid |
binary byte password |
Obiekt wyróżnik | mapowanie propertyName |
Nie dotyczy |
Obiekt typu multimediów | schemat | kodowanie przykład przykłady |
Obiekt Operations | parameters requestBody responses security (partial support) |
wywołania wycofane serwery |
Obiekt Parameters | allowEmptyValue in ( query , header , path )required responses schema style ( deepObject , form , formmatrix , label , pipeDelimited , simple , spaceDelimited )Uwaga: deepObject obsługuje tylko parametry ciągu; tablice i obiekty zagnieżdżone nie są obsługiwane.
|
allowReserved deprecated example examples content |
Obiekt Paths | delete get head options parameters patch post put trace variables |
serwery |
Obiekt treści żądania | application/json application/hal+json application/x-www-form-urlencoded (obiekt encoding nie jest obsługiwany)content wymagane |
application/xml multipart/form-data text/plain text/xml |
Obiekt odpowiedzi | application/json application/hal+json application/x-www-form-urlencoded (obiekt encoding nie jest obsługiwany)content nagłówki |
application/xml links text/plain text/xml |
Obiekt odpowiedzi | domyślna Kod stanu HTTP |
Nie dotyczy |
Obiekt schematu | $ref additionalProperties (tylko wariant flagi logicznej) allOf (ignorowane, jeśli additionalProperties to 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 |
Obiekt schematu zabezpieczeń | za (header , query ) (ignorowane, jeśli type to http )name type ( apiKey , http )
|
bearerFormat flows openIdConnectUrl scheme |
Obiekt serwera | zmienne url |
Wiele definicji serwera |