为什么Spyne复杂结果同时具有响应和结果两个级别



我试图从spyne/SOAP/HTTP应用程序返回一个复杂的结果,但我看到预期的'CommandResponse'级别,但也是一个意想不到的'CommandResult'级别(在XML中)在我的数据开始之前。

我没有在任何地方创建一个'CommandResult'对象,所以这是从哪里来的,我怎么能阻止它?例如……http://www.w3schools.com/webservices/ws_soap_example.asp…

显示CommandResponse但不显示CommandResult级别。

为了避免这种情况,您需要使用…

@srpc(…, _returns=[type1, type2,…], _out_variable_names=["name1", "name2"…])

Spyne现在将创建一个结果,该结果具有所需的CommandResponse级别,其下面有三个字段,即您不必创建隐式创建CommandResults级别的ComplexModel对象。有用的参考如下:http://spyne.io/docs/2.10/reference/decorator.html但是并没有真正的例子

这是因为在Spyne中包装函数是默认的。包装函数是:

1)比裸函数更容易使用,裸函数只能接受并返回max。一个类型。

2)根据Xml标准,任何Xml类型都应该使用单个根节点进行序列化。

如果你想有类似w3schools的返回文档,你必须将_body_style='bare'传递给@rpc装饰器。

但是,只建议出于兼容性的原因,如果可能的话应该避免使用。

PS: Papadeltasierra的答案也是正确的——这正是裸模式在幕后所做的。

最新更新