Spyne - изменить имя части в сообщении wsdl "wsdl:part"
В моем случае, чтобы поддерживать соответствие с каким-либо существующим клиентом SOAP, "имя" "части" в элементе "сообщение" WSDL должно быть "параметрами", как здесь
<wsdl:message name="Notify">
<wsdl:part name="parameters" element="tns:Notify"/>
</wsdl:message>
<wsdl:message name="NotifyResponse">
<wsdl:part name="parameters" element="tns:NotifyResponse"/>
</wsdl:message>
В настоящее время я не вижу никакого способа сделать это в Spyne. Я просмотрел документацию, исходный код, и кажется, что генератор WSDL всегда принимает одно и то же значение для "name" of "part" и "name" всего "message"
(Spyne/ интерфейс / WSDL /wsdl11.py)
def add_messages_for_methods(self, service, root, messages):
for method in service.public_methods.values():
self._add_message_for_object(root, messages, method.in_message,
method.in_message.get_element_name())
(...)
def _add_message_for_object(self, root, messages, obj, message_name):
(...)
message = SubElement(root, WSDL11("message"))
message.set('name', message_name)
(...)
for obj in objs:
part = SubElement(message, WSDL11("part"))
part.set('name', obj.get_element_name())
part.set('element', obj.get_element_name_ns(self.interface))
Так что в основном "имя" для "сообщения" message_name
является method.in_message.get_element_name()
и это тот же случай для "имени" в "части", как obj.get_element_name()
-> method.in_message.get_element_name()
Тем не менее, в Python я никогда не делал ничего больше, чем 3 строки кода, и мне потребовалось некоторое время, чтобы понять все это (программист Swift/Objc здесь). Я мог что-то упустить, и, может быть, есть какой-то хороший простой способ сделать это?
Как быстрый и плохой хак / обходной путь, я только что изменился part.set('name', obj.get_element_name())
в part.set('name', 'parameters')
и в моем случае (мой wsdl действительно прост с двумя методами, а не с несколькими аргументами), он работает просто отлично, но я полностью осознаю, насколько это плохо с точки зрения нарушения логики SOAP/WSDL и качества кода:(Стандарт SOAP смотрит на Я слишком сложен / сложен, и я впервые сталкиваюсь с этим, поэтому мое понимание важности каждого элемента довольно низкое