Какой шаблон использовать для вызова веб-службы (SOAP) со сложными параметрами - PullRequest
0 голосов
/ 07 июля 2019

Мне нужно вызвать метод веб-службы SOAP с довольно сложными данными (~ 40 атрибутов, некоторые из которых имеют сложные типы). Преобразование Django Model Data -> SOAP WS Data не является тривиальным.

В настоящее время я использую suds.client.Client для вызова WS, и я уже могу создавать экземпляры всех типов данных WS, используя метод Client.factory.create.

Вопрос в том, какой шаблон использовать? Я хотел бы проверить данные перед обработкой их в WS, что-то вроде DTO (что некоторые люди классифицируют как анти-паттерн). Я не хотел бы помещать всю логику преобразования в представление.

У меня уже есть небольшая оболочка WS, чтобы можно было выполнять любые преобразования / проверки перед вызовом метода WS.

Вот несколько альтернатив:

  • Direct: заставить оболочку WS принимать любые необходимые данные, проверять и преобразовывать их в экземпляры данных suds WS.
  • Простой старый объект Python: создайте простой объект Python, создайте его экземпляр и заполните его в представлении и передайте его оболочке WS, которая должна проверить и преобразовать его в данные WS перед отправкой. (Теперь у нас есть четкое разделение между любыми данными формы / экземпляра django и данными WS, переданный объект служит DTO).
  • Форма Джанго: Как и в предыдущем случае, но могут быть указаны точные типы данных, логика проверки включена. Очищенные данные будут переданы оболочке WS, которая преобразует их в данные WS перед отправкой. Одним из плюсов является то, что мы могли бы создать интерактивную форму для тестирования WS. Еще один из них заключается в том, что любые ошибки проверки могут быть легко отображены.
  • Модель Django: Как и в предыдущем случае, но с использованием моделей Django вместо форм. Хотя это не будет сохраняться, мы могли бы использовать ModelForm для проверки. (Оставьте его открытым, чтобы создавать любые таблицы в будущем, или используйте администратор django для автоматического создания форм.)
  • DRF Serializer: Это похоже на Django Form, включая логику проверки. Он хорошо обрабатывает вложенные объекты, включая ListSerializer (который мне понадобится). Тестирование должно быть легким. Хотя здесь я не использую REST, сериализатор может преобразовать его в данные suds WS.

Есть предложения?

...