Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. info
OASValidation politikası hakkında
OASValidation (OpenAPI Spesifikasyonu Doğrulaması) politikası, gelen bir isteği veya yanıt mesajını OpenAPI 3.0 Spesifikasyonu'na (JSON veya YAML) göre doğrulamanızı sağlar. 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 Specification, API proxy paketindeki aşağıdaki 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 doğrulanan istek mesajı içeriği bileşene göre özetlenmiştir.
Bileşenler | Doğrulama isteğinde bulun |
---|---|
Temel yol | API proxy'si tarafından tanımlanan temel yolu doğrular; OpenAPI spesifikasyonunda belirtilen temel yolu yoksayar. |
Path | İstek yolunun (temel yol hariç), OpenAPI Specification'de tanımlanan yol kalıplarından biriyle eşleştiğini doğrular. |
Fiil | OpenAPI spesifikasyonundaki yol için fiilin tanımlandığını doğrular. |
İstek mesajı gövdesi |
Not: Politika, yalnızca Content-Type değeri |
Parametreler |
|
Aşağıdaki tabloda, OASValidation politikası tarafından doğrulanan yanıt mesajı içeriği bileşene göre özetlenmiştir.
Bileşenler | Yanıt doğrulaması |
---|---|
Path | İstek yolunun (temel yol hariç), OpenAPI Specification'de tanımlanan yol kalıplarından biriyle eşleştiğini doğrular. |
Fiil | OpenAPI spesifikasyonundaki yol için fiilin tanımlandığını doğrular. |
Yanıt mesajı gövdesi |
|
Örnekler
Aşağıdaki örneklerde, mesajları OpenAPI 3.0 spesifikasyonuna göre doğrulamak için OASValidation politikasını kullanabileceğiniz bazı yöntemler 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ıyla 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 uygun değilse policies.oasvalidation.Failed
hatası döndürülür.
Parametreleri doğrulama
Aşağıdaki örnekte, istekte OpenAPI spesifikasyonunda tanımlanmayan bir başlık, sorgu veya çerez parametresi belirtilirse politikanın başarısız olacak şekilde yapılandırılması gösterilmektedir.
<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 Specification 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>
Yönetim kullanıcı arayüzü proxy düzenleyicisinde politikayı farklı ve daha doğal bir adla etiketlemek için name
özelliğine ek olarak kullanın.
<DisplayName>
öğesi tüm politikalar için ortaktır.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı. <DisplayName> öğesini 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ğrulama işleminin hangi OpenAPI spesifikasyonuna göre yapılacağını belirtir. Bu dosyayı şu konumlarda depolayabilirsiniz:
- API proxy paketindeki
/apiproxy/resources/oas
altındaki API proxy kapsamında - API proxy düzenleyicisinin Gezgin görünümündeki
Resources
bö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, oas.resource.url
akış değişkeninin değeri (kurallı parantez içinde) değerlendirilir ve çalışma zamanında yükü dizesiyle değiştirilir.
Daha fazla bilgi için Mesaj şablonları bölümüne bakı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
spesifikasyonu referans olarak verilmiştir:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> </OASValidation>
<OASResource>
öğesinin özelliği veya alt öğesi yoktur.
<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 ş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, politikanın seçenekleri yapılandırılmıştır. Seçeneklerin her biri aşağıda 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ğrulamasını belirtir. İleti gövdesinin içeriğini doğrulamak için true değerine 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ütme işleminin devam edip etmeyeceği 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 örnekte, ileti gövdesinin içeriğinin doğrulanması sağlanmaktadır:
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <ValidateMessageBody>true</ValidateMessageBody> </Options> </OASValidation>
<AllowUnspecifiedParameters>
İstekte OpenAPI Spesifikasyonu'nda 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 ş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, istekte OpenAPI spesifikasyonunda tanımlanmayan bir başlık, sorgu veya çerez parametresi belirtilirse politikanın başarısız olacak şekilde yapılandırılması gösterilmektedir.
<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>
'nin alt öğesi)
İstekte OpenAPI spesifikasyonunda tanımlanmayan başlık parametreleri varsa politikanın davranışını yapılandırır.
OpenAPI Spesifikasyonu'nda tanımlanmayan üstbilgi parametrelerinin istekte belirtilmesine izin vermek için bu parametreyi true olarak ayarlayın. Aksi takdirde, politikanın yürütülmesinin başarısız olmasına neden olmak için bu parametreyi false olarak ayarlayın.
Varsayılan Değer | true |
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ımlanmayan bir başlık parametresi belirtilirse politikanın başarısız olacak şekilde yapılandırılması gösterilmektedir.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Header>false</Header> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Query>
(<AllowUnspecifiedParameters>
'nin alt öğesi)
İstekte OpenAPI Specification'de tanımlanmayan sorgu parametreleri varsa politikanın davranışını yapılandırır.
OpenAPI Spesifikasyonu'nda tanımlanmayan sorgu parametrelerinin istekte belirtilmesine izin vermek için bu parametreyi true olarak ayarlayın. Aksi takdirde, politikanın yürütülmesinin başarısız olmasına neden olmak için bu parametreyi false olarak ayarlayın.
Varsayılan Değer | true |
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, istekte OpenAPI Specification'de tanımlanmayan bir sorgu parametresi belirtilirse politikanın başarısız olacak şekilde yapılandırılması gösterilmektedir.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Query>false</Query> </AllowUnspecifiedParameters> </Options> </OASValidation>
İstekte OpenAPI Spesifikasyonu'nda tanımlanmayan çerez parametreleri varsa politikanın davranışını yapılandırır.
OpenAPI Spesifikasyonu'nda tanımlanmayan çerez parametrelerinin istekte belirtilmesine izin vermek için bu parametreyi true olarak ayarlayın. Aksi takdirde, politikanın yürütülmesinin başarısız olmasına neden olmak için bu parametreyi false olarak ayarlayın.
Varsayılan Değer | true |
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, istekte OpenAPI Specification'de tanımlanmayan bir sorgu parametresi belirtilirse politikanın başarısız olacak şekilde yapılandırılması gösterilmektedir.
<OASValidation name="myoaspolicy"> <OASResource>oas://my-spec.yaml</OASResource> <Options> <AllowUnspecifiedParameters> <Cookie>false</Cookie> </AllowUnspecifiedParameters> </Options> </OASValidation>
<Source>
JSON yüküne yönelik saldırılara karşı değerlendirilecek JSON mesajı. Genellikle istemci uygulamalarından gelen gelen istekleri değerlendirmeniz gerektiğinden bu ayar genellikle request
olarak belirlenir.
Yanıt mesajlarını değerlendirmek için response olarak ayarlayın.
Politika istek akışına eklendiğinde istek mesajını, politika 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 ş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 mesajı ve politika yanıt akışına eklendiğinde yanıt mesajı otomatik olarak değerlendirilmektedir:
<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ıyla (.xsd
) tanımlanır. Referans olarak kullanabileceğiniz politika şemalarını GitHub'da bulabilirsiniz.
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 |
ikili bayt şifre |
Ayrıştırıcı nesne | eşleme propertyName |
Yok |
Medya türü nesnesi | schema | kodlama örnek örnek |
İşlemler nesnesi | parameters requestBody responses security (kısmi destek) |
geri çağırma desteği sonlandırılan 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 | varsayılan HTTP Durum Kodu |
Yok |
Şema nesnesi | $ref additionalProperties (yalnızca boole 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)ad tür ( apiKey , http )
|
bearerFormat flows openIdConnectUrl scheme |
Sunucu nesnesi | url değişkenleri |
Birden çok sunucu tanımı |