Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. info

OASValidation politikası hakkında
OASValidation (OpenAPI Specification Validation) politikası, gelen bir istek veya yanıt mesajını OpenAPI 3.0 Specification'a (JSON veya YAML) göre doğrulamanıza olanak tanır. Hangi içerikler doğrulanır? başlıklı makaleyi inceleyin.
OASValidation politikası, politikaya bağlı adım yürütüldüğünde doğrulama için kullanılacak OpenAPI Spesifikasyonu'nun adını belirtir.
OpenAPI Specification, API proxy paketindeki şu standart konumda kaynak olarak depolanır: apiproxy/resources/oas
.
OpenAPI spesifikasyonunda .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 bileşene göre doğrulanan istek mesajı içeriği özetlenmektedir.
Bileşenler | Doğrulama isteğinde bulun |
---|---|
Basepath | API proxy'si tarafından tanımlanan temel yolu doğrular; OpenAPI Specification'da belirtilen temel yolu yoksayar. |
Path | İstek yolunun (basepath hariç) OpenAPI Specification'da 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, Content-Type |
Parametreler |
|
Aşağıdaki tabloda, OASValidation politikası tarafından bileşene göre doğrulanan yanıt mesajı içeriği özetlenmektedir.
Bileşenler | Yanıt doğrulama |
---|---|
Path | İstek yolunun (basepath hariç) OpenAPI Specification'da 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 mesajı gövdesi |
|
Örnekler
Aşağıdaki örneklerde, OASValidation politikasını kullanarak iletileri OpenAPI 3.0 Spesifikasyonu'na göre doğrulamanın bazı yolları 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>
İleti 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ımlanmayan bir başlık, sorgu veya çerez parametresi istekte belirtilirse politikanın başarısız olması için yapılandırma yapılı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 şu 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>
Politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı ve daha doğal bir adla etiketlemek için name
özelliğine ek olarak kullanın.
<DisplayName>
öğesi tüm politikalarda ortaktır.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı. <DisplayName> özelliğini atlarsanız politikanın name özelliğinin değeri kullanılır. |
Tür | Dize |
Üst öğe | <PolicyElement> |
Alt Öğeler | Yok |
<DisplayName>
öğesi şu 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 özelliği veya alt öğesi yoktur.
<OASResource>
Doğrulanacak OpenAPI spesifikasyonunu belirtir. Bu dosyayı şuralarda saklayabilirsiniz:
- API proxy paketindeki
/apiproxy/resources/oas
altında API proxy kapsamı - API proxy düzenleyicisinin Gezgin görünümündeki
Resources
bölümünde.
Daha fazla bilgi için Kaynakları yönetme başlıklı makaleyi inceleyin.
OpenAPI spesifikasyonunu {oas.resource.url}
gibi bir mesaj şablonu kullanarak belirtebilirsiniz.
Bu durumda, akış değişkeni oas.resource.url
(küme parantezleri içinde) değeri değerlendirilir
ve çalışma zamanında yük dizesine yerleştirilir.
Daha fazla bilgi için İleti şablonları sayfasına göz atın.
Varsayılan Değer | Yok |
Zorunlu mu? | Zorunlu |
Tür | Dize |
Üst öğe |
<OASValidation>
|
Alt Öğeler | Yok |
Söz dizimi
<OASResource>
öğesi şu 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
spesifikasyonuna referans verilmektedir:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> </OASValidation>
<OASResource>
öğesinin özelliği veya alt öğesi yoktur.
<Seçenekler>
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 şu 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, ileti gövdesini OpenAPI Spesifikasyonu'ndaki işlemin istek gövdesi şemasına göre doğrulayıp doğrulamayacağını belirtir. İleti gövdesi içeriklerini doğrulamak için true olarak ayarlayın. Yalnızca ileti gövdesinin varlığını doğrulamak için false olarak ayarlayın.
<OASValidation>
öğesinin continueOnError
özniteliğini true olarak ayarlayarak doğrulama hatasından sonra akış yürütmenin 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 şu 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 örnek, ileti gövdesi içeriklerinin doğrulanmasını sağlar:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <ValidateMessageBody>true</ValidateMessageBody> </Options> </OASValidation>
<AllowUnspecifiedParameters>
İstek içinde OpenAPI spesifikasyonunda tanımlanmamış 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 şu 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ımlanmayan bir başlık, sorgu veya çerez parametresi istekte belirtilirse politikanın başarısız olması için yapılandırma yapılı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>
adlı öğenin alt öğesi)
İstek içinde OpenAPI spesifikasyonunda tanımlanmamış başlık parametreleri varsa politikanın davranışını yapılandırır.
OpenAPI spesifikasyonunda tanımlanmayan üstbilgi parametrelerinin istekte belirtilmesine izin vermek için bu parametreyi true olarak ayarlayın. Aksi takdirde, politika yürütülmesinin 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 şu 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ımlanmamış bir başlık parametresi belirtilirse politikanın başarısız olması için yapılandırma yapılır.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Header>false</Header> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Query>
(<AllowUnspecifiedParameters>
adlı öğenin alt öğesi)
OpenAPI Specification'da tanımlanmamış sorgu parametreleri istekte mevcutsa politikanın davranışını yapılandırır.
OpenAPI spesifikasyonunda tanımlanmamış sorgu parametrelerinin istekte belirtilmesine izin vermek için bu parametreyi true olarak ayarlayın. Aksi takdirde, politika yürütülmesinin 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
<Query>
öğesi şu 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 Specification'da tanımlanmamış bir sorgu parametresi istekte belirtilirse politikanın başarısız olması için yapılandırma yapılır.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Query>false</Query> </AllowUnspecifiedParameters> </Options> </OASValidation>
İstek içinde OpenAPI spesifikasyonunda tanımlanmamış ç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ütülmesinin 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 şu 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 Specification'da tanımlanmamış bir sorgu parametresi istekte belirtilirse politikanın başarısız olması için yapılandırma yapılı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ı. Bu ayar genellikle request
olarak belirlenir. Bunun nedeni, istemci uygulamalarından gelen istekleri genellikle değerlendirmeniz gerekmesidir.
Yanıt mesajlarını değerlendirmek için response olarak ayarlayın.
Politika istek akışına eklendiğinde istek iletisini, yanıt akışına eklendiğinde ise yanıt iletisini 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 şu 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 iletisi, yanıt akışına eklendiğinde ise yanıt iletisi otomatik olarak değerlendirilir:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Source>message</Source> </OASValidation>
<Source>
öğesinin özelliği veya alt öğesi yoktur.
Şemalar
Her politika türü bir XML şeması (.xsd
) ile tanımlanır. Referans olarak 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 Specifications ö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 |
Ayrıştırıcı nesne | mapping propertyName |
Yok |
Medya türü nesnesi | schema | encoding example examples |
İşlemler nesnesi | parameters requestBody responses security (kısmi destek) |
geri aramalar kullanımdan kaldırıldı sunucular |
Parametreler 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 metni 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 boolean işareti 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ı |