我将如何构建API转换器?

时间:2012-05-02 06:31:29

标签: python api serialization xml-serialization tastypie

我有多个不同的API,其中不同的模式以XML或JSON格式化,我需要将其作为标准化模式输出。

所需的主要功能:

  • 序列化为XML和JSON
  • 验证
    • I.e。:除非您拥有正确的用户+传递
    • ,否则无法获取/设置数据
  • 角色/范围限制
    • 即:您无法访问我们数据库中的所有内容,只能访问您的角色所允许的内容
  • 在不同架构之间获取/设置(转换)
    • I.e。:无论输入API是什么,您都可以使用您要求的输出API格式化它

或直观地说:

Server1> [send as SOAP 1.1]> [My Server]> [Server3以XML格式接收 Server3架构]

Server3> [以XML格式发送]> [我的服务器]> [Server1作为SOAP 1.1接收 Server1架构]


或者以程序方式提出:

id=MyServer.read.SOAP[Server1.schema](Server1).id
MyServer.send.XML[Server2.schema](data_get(id), Server2)

需要将所有收到的数据存储在模型(数据库)中,以便按需提供读取。

这是SlumberTastyPie最适合的问题吗?

或者您推荐使用不同的库吗?

1 个答案:

答案 0 :(得分:1)

这比看起来有两个原因:1)SOAP和REST是不同的范例(消息传递v的资源)所以有些事情没有直接的映射,2)可维护性需要建立在任何涉及的API有所改变。

建立一个进行重新路由和访问控制的中间层服务绝对是有意义的。 TastyPie和Slumber有助于创建其余的API本身,但您似乎也希望并行公开SOAP API。所以你可能需要像pysimplesoap或SOAPy这样的东西到你的中间层的公共数据结构上。 (如果你能在出路的时候摆脱肥皂,那么你的生活就会变得更容易了。)。)。

如果所有后端服务的用户群相同,则用户名密码可能仍然有意义,但如果不同的人对不同的服务拥有不同的权限,那么最好使用oAuth库放置类似oAuth的内容,然后独立跟踪每个用户的权利。