Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
SOAPMessageValidation politikası şunları yapar:
- Tüm XML mesajlarını XSD şemalarına göre doğrular
- SOAP mesajlarını WSDL tanımına göre doğrular
- JSON ve XML mesajlarının şeklini belirler
Kullanıcı arayüzündeki bu politikanın adı "SOAP Mesaj Doğrulaması" olsa da politika, SOAP mesajlarından çok daha fazlası bulunuyor. Bu bölüm, politikayı "İleti Doğrulama politikası" olarak adlandırır.
<MessageValidation>
öğe
Mesaj Doğrulama politikasını tanımlar.
Varsayılan Değer | Aşağıdaki Varsayılan Politika sekmesine bakın |
Zorunlu mu? | İsteğe bağlı |
Tür | Karmaşık nesne |
Üst Öğe | Yok |
Alt Öğeler |
<DisplayName> <Element> <ResourceURL> <SOAPMessage> <Source> |
Söz dizimi
<MessageValidation>
öğesi şu söz dizimini kullanır:
<MessageValidation continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <!-- All MessageValidation child elements are optional --> <DisplayName>policy_display_name</DisplayName> <Element namespace="element_namespace">element_to_validate</Element> <SOAPMessage version="[ 1.1 | 1.2 | 1.1/1.2 ]"/> <Source>message_to_validate</Source> <ResourceURL>validation_WSDL_or_XSD</ResourceURL> </MessageValidation>
Varsayılan Politika
Aşağıdaki örnekte, Mesaj Doğrulama politikası eklediğinizde varsayılan ayarlar gösterilmektedir olarak ayarlayın:
<MessageValidation continueOnError="false" enabled="true" name="SOAP-Message-Validation-1"> <DisplayName>SOAP Message Validation-1</DisplayName> <Properties/> <Element namespace="http://sample.com">sampleObject</Element> <SOAPMessage/> <Source>request</Source> <ResourceURL>wsdl://SOAP-Message-Validation-1.wsdl</ResourceURL> </MessageValidation>
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ı. |
Örnekler
Aşağıdaki örneklerde Message Validation (İleti Doğrulama) özelliğini politika:
1: XSD Doğrulaması
XML mesaj isteğinin yükünü doğrulamak için Mesaj Doğrulama politikasını kullanabilirsiniz. bir XSD şemasına karşılık gelir.
- Yeni bir XSD kaynak dosyası oluşturun. Örneğin,
örnek, "note-schema.xsd":
.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
- SOAP Mesaj Doğrulama politikasını proxy uç noktanızın ön akışına ekleyin:
- XSD kaynak dosyanızın konumunu
<ResourceURL>
ile belirtin öğesine dokunun. Örnek:... <ResourceURL>xsd://note-schema.xsd</ResourceURL> ...
. <SOAPMessage>
ve<Element>
öğelerini politika tanımı.
Politika tanımınız aşağıdaki gibi görünmelidir:
<MessageValidation continueOnError="false" enabled="true" name="validateXMLRequest"> <DisplayName>My XML Validator</DisplayName> <Properties/> <Source>request</Source> <ResourceURL>xsd://note-schema.xsd</ResourceURL> </MessageValidation>
- XSD kaynak dosyanızın konumunu
- Mesaj olarak XML'inizi kullanarak API proxy'nize
POST
isteği gönderin. yüke ait verileri aşağıdaki örnekte gösterildiği gibi:curl -v -X POST -H 'Content-Type: application/xml' http://my-test.apigee.net/v1/xsd-mock -d '<note> <to>Fred Rogers</to> <from>Nick Danger</from> <heading>Greetings from my neighborhood</heading> <body>Just writing to say hello.</body> </note>'
Content-type
üstbilgisinin "application/xml" olarak ayarlandığına dikkat edin.Ayrıca yük için bir veri dosyası oluşturabilir ve bu dosyaya bir komutla referans verebilirsiniz aşağıdakine benzer:
curl -v -X POST -H 'Content-type: application/xml' http://my-test.apigee.net/v1/xsd-mock --data '@../examples/note-payload.xml'
HTTP 200
yanıtı alacaksınız. Hedef uç noktanıza bağlı olarak
istekle ilgili ek bilgiler alabilirsiniz. Örneğin,
Hedef uç noktanız olarak http://httpbin.org/post
ve -v
belirtin
(ayrıntılı) çıkışını seçerseniz yanıt şuna benzer olmalıdır:
< HTTP/1.1 200 OK < Date: Wed, 16 May 2018 21:24:54 GMT < Content-Type: application/xml < Content-Length: 431 < Connection: keep-alive < Server: gunicorn/19.8.1 < Access-Control-Allow-Origin: * < Access-Control-Allow-Credentials: true < Via: 1.1 vegur { "args":{}, "data":"<note><to>fred</to><from>nick</from><heading>hello</heading> <body>Just writing to say hello.</body></note>", "files":{}, "form":{}, "headers": { "Accept":"*/*", "Connection":"close", "Content-Length":"106", "Content-Type":"application/xml", "Host":"httpbin.org", "User-Agent":"curl/7.58.0" }, "json":null, "origin":"10.1.1.1, 104.154.179.1", "url":"http://httpbin.org/post" }
XSD doğrulamanızın çalıştığını doğrulamak için talebiniz. Örneğin:
curl -v -X POST -H 'Content-Type: application/xml' http://my-test.apigee.net/v1/xsd-mock -d '<note> <to>Fred Rogers</to> <from>Nick Danger</from> <heading>Greetings from my neighborhood</heading> <body>Just writing to say hello.</body> <badTag>Not good</badTag> </note>'
Doğrulama hatası alırsınız.
2: SOAP Doğrulaması
SOAP mesaj isteğinin yükünü doğrulamak için Mesaj Doğrulama politikasını kullanabilirsiniz. tespit edebilirsiniz.
- Yeni bir WSDL kaynak dosyası oluşturun. Örneğin, "example-wsdl.wsdl":
- SOAP Mesaj Doğrulama politikasını proxy uç noktanızın ön akışına ekleyin:
<SOAPMessage>
öğesininversion
özelliğini sürümünü seçin. Örneğin, "1,1":... <SOAPMessage version="1.1"/> ...
.<Element>
öğesinin değerini, ayarlamak istediğiniz öğeye ayarlayın doğrula:... <Element namespace="https://example.com/gateway">getID</Element> ...
<Element>
,<Body>
öğesi altındaki ilk alt öğeyi belirtir iletişim kutusunu işaretleyin.namespace
özelliğini, bu alt yayıncının ad alanına ayarlayın.<ResourceURL>
ile WSDL kaynak dosyanızın konumunu belirtin öğesine dokunun. Örnek:... <ResourceURL>wsdl://example-wsdl.wsdl</ResourceURL> ...
.
Politika tanımınız aşağıdaki gibi görünmelidir:
<MessageValidation continueOnError="false" enabled="true" name="validateSOAPRequest"> <DisplayName>My SOAP Validator</DisplayName> <Properties/> <Source>request</Source> <SOAPMessage version="1.1"/> <Element namespace="https://example.com/gateway">getID</Element> <ResourceURL>wsdl://example-wsdl.wsdl</ResourceURL> </MessageValidation>
- API proxy'nize
POST
isteği gönderin ve mesaj yükünü inceleyin:curl -v -X POST -H 'Content-Type: application/xml' http://my-test.apigee.net/v1/xsd-mock -d '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prox="https://example.com/gateway" xmlns:typ="https://example.com/gateway/types"> <soapenv:Header/> <soapenv:Body> <prox:getID> <typ:MyType> <typ:ID>42</typ:ID> </typ:MyType> </prox:getID> </soapenv:Body> </soapenv:Envelope>'
Content-type
üstbilgisinin "application/xml" olarak ayarlandığına dikkat edin.Ayrıca yük için bir veri dosyası oluşturabilir ve bu dosyaya bir komutla referans verebilirsiniz aşağıdakine benzer:
curl -v -X POST -H 'Content-type: application/xml' http://my-test.apigee.net/v1/xsd-mock --data '@../examples/soap-payload.xml'
HTTP 200
yanıtı alacaksınız. Hedef uç noktanıza bağlı olarak
istekle ilgili ek bilgiler alabilirsiniz. Örneğin,
Hedef uç noktanız http://httpbin.org/post
ise yanıt benzer olmalıdır
şunlara:
< HTTP/1.1 200 OK < Date: Wed, 16 May 2018 21:24:54 GMT < Content-Type: application/xml < Content-Length: 431 < Connection: keep-alive < Server: gunicorn/19.8.1 < Access-Control-Allow-Origin: * < Access-Control-Allow-Credentials: true < Via: 1.1 vegur { "args":{}, "data":"<note><to>fred</to><from>nick</from><heading>hello</heading> <body>Just writing to say hello.</body></note>", "files":{}, "form":{}, "headers": { "Accept":"*/*", "Connection":"close", "Content-Length":"106", "Content-Type":"application/xml", "Host":"httpbin.org", "User-Agent":"curl/7.58.0" }, "json":null, "origin":"10.1.1.1, 104.154.179.1", "url":"http://httpbin.org/post" }
3: İyi biçimlendirilmiş XML/JSON
Bir JSON veya XML mesaj yükünün onaylandığını doğrulamak için Message Validation (Mesaj Doğrulama Politikası) politikasını kullanabilirsiniz. iyi biçimlendirildiğinden (doğrulama ile aynı değildir). Politika, yapının ve içerik, aşağıdakiler de dahil olmak üzere kabul edilen standartlara uygundur:
- Tek bir kök öğe var
- İçerikte geçersiz karakter yok.
- Nesneler ve etiketler düzgün bir şekilde iç içe yerleştirilmiş
- Başlangıç ve bitiş etiketleri eşleşiyor
İyi biçimlendirilmiş bir XML veya JSON yükünü kontrol etmek için:
- SOAP Mesaj Doğrulama politikasını proxy uç noktanızın ön akışına ekleyin.
<ResourceURL>
,<SOAPMessage>
, ve politika tanımındaki<Element>
öğeleri.Politika tanımınız aşağıdaki gibi görünmelidir:
<MessageValidation async="false" continueOnError="false" enabled="true" name="validateXMLRequest"> <DisplayName>My JSON Checker</DisplayName> <Properties/> <Source>request</Source> </MessageValidation>
- API proxy'nize aşağıdaki örnekte gösterildiği gibi bir
POST
isteği gönderin:curl -v -X POST -H 'Content-Type: application/json' http://my-test.apigee.net/v1/xsd-mock -d '{ "note": { "to": "Fred Rogers", "from": "Nick Danger", "header": "Greetings from my neighborhood", "body": "Just writing to say hello." } }'
Content-type
üstbilgisinin "application/json" olarak ayarlandığına dikkat edin.Bir XML dosyasının doğru olup olmadığını kontrol etmek için mesaj yükü olarak XML kullanın ve
Content-type
öğesini "application/xml" olarak ayarlayın.
HTTP 200
yanıtı alacaksınız. Mesaj yükü gönderdiğinizde
XML veya JSON dosyası içermeyen bir sayfaya dönerseniz
steps.messagevalidation.Failed
hata.
Alt öğe referansı
Bu bölümde, <MessageValidation>
alt öğeleri açıklanmaktadır.
<DisplayName>
Politikayı name
özelliğine ek olarak
farklı, daha doğal bir ada sahip yönetim arayüzü proxy düzenleyicisi.
<DisplayName>
öğesi tüm politikalarda ortaktır.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı. <DisplayName> değerini çıkarırsanız
politikanın name özelliği kullanılıyor |
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 yok.
<Element>
Doğrulanacak mesajdaki öğeyi belirtir. Bu,
SOAP isteğinin zarfında <Body>
öğesi var.
Varsayılan Değer | sampleObject |
Zorunlu mu? | İsteğe bağlı |
Tür | Dize |
Üst Öğe |
<MessageValidation>
|
Alt Öğeler | Yok |
<Element>
öğesi şu söz dizimini kullanır:
Söz dizimi
... <Element namespace="element_namespace">element_to_validate</Element> ...
1. Örnek
Aşağıdaki örnekte doğrulanacak tek bir öğe tanımlanmaktadır:
... <Element namespace="https://example.com/gateway">getID</Element> ...
2. Örnek
Birden fazla <Element>
ekleyerek doğrulanacak birden fazla öğe belirtebilirsiniz.
öğeler:
... <Element namespace="https://example.com/gateway">getID</Element> <Element namespace="https://example.com/gateway">getDetails</Element> ...
<Element>
öğesi aşağıdaki özelliklere sahiptir:
Özellik | Varsayılan | Zorunlu mu? | Açıklama |
---|---|---|---|
namespace |
"http://sample.com" | İsteğe bağlı | Doğrulanacak öğenin ad alanını tanımlar. |
<ResourceURL>
Kaynak mesajı doğrulamak için kullanılacak XSD şemasını veya WSDL tanımını tanımlar.
Varsayılan Değer | wsdl://display_name.wsdl |
Zorunlu mu? | İsteğe bağlı |
Tür | Dize |
Üst Öğe |
<MessageValidation>
|
Alt Öğeler | Yok |
<ResourceURL>
öğesi şu söz dizimini kullanır:
Söz dizimi
... <ResourceURL>[wsdl|xsd]://validation_WSDL_or_XSD</ResourceURL> ...
Örnekler
XML dosyası için:
... <ResourceURL>xsd://note-schema.xsd</ResourceURL> ...
WSDL için:
... <ResourceURL>wsdl://example-wsdl.wsdl</ResourceURL> ...
<ResourceURL>
değeri bir kaynağa işaret etmelidir
dosyanıza ekleyin. HTTP veya HTTPS üzerinden harici kaynaklara başvuramaz.
<ResourceURL>
için bir değer belirtmezseniz mesajın iyi biçime sahip olup olmadığı kontrol edilir.
Content-type
üst bilgisi "application/json" ise XML veya XML veya "application/xml",
tıklayın.
<ResourceURL>
öğesinin alt öğesi veya özelliği yok.
Doğrulama için XSD'leri kullanma
Mesaj Doğrulama politikası referanslarıyla doğruladığınız XML yükü
başka bir şemada yer alan XSD dosyasının önüne xsd
eklemeniz gerekir.
schemaLocation
özelliği için geçerlidir.
Aşağıdaki örnek şema birden fazla XSD'den oluşur:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:include schemaLocation="xsd://note-schema.xsd"/> <xs:include schemaLocation="xsd://letter-schema.xsd"/> <xs:include schemaLocation="xsd://user-schema.xsd"/> </xs:schema>.
Doğrulama için WSDL'leri kullanma
WSDL en az bir şema tanımlamalıdır. En az bir şemaya başvurmuyorsa İleti Doğrulama politikası başarısız oldu.
Bir şema için maksimum içe aktarma derinliği 10'dur. İç içe içe aktarma sayısını aşarsanız İleti Doğrulama politikası başarısız oldu.
<SOAPMessage>
Mesaj Doğrulama politikasının kullandığı SOAP sürümünü tanımlar.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | Yok |
Üst Öğe |
<MessageValidation>
|
Alt Öğeler | Yok |
<SOAPMessage>
öğesi şu söz dizimini kullanır:
Söz dizimi
... <SOAPMessage version="[ 1.1 | 1.2 | 1.1/1.2 ]"/> ...
Örnek
... <SOAPMessage version="1.1"/> ...
<SOAPMessage>
öğesi aşağıdaki özelliklere sahiptir:
Özellik | Varsayılan | Zorunlu mu? | Açıklama |
---|---|---|---|
version |
Yok | İsteğe bağlı | Bu politikanın SOAP mesajlarını doğrulamak için kullandığı SOAP sürümü.
Geçerli değerler şunlardır:
|
Daha fazla bilgi için bkz. SOAP/1,1'den SOAP'a Sürüm 1.2 9 puan.
<Source>
Doğrulanacak kaynak mesajı tanımlar. Bu öğenin değeri, mesajı görürsünüz.
<Source>
politikasını ayarlamazsanız bu politika varsayılan olarak "mesaj"a döner ve bu,
istek mesajı (istek akışında) veya yanıt mesajı (yanıt akışında)
yük. İsterseniz bunu açıkça "request" (istek) olarak da ayarlayabilirsiniz. veya "yanıt" isteğe veya
tıklayın.
Varsayılan Değer | istek |
Zorunlu mu? | İsteğe bağlı |
Tür | Dize |
Üst Öğe |
<MessageValidation>
|
Alt Öğeler | Yok |
<Source>
öğesi şu söz dizimini kullanır:
Söz dizimi
... <Source>message_to_validate</Source> ...
Örnek
... <Source>request</Source> ...
"Mesaj", "istek" ve "yanıt" ifadelerine ek olarak
<Source>
ekleyin. Ancak bunu yaparsanız
özel bir iletiyi bu politika yürütülmeden önce akışınıza ekleyin. Aksi takdirde
bir hata.
<Source>
değeri mesaj akışında çözümlenemezse veya mesaj olmayan bir değere çözümlenirse
türünde, aşağıdakilerden biri gerçekleşir:
- Boş değerse: Edge,
steps.messagevalidation.SourceMessageNotAvailable
hata. - Mesaj türünde olmayan bir türdeyse: Edge,
steps.messagevalidation.NonMessageVariable
hata.
<Source>
öğesinin özelliği veya alt öğesi yok.
Hata kodları
Edge politikalarından döndürülen hatalar, Hata kodu referansı bölümünde açıklandığı gibi tutarlı bir biçime sahiptir.
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 | Düzelt |
---|---|---|---|
steps.messagevalidation.SourceMessageNotAvailable |
500 |
Bu hata, politikanın
|
build |
steps.messagevalidation.NonMessageVariable |
500 |
Bu hata, SOAPMessageValidation politikasındaki Mesaj türü değişkenleri, HTTP isteklerinin ve yanıtlarının tamamını temsil eder. Yerleşik Edge akış değişkenleri |
build |
steps.messagevalidation.Failed |
500 | Bu hata, SOAPMessageValidation politikası, giriş mesajı yükünü XSD şeması veya WSDL tanımına göre doğrulayamazsa ortaya çıkar. Yük mesajında bozuk JSON veya XML bulunması da bu hataya neden olabilir. | build |
Dağıtım hataları
Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.
Hata adı | Neden | Düzelt |
---|---|---|
InvalidResourceType |
SOAPMessageValidation politikasındaki <ResourceURL> öğesi, politika tarafından desteklenmeyen bir kaynak türüne ayarlanmış.
|
build |
ResourceCompileFailed |
SOAPMessageValidation politikasının <ResourceURL> öğesinde başvurulan kaynak komut dosyası, derlemesini engelleyen bir hata içeriyor.
|
build |
RootElementNameUnspecified |
SOAPMessageValidation politikasındaki <Element> , kök öğenin adını içermiyor. |
build |
InvalidRootElementName |
SOAPMessageValidation politikasındaki <Element> öğesi, geçerli öğe adlandırmaya yönelik XML kurallarına uymayan bir kök öğe adı içeriyor. |
build |
Şemalar
Her politika türü bir XML şemasıyla (.xsd
) tanımlanır. Referans olması amacıyla politika şemaları
GitHub'da bulabilirsiniz.