簡體   English   中英

spyne為帶有ComplexModel子級的ComplexModel生成錯誤的WSDL / XSD模式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM