用于Django项目/应用程序的RESTful API

时间:2010-11-20 16:37:48

标签: python django api rest django-piston

当您想在Django中“重新启动”Django项目时,您更喜欢什么?

我得出结论,实际上有三种选择:

为我做这件事的正确方法是尝试所有''并选择最适合我的那个,所以同时我想听听你的...

感谢。

4 个答案:

答案 0 :(得分:7)

我对django-piston最熟悉,所以我自然会引导你走向那个方向。

但是,快速浏览另外两个,表明django-rest-interface只是将模型公开为资源,并且django-restful-resources是一些人在同一时间的一次性尝试。

活塞,如果我没记错的话,是从bitbucket.org自己的网站开发中产生的,并且允许很多灵活性 - 你可以从资源的访问方法返回几乎任何对象,而不仅仅是模型实例,它将被正确编码。它还内置支持一些不错的功能,例如表单验证(如果你能让它正常工作),并请求限制等等。

答案 1 :(得分:5)

使用django 1.3中新的基于类的通用视图,使用自定义序列化器和反序列化器实现您自己的休息接口将非常容易,只使用股票代码复制几乎完整的活塞实现。我在500行代码中创建了一个基于View(1.3)的休息模块,具有通用的RESTful资源类和子资源,对关联的自然键支持,json和XML序列化等等。该模块真的是根据我的应用程序的要求量身定制的

我这样做是为了克服活塞代码中的一些限制,例如在处理程序调用.get()之前修改了一个查询集(例如使用.values(...)),或者无法使用序列化中的模型方法。

如果你按照自己的意愿去做,那么在几天内你就会有一套有效的课程和混合课程,你将完全理解并控制它们。

答案 2 :(得分:3)

作为写“django-restful-resources”的“有些人”,我想澄清其存在的原因。它不是尝试将模型公开为资源,而是一种允许将单个URL映射到多个不同处理程序方法的方法,每个HTTP动词一个。就这样。它可以用于公开模型对象,但它也可以用于将服务公开为资源或您希望通过单个URL和HTTP谓词进行交互的任何其他内容。如果您正在寻找功能更全面的解决方案,那么请务必使用Piston。

答案 3 :(得分:2)

如eternicode所述,django-piston非常出色。它成熟,功能齐全,背后有一个很好的社区。目前似乎缺乏持续的开发,尽管有人谈论社区驱动的分支,因此可能会发生变化。

django-tastypie也值得一看,目前似乎有很多推动力。

我刚刚发布了另一个值得考虑的选项:django-rest-framework。它背后有一些非常好的功能,例如API auto-documentation

它使用了基于Django 1.3的类视图,如saverio所提到的,这意味着您可以直接删除它提供的一些MixIn类,而无需直接使用框架。 (例如adding HTTP content negotiation for serializing output to multiple types