为给定的需求构建服务

2024-10-01 07:44:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我对SOAP框架比较陌生,一直在阅读Spynes文档,并尝试构建一个接受以下请求的服务:

<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://..." xmlns:xsi=http:/..." xmlns:xsd="http://...">
<SOAP-ENV:Body>
    <modifyRequest returnData="everything" xmlns="urn:...">
      <attr ID="..."/>
      <data>
      </data>
    </modifyRequest>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我已经通读了文档,但只是没有看到足够多的更复杂的例子,以找出如何把一些东西来处理这个问题。必须为ID属性处理<attr ID="..."/>标记,<data>标记包含一些不同的附加xml集合。我知道正式定义服务更好,但目前我希望使用anyXML(?)接受标签上的东西。我需要接受并处理ID属性及其包含在数据标记中的xml负载。你知道吗

我很感激你的指导, 谢谢。你知道吗


Tags: 文档标记env框架idhttpdata属性
1条回答
网友
1楼 · 发布于 2024-10-01 07:44:46

以下是您的做法:

NS = 'urn:...'

class Attr(ComplexModel):
    __namespace__ = NS
    _type_info = [
        ('ID', XmlAttribute(UnsignedInteger32)),
    ]

class ModifyRequest(ComplexModel):
    __namespace__ = NS
    _type_info = [
        ('returnData', XmlAttribute(Unicode(values=['everything', 'something', 'anything', 'etc']))),
        ('attr', Attr),
        ('data', AnyXml),
    ]


class SomeService(ServiceBase):
    @rpc(ModifyRequest, _body_style='bare')
    def modifyRequest(ctx, request):
        pass

不过,这需要spyne2.11,在2.10及更高版本中是有问题的。你知道吗

相关问题 更多 >