【问题标题】:Backend for SOAP in PythonPython 中的 SOAP 后端
【发布时间】:2013-05-06 06:31:04
【问题描述】:

我是一名 Python 程序员,但对 Web 服务不熟悉。

任务:

我有一个 Typo3 前端和一个 Postgresql 数据库。我想用 Python 在这两个部分之间编写一个后端。另一个开发人员给了我一个 wsdl-file 和 xsd-file 来使用,所以我们使用 SOAP。我编写的程序应该绑定到一个端口(TCP/IP)并充当服务。数据/有效负载将被编码为 json-objects。

    Webclient <---> Frontend <---> Backend(Me) <---> Database

我的想法:

  1. 我使用来自 xsd 的数据类型对 wsdl 文件中的所有函数进行手动编码。
  2. 我将服务绑定到接收传入 json 数据的端口
  3. 我解析传入的数据,做一些数据库操作,做其他事情
  4. 我将结果返回到前端。

问题:

  1. 我必须手动编写 wsdl 文件中描述的所有方法/函数吗?
  2. 是否必须手动定义复杂的数据类型?
  3. 前后端的通信应该如何实现?

提前致谢!

史蒂芬

【问题讨论】:

    标签: python web-services soap wsdl


    【解决方案1】:

    我已经成功使用suds clientMicrosoft Dynamics NAV(前Navision)进行通信。

    典型的会话如下所示:

    from suds.client import Client
    url = 'http://localhost:7080/webservices/WebServiceTestBean?wsdl'
    client = Client(url)
    

    通过发出print client,您可以获得服务支持的类型和操作列表。

    Suds - version: 0.3.3 build: (beta) R397-20081121
    
    Service (WebServiceTestBeanService) tns="http://test.server.enterprise.rhq.org/"
       Prefixes (1):
         ns0 = "http://test.server.enterprise.rhq.org/"
       Ports (1):
         (Soap)
           Methods:
             addPerson(Person person, )
             echo(xs:string arg0, )
             getList(xs:string str, xs:int length, )
             getPercentBodyFat(xs:string name, xs:int height, xs:int weight)
             getPersonByName(Name name, )
             hello()
             testExceptions()
             testListArg(xs:string[] list, )
             testVoid()
             updatePerson(AnotherPerson person, name name, )
       Types (23):
         Person
         Name
         Phone
         AnotherPerson
    

    WSDL 操作作为普通的 Python 函数公开,您可以使用普通的 dicts 代替 WSDL 类型。

    【讨论】:

      【解决方案2】:

      我会选择Twisted,因为无论如何我都在使用它并享受这个系统。

      另一个异步选项可能是Tornado

      或者与Flask同步的版本。

      我相信还有很多其他选择。我会寻找像上面列出的那样更高级别的框架,这样您就不必花费太多时间将前端连接到后端。

      【讨论】:

      • 谢谢!我和 Twisted 一起去。
      • 第 3 题我选择 Twisted。但是第 1 题和第 2 题呢?
      【解决方案3】:

      您可以将 Python 库用作 SOAPpyPyWS

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多