2012-02-25 152 views
3

我并非试图开始一场宗教战争,而是我个人真的不喜欢在资源URL中使用api版本信息。我认为最好的方法是通过资源的Accept头或将?version = 2添加到查询字符串中。如果你对这个话题感到好奇。在这个主题上有很多关于StackOverflow的好消息(热情的)。这是一个很好的thread here。另外,IMHO,Steve Klabnik的博客文章here。再次,这些只是我的推论,而我并没有试图在这个主题上再次创建一个线程。使用Accept头对版本信息进行版本控制

我目前正在寻找一个Django包来帮助创建一个RESTful API。经过一番阅读后,TastyPie似乎拥有我想要/需要的大部分内容,并且得到了很好的支持(并且有很好的文档)。我只是想知道是否有一种方法来实现不同的版本控制方案?那里有其他人做过吗?是否有另外一个包可能更符合我的需要?

+0

我想你可以用Tastypie做到这一点。我最近实现了?filter = support,以避免直接在查询字符串中放置属性。此外,我首先使用Piston实现了我的API,但后来转向了Tastypie,我更喜欢它。它更健壮,更灵活。所以我个人的看法是,Tastypie是目前用Django构建RESTful API的最佳工具(但我也不想开始一场战争;))。 – kgr 2012-03-02 18:20:47

回答

4

是的,您可以使用Accept头或任何其他方法来对您的API进行版本化,并且以不针对您使用的任何Django API软件包的方式执行此操作。一个简单的方法是添加一些中间件来检查相关请求的标题,然后根据指定的版本加载适当的URL配置文件。

在github上有几个简单的应用程序使用URL routing middleware,您可以自定义以满足您的需求。

此外,Tastypie是惊人的,我强烈推荐它在活塞使用两者后。