Python / Django 中的 REST API
Posted
技术标签:
【中文标题】Python / Django 中的 REST API【英文标题】:REST API in Python / Django 【发布时间】:2014-08-28 22:29:19 【问题描述】:我正在构建一个与后端 API 通信的 iPhone 应用程序。目前,API 是用 Django 编写的(由我以外的其他人编写),我们正在考虑从头开始重写它。我们唯一真正的要求是 API 必须是完全 REST-full 和版本化的。身份验证/授权方案目前不是优先级(因为不需要 OAuth,我们可以使用基本身份验证)。
我来自 Ruby/Rails 背景,我根本不懂 python。
所以我的问题是:
是否有任何 Django 库可以轻松快速构建这样的 API?
我在考虑像grape、rails-api 甚至sinatra 之类的工具(可能是一个rails 中间件)。
我知道flask,但它可以集成到 Django 中吗?
【问题讨论】:
【参考方案1】:TastyPie 和 Django REST framework 是 Django 的最佳选择。
我个人认为 TastyPie 特别擅长为您选择一组默认约定并让您快速启动和运行,而 Django REST 框架在其分层设计方面特别出色,可以轻松地根据您的需要自定义您的 API它是。
两者都有大量的文档和大量的社区支持。 (我不确定@timus2001 缺乏文档评论的依据是什么。)
您绝对不应该使用 Piston,因为它已经很久没有维护了。 (最后一次发布是 2011 年
另请参阅 this similar *** question 和 Daniel Greenfeld 在 2012 年的 take on this。
【讨论】:
【参考方案2】:姜戈活塞 https://bitbucket.org/jespern/django-piston/wiki/Documentation
优势 - 易于设置和启动。如果您使用默认配置,则效果很好。 缺点 - 实现自定义序列化方法很困难。
Django REST 框架 http://www.django-rest-framework.org/
优势 - 简单的学习曲线
缺点 - 三者中的文档似乎最少。
美味派 http://django-tastypie.readthedocs.org/en/latest/
优势 - 三个选项中的最佳名称。似乎具有实现自定义序列化和绑定到非 ORM 数据源的最多功能。
节流、权限、身份验证更简单
缺点 - 我第一次避开 TastyPie 的原因是它对我的需求来说似乎太复杂了。对于简单的用例,TastyPie 可能有点矫枉过正。
【讨论】:
drf 还具有限制、权限和身份验证功能。我没有尝试过其他的,但即使我必须实现更高级的东西,我在使用 drf 时也没有遇到任何问题 TastyPie 看起来真的很有趣。但是,查看自述文件,似乎不支持 JSON 响应(这是一个问题),并且没有提及超媒体 API/内容类型(我对 json:api 特别感兴趣)。以上是关于Python / Django 中的 REST API的主要内容,如果未能解决你的问题,请参考以下文章
django框架学习六:优化views.py文件,使用rest_framework中的APIVew和Response返回
Python前后端分离开发Vue+Django REST framework实战_Django REST framework框架
python-django rest framework框架之视图