Почему комплексный результат Spyne имеет уровни ответа и результата?

Я пытаюсь вернуть комплексный результат из приложения spyne/SOAP/HTTP, но вижу ожидаемый уровень CommandResponse, а также неожиданный уровень CommandResult (в XML) до запуска моих данных.

Я нигде не создавал объект 'CommandResult', так откуда это взялось и как я могу его остановить? Примеры, такие как... http://www.w3schools.com/webservices/ws_soap_example.asp... показывают CommandResponse, но не уровень CommandResult.

2 ответа

Это связано с тем, что в Spyne по умолчанию используются упакованные функции. Обернутые функции:

1) Легче использовать, чем голые функции, которые могут принимать и возвращать только макс. один тип.

2) Любой тип Xml должен быть сериализуемым с использованием одного корневого узла в соответствии со стандартом Xml.

Если вы хотите получить возвратные документы, аналогичные тем, которые есть в w3schools, вы должны сдать _body_style='bare' к @rpc декоратор.

Тем не менее, это рекомендуется только в целях совместимости и следует избегать, если это возможно.

PS: ответ Пападелтасьерры также верен - это именно то, что голый режим делает за кулисами.

Чтобы избежать этого, вы хотите использовать...

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

Spyne теперь создаст результат, который имеет требуемый уровень CommandResponse с вашими тремя полями, расположенными сразу под ним, т.е. вам не нужно было создавать объект ComplexModel, который неявно создавал уровень CommandResults. Полезная ссылка здесь: http://spyne.io/docs/2.10/reference/decorator.html Однако на самом деле примеров нет.

Другие вопросы по тегам