Python / Django中的REST API
我正在开发一个iPhone应用,它需要和后端的API进行通信。目前,这个API是用Django写的(不是我写的),我们正在考虑从头开始重写。我们唯一的真正要求是这个API必须完全符合REST标准,并且要有版本控制。身份验证和授权的方式现在不是优先考虑的(也就是说,不需要OAuth,基本的身份验证就可以了)。
我之前是用Ruby和Rails的,对Python一点都不懂。
所以我想问:
有没有什么Django的库可以帮助快速构建这样的API?
我在想一些工具,比如grape、rails-api,甚至是sinatra(也许可以作为Rails的中间件)。
我知道有flask,但它能和Django结合使用吗?
2 个回答
Django Piston https://bitbucket.org/jespern/django-piston/wiki/Documentation
优点 - 设置和开始使用都很简单。如果你用默认配置,它的表现也很好。
缺点 - 自定义数据处理的方法实现起来比较困难。
Django REST Framework http://www.django-rest-framework.org/
优点 - 学习起来比较简单,容易上手。
缺点 - 在这三者中,文档似乎是最少的。
TastyPie http://django-tastypie.readthedocs.org/en/latest/
优点 - 三个选项中名字最好。它似乎提供了最多的功能,适合自定义数据处理和连接非ORM的数据源。
流量控制、权限和身份验证也比较简单。
缺点 - 我第一次选择避开TastyPie是因为它看起来对我来说太复杂了。对于简单的使用场景,TastyPie可能有点过于复杂。
TastyPie 和 Django REST framework 是使用 Django 时最好的选择。
我个人觉得 TastyPie 特别适合快速上手,它为你选择了一套默认的规则,让你能迅速开始。而 Django REST framework 的分层设计特别好,方便你根据自己的需求来定制 API。
这两个框架都有详细的文档和很多社区支持。(我不太明白 @timus2001 说的文档不足是基于什么。)
你绝对不应该使用 Piston,因为它已经很久没有维护了。(最后一次发布是在 2011 年)
还可以看看 这个类似的 StackOverflow 问题,以及 Daniel Greenfeld 在 2012 年的 相关看法。