在Django中实现REST Web服务的框架

时间:2010-03-21 19:06:36

标签: python django web-services rest

我正在寻找为Django应用程序实现RESTful接口。它主要是一个数据服务应用程序 - 接口将(此时)只读。

问题是哪些Django工具集/框架对此任务最有意义。

我看到Django-rest和Django-piston。还可以选择自己动手。

问题在这里被问到,但两年前就好了。我想知道目前的状态是什么。

在大约2008年的this question中,绝大多数投票都是根本不使用任何框架 - 只需创建Django视图即可回复,例如: JSON。 (问题也得到了解决,crica 2008,here。)

在目前的情况下,最有意义的是什么?

5 个答案:

答案 0 :(得分:18)

  

注意:由于撰写了这篇文章,django-piston已不再存在   积极维护。正如其他人所提到的,请研究tastypie   或django-rest-framework

事实上,你可以自己动手,但是涉及很多样板。

django-piston是一个非常易于使用且可扩展的微框架。除了模拟所有必要的视图和url模式之外,它还支持将模型直接映射到REST接口,如果你有一个简单的用例,这很好。我建议调查一下。

答案 1 :(得分:9)

由于这个问题在我在Google上的搜索中仍然得到了很高的评价,我会在混音中添加以下选项:http://django-rest-framework.org/

我的初步印象是,它在实现此处描述的RESTful API设计原则方面做得很好:http://readthedocs.org/docs/restful-api-design/en/latest/

答案 2 :(得分:4)

Using django-rest-interface

仍然如此。

滚动你自己是非常微不足道的。每个REST URI都映射到一个视图函数。每个REST方法(GET,POST,PUT,DELETE)都是视图函数中的一个简单条件。

完成。

答案 3 :(得分:4)

一种方法是自己动手,或使用优秀的django-piston。但是我对活塞的问题是,它是一种附加到现有的django项目以添加API的类型。它不是用于构建面向资源的API,而是支持HTML格式。

我看到Piston的用例的方式是,你有一个提供html内容的完整网站,但是你会在url / api / *上附上一个api。然后你去添加活塞。有了这个用例Piston很棒,现有代码不需要重写,你可以得到你需要的任何东西。可能是活塞运作良好而没有将api与面向网站的用户分开,但我没有尝试过。

尝试用一些例子解释这个更容易:

到位桶

Github上

Bitbucket是用Django和django-piston为API制作的,而Github是用Ruby On Rails制作的,它内置了对不同格式资源的支持。我不是说你应该切换到RoR,因为我们都喜欢Django,我并不是说你不能用django这样做,但是在每个视图上自己做这件事会很乏味。

所以我和同事决定在Django中想要一些RoR的“神奇”,但是我们不希望它变得神奇,但是在不抽象一切的情况下让我们的生活更轻松。所以jgorset写了Respite这是一个小的Django框架,以与RoR相同的方式制作“RESTful”API,但是在Django中。它仍处于早期开发阶段,但我们每天都在工作项目中使用它,并且它是高度可定制的,就像Django本身一样。它试图简化面向资源的网页,并构建您的代码,而不会妨碍您。

很自然地,我的建议是查看,并尝试暂停:https://github.com/jgorset/django-respite/

答案 4 :(得分:2)

tastypie也是一种选择,我刚试过它,直到现在它似乎都没有了。我正在玩一个虚拟应用程序,它将一个API公开给一个backbone.js客户端,而且我没有用这个库打砖墙。 This article让我试一试。