2

我是一名 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. 我应该如何实现前端和后端之间的通信?

提前致谢!

史蒂芬

4

3 回答 3

3

我已成功使用suds 客户端Microsoft 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 类型。

于 2013-05-06T15:12:42.187 回答
1

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

另一个异步选项可能是Tornado

或与Flask的同步版本。

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

于 2013-05-06T06:49:38.193 回答
0

您可以将 Python 库用作SOAPpyPyWS

于 2013-05-06T06:34:49.263 回答