Python中的SOAP后端

时间:2013-05-06 06:31:04

标签: python web-services soap wsdl

我是一名Python程序员,但是对于webservices来说是新手。

任务:

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

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

我的想法:

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

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

      斯特芬

3 个答案:

答案 0 :(得分:2)

我已成功使用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类型。

答案 1 :(得分:1)

我会和Twisted一起去,因为我正在使用它并享受系统。

另一个异步选项可能是Tornado

Flask的同步版本。

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

答案 2 :(得分:0)

您可以将Python库用作SOAPpyPyWS