Генерация образцов шаблонов запросов и ответов SOAP с использованием только Python.Нет Zeep, SOAPUI или любого другого инструмента - PullRequest
0 голосов
/ 26 сентября 2019

Я довольно новичок в python и совершенно новый в веб-сервисах.Я недавно начал работать над проектом, который мне очень нравится, и который стал прекрасной возможностью для обучения.Однако я очень застрял после нескольких недель исследований и мог бы помочь.

Я пытаюсь создать собственный WSDL-интерфейс, который работает аналогично SOAPUI.Моя программа проанализирует любой WSDL-файл рабочего дня для получения необходимой информации, вернет образец шаблона запроса , позволит пользователю отредактировать этот шаблон и, наконец, отправит xml на сервер Workday.

Прямо сейчас моя программа позволяет пользователю отправлять запросы Get и Put с существующими шаблонами xml.Что я не понимаю, так это то, как шаблоны запросов / ответов генерируются из WSDL.Я не заинтересован в инструментах, я хочу понять, как они это делают, чтобы я мог сделать свои собственные.

ПРИМЕР

Связанный выше «Файл WSDL рабочего дня» называется «Управление ресурсами».Я бы скачал этот WSDL с сервера Workday, чтобы получить доступ к связанным операциям.Одна такая операция называется «Get_Purchase_Item_Request».Затем я сгенерирую пример XML-запроса из этого WSDL и получу в результате что-то вроде следующего:

<bsvc:Get_Purchase_Items_Request xmlns:bsvc="urn:com.workday/bsvc" bsvc:version="string">
   <!--You have a CHOICE of the next 2 items at this level-->
   <!-- Optional: -->
   <bsvc:Request_References>
     <!-- 1 or more repetitions: -->
     <bsvc:Purchase_Item_Reference bsvc:Descriptor="string">
       <!-- Zero or more repetitions: -->
       <bsvc:ID bsvc:type="string">string</bsvc:ID>
     </bsvc:Purchase_Item_Reference>
   </bsvc:Request_References>
</bsvc:Get_Purchase_Items_Request>

Что я пробовал:

  1. Я использую модуль ElementTree в python для обработки XML в моей текущей программе.Я изучил документы, но не могу найти способ генерировать образцы без более глубокого понимания того, как это делается в существующих системах
  2. Я нашел то, что, как мне кажется, генерирует шаблоны внутри кода SOAPUI с открытым исходным кодом, пытаясьпонять, как они это делают.Проблема в том, что я недостаточно знаю Java, чтобы использовать их код.Кроме того, я хочу продолжить, как я в настоящее время использую python.
  3. Модуль Zeep часто рекомендуется для работы с SOAP-клиентами.В настоящее время я учусь его использовать.Однако, опять же, поскольку я не понимаю, как создаются шаблоны, я изо всех сил пытаюсь использовать Zeep, чтобы это произошло.Еще раз, я хотел бы продолжить, используя ElementTree и Python.Даже если бы мне удалось сделать это с Zeep, я все равно не понял бы, как создаются шаблоны.
  4. Я создал классы в своем коде Python, которые обрабатывают различные части файла WSDL.Я не понимаю, как объединить различные части в шаблон XML.

TLDR : Как шаблоны XML создаются из файлов WSDL?Как я могу проанализировать WSDL, содержащий несколько операций, и сгенерировать шаблон XML для одной, в частности?

...