Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
OASValidation politikası hakkında
OASValidation (OpenAPI Spesifikasyonu Doğrulaması) politikası, gelen bir istek veya yanıt mesajını OpenAPI 3.0 Spesifikasyonu'na (JSON veya YAML) göre doğrulamanıza olanak tanır. Hangi içerikler doğrulanır? bölümüne bakın.
OASValidation politikası, politikanın eklendiği adım yürütüldüğünde doğrulama için kullanılacak OpenAPI spesifikasyonunun adını belirtir.
OpenAPI Spesifikasyonu, API proxy paketindeki şu standart konumda kaynak olarak depolanır: apiproxy/resources/oas.
OpenAPI spesifikasyonunun .json, .yml, .yaml uzantısı olmalıdır.
Kaynakları yönetme bölümünde açıklandığı gibi, kullanıcı arayüzünü veya API'yi kullanarak bir API proxy paketine kaynak olarak OpenAPI spesifikasyonu ekleyin.
Hangi içerikler doğrulanır?
Aşağıdaki tabloda, OASValidation politikası tarafından doğrulanan istek mesajı içeriği bileşene göre özetlenmektedir.
| Bileşenler | Doğrulama isteğinde bulun |
|---|---|
| Basepath | API proxy'si tarafından tanımlanan temel yolu doğrular; OpenAPI Spesifikasyonu'nda belirtilen temel yolu yoksayar. |
| Yol | İstek yolunun (temel yol hariç), OpenAPI Spesifikasyonu'nda tanımlanan yol kalıplarından biriyle eşleştiğini doğrular. |
| Fiil | Fiilin, OpenAPI spesifikasyonundaki yol için tanımlandığını doğrular. |
| İstek mesajı gövdesi |
Not: Politika, istek e-posta mesajını yalnızca Content-Type |
| Parametreler |
|
Aşağıdaki tabloda, OASValidation politikası tarafından doğrulanan yanıt mesajı içeriği bileşene göre özetlenmektedir.
| Bileşenler | Yanıt doğrulama |
|---|---|
| Yol | İstek yolunun (temel yol hariç), OpenAPI Spesifikasyonu'nda tanımlanan yol kalıplarından biriyle eşleştiğini doğrular. |
| Fiil | Fiilin, OpenAPI spesifikasyonundaki yol için tanımlandığını doğrular. |
| Yanıt e-posta mesajı |
|
Örnekler
Aşağıdaki örneklerde, mesajları bir OpenAPI 3.0 Spesifikasyonu'na göre doğrulamak için OASValidation politikasını kullanabileceğiniz yöntemlerden bazıları gösterilmektedir.
İstek mesajını doğrulama
Aşağıdaki örnekte myoaspolicy politikası, istek mesajının gövdesini my-spec.json OpenAPI Spesifikasyonu'nda tanımlanan işlemin istek mesajı gövde şemasına göre doğrular.
<OASValidation name="myoaspolicy">
<OASResource>oas://my-spec.json</OASResource>
<Options>
<ValidateMessageBody>true</ValidateMessageBody>
</Options>
<Source>request</Source>
</OASValidation>
E-posta mesajı gövdesi OpenAPI Spesifikasyonu'na uymuyorsa policies.oasvalidation.Failed hatası döndürülür.
Parametreleri doğrulama
Aşağıdaki örnekte, OpenAPI spesifikasyonunda tanımlanmamış bir üstbilgi, sorgu veya çerez parametresi istekte belirtilirse politikanın başarısız olması için yapılandırma yapılmıştır.
<OASValidation name="myoaspolicy">
<OASResource>oas://my-spec.yaml</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Header>false</Header>
<Query>false</Query>
<Cookie>false</Cookie>
</AllowUnspecifiedParameters>
</Options>
</OASValidation><OASValidation> öğesi
OpenAPI Spesifikasyonu Doğrulama politikasını tanımlar.
| Varsayılan Değer | Aşağıdaki Varsayılan Politika sekmesine bakın. |
| Zorunlu mu? | Zorunlu |
| Tür | Karmaşık nesne |
| Üst Öğe | Yok |
| Alt öğeler |
<DisplayName><OASResource><Source><Options><Source> |
Söz dizimi
<OASValidation> öğesi aşağıdaki söz dizimini kullanır:
<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>Varsayılan politika
Aşağıdaki örnekte, Apigee kullanıcı arayüzünde akışınıza bir OAS Doğrulama politikası eklediğinizde varsayılan ayarlar gösterilmektedir:
<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>Bu öğe, tüm politikalarda ortak olan aşağıdaki özelliklere sahiptir:
| Özellik | Varsayılan | Zorunlu mu? | Açıklama |
|---|---|---|---|
name |
Yok | Zorunlu |
Politikanın dahili adı. İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı, doğal bir dille etiketlemek için |
continueOnError |
yanlış | İsteğe bağlı | Politika başarısız olduğunda hata döndürmek için "false" değerine ayarlayın. Bu, çoğu politika için beklenen bir durumdur. Bir politika başarısız olsa bile akış yürütmenin devam etmesi için değeri "true" olarak ayarlayın. |
enabled |
true | İsteğe bağlı | Politikayı uygulamak için "true" (doğru) değerine ayarlayın. Politikayı "kapalı" hale getirmek için "false" değerine ayarlayın. Politika, bir akışa bağlı kalsa bile zorunlu kılınmaz. |
async |
yanlış | Kullanımdan kaldırıldı | Bu özellik kullanımdan kaldırıldı. |
Alt öğe referansı
Bu bölümde, <OASValidation> öğesinin alt öğeleri açıklanmaktadır.
<DisplayName>
Yönetim kullanıcı arayüzü proxy düzenleyicisindeki politikayı farklı ve daha doğal bir adla etiketlemek için name özelliğiyle birlikte kullanın.
<DisplayName> öğesi tüm politikalarda ortaktır.
| Varsayılan Değer | Yok |
| Zorunlu mu? | İsteğe bağlıdır. <DisplayName> değerini atlarsanız politikanın name özelliğinin değeri kullanılır. |
| Tür | Dize |
| Üst Öğe | <PolicyElement> |
| Alt öğeler | Yok |
<DisplayName> öğesi aşağıdaki söz dizimini kullanır:
Söz dizimi
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
Örnek
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
<DisplayName> öğesinin özellikleri veya alt öğeleri yok.
<OASResource>
Doğrulama için kullanılacak OpenAPI spesifikasyonunu belirtir. Bu dosyayı şu şekilde saklayabilirsiniz:
- API proxy paketinde
/apiproxy/resources/oasaltındaki API proxy kapsamında - API proxy düzenleyicisinin Gezgin görünümünün
Resourcesbölümünde.
Daha fazla bilgi için Kaynakları yönetme bölümüne bakın.
OpenAPI spesifikasyonunu {oas.resource.url} gibi bir mesaj şablonu kullanarak belirtebilirsiniz.
Bu durumda, akış değişkeni oas.resource.url'nin değeri (süslü parantez içinde) değerlendirilir ve çalışma zamanında yük dizesine eklenir.
Daha fazla bilgi için Mesaj şablonları başlıklı makaleyi inceleyin.
| Varsayılan Değer | Yok |
| Zorunlu mu? | Zorunlu |
| Tür | Dize |
| Üst Öğe |
<OASValidation>
|
| Alt öğeler | Yok |
Söz dizimi
<OASResource> öğesi aşağıdaki söz dizimini kullanır:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> ... </OASValidation>
Örnek
Aşağıdaki örnekte, API proxy paketinde /apiproxy/resources/oas altında depolanan my-spec.yaml spesifikasyonu referans verilmektedir:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> </OASValidation>
<OASResource> öğesinin özellikleri veya alt öğeleri yok.
<Options>
Politika seçeneklerini yapılandırır.
| Varsayılan Değer | Yok |
| Zorunlu mu? | İsteğe bağlı |
| Tür | Karmaşık tür |
| Üst Öğe |
<OASValidation>
|
| Alt öğeler |
<ValidateMessageBody><AllowUnspecifiedParameters> |
Söz dizimi
<Options> öğesi aşağıdaki söz dizimini kullanır:
<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>Örnek
Aşağıdaki örnekte, politika seçenekleri yapılandırılmaktadır. Seçeneklerin her biri aşağıda daha ayrıntılı olarak açıklanmıştır.
<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>
Politikanın, e-posta mesajı gövdesini OpenAPI Spesifikasyonu'ndaki işlemin istek gövdesi şemasına göre doğrulayıp doğrulamayacağını belirtir. E-posta mesajı içeriğini doğrulamak için true değerine ayarlayın. Yalnızca e-posta mesajının mevcut olduğunu doğrulamak için false değerine ayarlayın.
<OASValidation> öğesinin continueOnError özelliğini true olarak ayarlayarak akış yürütme işleminin bir doğrulama hatasından sonra devam edip etmeyeceğini kontrol edebilirsiniz.
| Varsayılan Değer | yanlış |
| Zorunlu mu? | İsteğe bağlı |
| Tür | Boole |
| Üst Öğe |
<Options>
|
| Alt öğeler | Yok |
Söz dizimi
<ValidateMessageBody> öğesi aşağıdaki söz dizimini kullanır:
<OASValidation name="policy_name">
<OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
<Options>
<ValidateMessageBody>[true|false]</ValidateMessageBody>
</Options>
...
</OASValidation>Örnek
Aşağıdaki örnekte, e-posta mesajı içeriğinin doğrulanması etkinleştirilmiştir:
<OASValidation name="myoaspolicy">
<OASResource>oas://my-spec.yaml</OASResource>
<Options>
<ValidateMessageBody>true</ValidateMessageBody>
</Options>
</OASValidation><AllowUnspecifiedParameters>
İstekte OpenAPI spesifikasyonunda tanımlanmayan başlık, sorgu veya çerez parametreleri varsa politikanın davranışını yapılandırır.
| Varsayılan Değer | Yok |
| Zorunlu mu? | İsteğe bağlı |
| Tür | Karmaşık tür |
| Üst Öğe |
<Options>
|
| Alt öğeler |
<Header><Query><Cookie> |
Söz dizimi
<AllowUnspecifiedParameters> öğesi aşağıdaki söz dizimini kullanır:
<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>Örnek
Aşağıdaki örnekte, OpenAPI spesifikasyonunda tanımlanmamış bir üstbilgi, sorgu veya çerez parametresi istekte belirtilirse politikanın başarısız olması için yapılandırma yapılmıştır.
<OASValidation name="myoaspolicy">
<OASResource>oas://my-spec.yaml</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Header>false</Header>
<Query>false</Query>
<Cookie>false</Cookie>
</AllowUnspecifiedParameters>
</Options>
</OASValidation><Header> (<AllowUnspecifiedParameters> alt öğesi)
İstekte OpenAPI spesifikasyonunda tanımlanmayan başlık parametreleri varsa politikanın davranışını yapılandırır.
OpenAPI spesifikasyonunda tanımlanmayan başlık parametrelerinin istekte belirtilmesine izin vermek için bu parametreyi true olarak ayarlayın. Aksi takdirde, politika yürütmenin başarısız olması için bu parametreyi false olarak ayarlayın.
| Varsayılan Değer | doğru |
| Zorunlu mu? | Boole |
| Tür | Karmaşık tür |
| Üst Öğe |
<AllowUnspecifiedParameters>
|
| Alt öğeler | Yok |
Söz dizimi
<Header> öğesi aşağıdaki söz dizimini kullanır:
<OASValidation name="policy_name">
<OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Header>[true|false]</Header>
</AllowUnspecifiedParameters>
</Options>
...
</OASValidation>Örnek
Aşağıdaki örnekte, istekte OpenAPI spesifikasyonunda tanımlanmayan bir başlık parametresi belirtilirse politikanın başarısız olması için yapılandırma yapılmıştır.
<OASValidation name="myoaspolicy">
<OASResource>oas://my-spec.yaml</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Header>false</Header>
</AllowUnspecifiedParameters>
</Options>
</OASValidation><Query> (<AllowUnspecifiedParameters> adlı kullanıcının çocuğu)
OpenAPI spesifikasyonunda tanımlanmayan sorgu parametreleri istekte mevcutsa politikanın davranışını yapılandırır.
OpenAPI spesifikasyonunda tanımlanmayan sorgu parametrelerinin istekte belirtilmesine izin vermek için bu parametreyi true olarak ayarlayın. Aksi takdirde, politika yürütmenin başarısız olması için bu parametreyi false değerine ayarlayın.
| Varsayılan Değer | doğru |
| Zorunlu mu? | Boole |
| Tür | Karmaşık tür |
| Üst Öğe |
<AllowUnspecifiedParameters>
|
| Alt öğeler | Yok |
Söz dizimi
<Query> öğesi aşağıdaki söz dizimini kullanır:
<OASValidation name="policy_name">
<OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Query>[true|false]</Query>
</AllowUnspecifiedParameters>
</Options>
...
</OASValidation>Örnek
Aşağıdaki örnekte, OpenAPI spesifikasyonunda tanımlanmayan bir sorgu parametresi istekte belirtilirse politikanın başarısız olması için yapılandırma yapılmıştır.
<OASValidation name="myoaspolicy">
<OASResource>oas://my-spec.yaml</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Query>false</Query>
</AllowUnspecifiedParameters>
</Options>
</OASValidation>İstekte OpenAPI spesifikasyonunda tanımlanmayan çerez parametreleri varsa politikanın davranışını yapılandırır.
OpenAPI spesifikasyonunda tanımlanmayan çerez parametrelerinin istekte belirtilmesine izin vermek için bu parametreyi true olarak ayarlayın. Aksi takdirde, politika yürütmenin başarısız olması için bu parametreyi false olarak ayarlayın.
| Varsayılan Değer | doğru |
| Zorunlu mu? | Boole |
| Tür | Karmaşık tür |
| Üst Öğe |
<AllowUnspecifiedParameters>
|
| Alt öğeler | Yok |
Söz dizimi
<Cookie> öğesi aşağıdaki söz dizimini kullanır:
<OASValidation name="policy_name">
<OASResource>oas://specname[.json|.yaml|.yml]</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Query>[true|false]</Query>
</AllowUnspecifiedParameters>
</Options>
...
</OASValidation>Örnek
Aşağıdaki örnekte, OpenAPI spesifikasyonunda tanımlanmayan bir sorgu parametresi istekte belirtilirse politikanın başarısız olması için yapılandırma yapılmıştır.
<OASValidation name="myoaspolicy">
<OASResource>oas://my-spec.yaml</OASResource>
<Options>
<AllowUnspecifiedParameters>
<Cookie>false</Cookie>
</AllowUnspecifiedParameters>
</Options>
</OASValidation><Source>
JSON yükü saldırılarına karşı değerlendirilecek JSON mesajı. İstemci uygulamalarından gelen istekleri değerlendirmeniz gerekeceğinden bu genellikle request olarak ayarlanır.
Yanıt mesajlarını değerlendirmek için response olarak ayarlayın.
Politika istek akışına eklendiğinde istek mesajını, yanıt akışına eklendiğinde ise yanıt mesajını otomatik olarak değerlendirmek için message olarak ayarlayın.
| Varsayılan Değer | istek |
| Zorunlu mu? | İsteğe bağlı |
| Tür | Dize |
| Üst Öğe |
<Source>
|
| Alt öğeler | Yok |
Söz dizimi
<Source> öğesi aşağıdaki söz dizimini kullanır:
<OASValidation name="policy_name"> <OASResource>oas://specname[.json|.yaml|.yml]</OASResource> <Source>[message|request|response]</Source> ... </OASValidation>
Örnek
Aşağıdaki örnekte, politika istek akışına eklendiğinde istek mesajı, yanıt akışına eklendiğinde ise yanıt mesajı otomatik olarak değerlendirilir:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Source>message</Source> </OASValidation>
<Source> öğesinin özellikleri veya alt öğeleri yok.
Şemalar
Her politika türü bir XML şeması (.xsd) ile tanımlanır. Referans için politika şemaları GitHub'da mevcuttur.
Hata kodları
Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.
Çalışma zamanı hataları
Politika yürütüldüğünde bu hatalar ortaya çıkabilir.
| Hata kodu | HTTP durumu | Neden | |
|---|---|---|---|
steps.oasvalidation.Failed |
500 | İstek mesajı gövdesi, sağlanan OpenAPI Specification ile doğrulanamıyor. | |
steps.oasvalidation.SourceMessageNotAvailable |
500 |
Politikanın |
|
steps.oasvalidation.NotMessageVariable |
500 |
|
build |
Dağıtım hataları
Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.
| Hata adı | Neden | |
|---|---|---|
ResourceDoesNotExist |
<OASResource> öğesinde referans verilen OpenAPI Spesifikasyonu mevcut değil.
|
|
ResourceCompileFailed |
Dağıtıma dahil edilen OpenAPI Spesifikasyonu, derlenmesini engelleyen hatalar içeriyor. Bu genellikle spesifikasyonun, doğru biçimlendirilmiş bir OpenAPI Specification 3.0 olmadığını belirtir. | |
BadResourceURL |
<OASResource> öğesinde referans verilen OpenAPI Spesifikasyonu işlenemiyor. Bu durum, dosya bir JSON veya YAML dosyası değilse ya da dosya URL'si doğru şekilde belirtilmediyse ortaya çıkabilir.
|
Hata değişkenleri
Bu değişkenler, bu politika çalışma zamanında bir hata tetiklediğinde ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.
| Değişkenler | Konum | Örnek |
|---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen hatanın adıdır. Hata adı, hata kodunun son kısmıdır. | fault.name Matches "ResourceDoesNotExist" |
oasvalidation.policy_name.failed |
policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. | oasvalidation.myoaspolicy.failed = true |
Desteklenen OpenAPI Spesifikasyonları özellikleri
OASValidation politikası, aşağıdaki tabloda kategoriye göre özetlenen OpenAPI Spesifikasyonu özelliklerini destekler. Desteklenmeyen özellikler de listelenir.
| Kategori | Destekleniyor | Desteklenmiyor |
|---|---|---|
| Veri türü biçimleri | boolean date date-time double float int32/int64 ipv4/ipv6 md5 sha1/sha256/sha512 string uri uri-template uuid |
binary byte password |
| Discriminator nesnesi | mapping propertyName |
Yok |
| Medya türü nesnesi | schema | kodlama örnek örnekler |
| İşlemler nesnesi | parameters requestBody responses security (kısmi destek) |
callbacks deprecated servers |
| Parametre nesnesi | allowEmptyValue in ( query, header, path)required responses schema style ( deepObject, form, formmatrix, label, pipeDelimited, simple, spaceDelimited)Not: deepObject yalnızca dize parametrelerini destekler; diziler ve iç içe yerleştirilmiş nesneler desteklenmez.
|
allowReserved deprecated example examples content |
| Yollar nesnesi | delete get head options parameters patch post put trace variables |
sunucular |
| İstek gövdesi nesnesi | application/json application/hal+json application/x-www-form-urlencoded ( encoding nesnesi desteklenmez)content required |
application/xml multipart/form-data text/plain text/xml |
| Yanıt nesnesi | application/json application/hal+json application/x-www-form-urlencoded ( encoding nesnesi desteklenmez)content headers |
application/xml links text/plain text/xml |
| Yanıtlar nesnesi | default HTTP durum kodu |
Yok |
| Şema nesnesi | $ref additionalProperties (yalnızca boole işaret varyantı) allOf ( additionalProperties, false ise yoksayılır)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 |
| Güvenlik şeması nesnesi | in (header, query) (type, http ise yoksayılır)name type ( apiKey, http)
|
bearerFormat flows openIdConnectUrl scheme |
| Sunucu nesnesi | url variables |
Birden çok sunucu tanımı |