我正在寻找为Django应用程序实现RESTful接口。它主要是一个数据服务应用程序 - 接口将(此时)只读。
问题是哪些Django工具集/框架对此任务最有意义。
我看到Django-rest和Django-piston。还可以选择自己动手。
问题在这里被问到,但两年前就好了。我想知道目前的状态是什么。
在大约2008年的this question中,绝大多数投票都是根本不使用任何框架 - 只需创建Django视图即可回复,例如: JSON。 (问题也得到了解决,crica 2008,here。)
在目前的情况下,最有意义的是什么?
答案 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)
仍然如此。
滚动你自己是非常微不足道的。每个REST URI都映射到一个视图函数。每个REST方法(GET,POST,PUT,DELETE)都是视图函数中的一个简单条件。
完成。
答案 3 :(得分:4)
一种方法是自己动手,或使用优秀的django-piston。但是我对活塞的问题是,它是一种附加到现有的django项目以添加API的类型。它不是用于构建面向资源的API,而是支持HTML格式。
我看到Piston的用例的方式是,你有一个提供html内容的完整网站,但是你会在url / api / *上附上一个api。然后你去添加活塞。有了这个用例Piston很棒,现有代码不需要重写,你可以得到你需要的任何东西。可能是活塞运作良好而没有将api与面向网站的用户分开,但我没有尝试过。
尝试用一些例子解释这个更容易:
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让我试一试。