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 смотрит на Я слишком сложен / сложен, и я впервые сталкиваюсь с этим, поэтому мое понимание важности каждого элемента довольно низкое

0 ответов

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