ik ben met het ontwikkelen van een soap webservice bezig en zou graag jullie mening willen weten over het volgende:
stel ik heb een functie in de webservice om orders op te halen. De input is dan een lijst met orders, de output een lijst met orders voorzien van extra informatie.
dus bijv (in werkelijkheid is het wat ingewikkelder, maar voor mijn vraag volstaat onderstaande voorbeeld):
en het resultaat is dan bijvoorbeeld:
Hoe zouden jullie bijv. het "type order" in de WSDL definieren?
het kan bijv zo (even alleen de belangrijke wsdl items weergegeven:
of bijv. zo:
m.a.w. in het eerste geval is het technische gezien volgens het schema dat bij de request ook een article of price wordt meegegeven (niet dat daar iets mee gedaan wordt, maar het voldoet wel aan het schema).
in het tweede voorbeeld zijn voldoet zowel de request als de response aan het schema en is het niet mogelijk een article of price in de request mee te geven.
De tweede request is dus preciezer in de definitie, maar geeft een veel rommeligere WSDL in mijn ogen.
Hoe zouden jullie dit aanpakken? Of zie ik wellicht nog iets over het hoofd?
(let wel, mijn werkelijk situatie is veel complexer... daar zou het leiden tot een ontzettende hoeveelheid wsdl:types die allemaal net even iets anders zijn.
stel ik heb een functie in de webservice om orders op te halen. De input is dan een lijst met orders, de output een lijst met orders voorzien van extra informatie.
dus bijv (in werkelijkheid is het wat ingewikkelder, maar voor mijn vraag volstaat onderstaande voorbeeld):
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <soap:Envelope> <soap:Body> <GetOrders> <order> <ordernr>12345</ordernr> </order> <order> <ordernr>67890</ordernr> </order> <order> <ordernr>54321</ordernr> </order> </GetOrders> </soap:Body> </soap:Envelope> |
en het resultaat is dan bijvoorbeeld:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| <soap:Envelope> <soap:Body> <GetOrdersResponse> <order> <ordernr>12345</ordernr> <article>Fiets</article> <price>100.00</price> </order> <order> <ordernr>67890</ordernr> <article>Auto</article> <price>1000.00</price> </order> <order> <ordernr>54321</ordernr> <article>Bus</article> <price>10000.00</price> </order> </GetOrdersResponse> </soap:Body> </soap:Envelope> |
Hoe zouden jullie bijv. het "type order" in de WSDL definieren?
het kan bijv zo (even alleen de belangrijke wsdl items weergegeven:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <wsdl:types> <xsd:schema> <xsd:complexType name="order"> <xsd:sequence> <xsd:complexType name="ordernr" type="xsd:string" minOccurs="1" maxOccurs="1" /> <xsd:complexType name="article" type="xsd:string" minOccurs="0" maxOccurs="1" /> <xsd:complexType name="price" type="xsd:double" minOccurs="0" maxOccurs="1" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="orders"> <xsd:sequence> <xsd:complexType name="order" type="tns:order" minOccurs="1" /> </xsd:sequence> </xsd:complexType> </xsd:schema> </wsdl:types> <wsdl:message name="GetOrderRequest"> <wsdl:part name="orders" type="tns:orders"> </wsdl:message> <wsdl:message name="GetOrderResponse"> <wsdl:part name="orders" type="tns:orders"> </wsdl:message> |
of bijv. zo:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| <wsdl:types> <xsd:schema> <xsd:complexType name="orderAsResponse"> <xsd:sequence> <xsd:complexType name="ordernr" type="xsd:string" minOccurs="1" maxOccurs="1" /> <xsd:complexType name="article" type="xsd:string" minOccurs="0" maxOccurs="1" /> <xsd:complexType name="price" type="xsd:double" minOccurs="0" maxOccurs="1" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ordersAsResponse"> <xsd:sequence> <xsd:complexType name="orderAsResponse" type="tns:orderAsResponse" minOccurs="1" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="orderAsRequest"> <xsd:sequence> <xsd:complexType name="ordernr" type="xsd:string" minOccurs="1" maxOccurs="1" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="ordersAsRequest"> <xsd:sequence> <xsd:complexType name="orderAsRequest" type="tns:orderAsRequest" minOccurs="1" /> </xsd:sequence> </xsd:complexType> </xsd:schema> </wsdl:types> <wsdl:message name="GetOrderRequest"> <wsdl:part name="orders" type="tns:ordersAsRequest"> </wsdl:message> <wsdl:message name="GetOrderResponse"> <wsdl:part name="orders" type="tns:ordersAsResponse"> </wsdl:message> |
m.a.w. in het eerste geval is het technische gezien volgens het schema dat bij de request ook een article of price wordt meegegeven (niet dat daar iets mee gedaan wordt, maar het voldoet wel aan het schema).
in het tweede voorbeeld zijn voldoet zowel de request als de response aan het schema en is het niet mogelijk een article of price in de request mee te geven.
De tweede request is dus preciezer in de definitie, maar geeft een veel rommeligere WSDL in mijn ogen.
Hoe zouden jullie dit aanpakken? Of zie ik wellicht nog iets over het hoofd?
(let wel, mijn werkelijk situatie is veel complexer... daar zou het leiden tot een ontzettende hoeveelheid wsdl:types die allemaal net even iets anders zijn.