[英]spyne generates bad WSDL/XSD schema for ComplexModels with ComplexModel children
我正在嘗試使用spyne在Python中實現SOAP服務。 我的客戶像這樣發送SOAP請求:
<ns1:loadServices xmlns:ns1="dummy">
<serviceParams xmlns="dummy">
<header>
<user>foo</user>
<password>secret</password>
</header>
</serviceParams>
</ns1:loadServices>
但是我很難將這種結構放入斯派恩模型中。
到目前為止,我想到了以下代碼:
class Header(ComplexModel):
__type_name__ = 'header'
user = Unicode
password = Unicode
class serviceParams(ComplexModel):
__type_name__ = 'serviceParams'
header = Header()
class DummyService(ServiceBase):
@rpc(serviceParams, _returns=Unicode)
def loadServices(ctx, serviceParams):
return '42'
問題是spyne會生成XSD,如下所示:
...
<xs:complexType name="loadServices">
<xs:sequence>
<xs:element name="serviceParams" type="tns:serviceParams" minOccurs="0" nillable="true"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="serviceParams"/>
...
這不是我想要的,因為從本質上說“ serviceParams”只是一個沒有子代的空標簽。
那是spyne中的錯誤嗎? 還是我錯過了什么?
原來這是罪魁禍首:
header = Header()
應該是:
header = Header
非常討厭的行為,真的很容易忽略。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.