我试图从spyne/SOAP/HTTP应用程序返回一个复杂的结果,但我看到预期的'CommandResponse'级别,但也是一个意想不到的'CommandResult'级别(在XML中)在我的数据开始之前。
我没有在任何地方创建一个'CommandResult'对象,所以这是从哪里来的,我怎么能阻止它?例如……http://www.w3schools.com/webservices/ws_soap_example.asp…
为了避免这种情况,您需要使用…
@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的答案也是正确的——这正是裸模式在幕后所做的。