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的主要内容,如果未能解决你的问题,请参考以下文章

Python / Django 中的 REST API

django框架学习六:优化views.py文件,使用rest_framework中的APIVew和Response返回

Python前后端分离开发Vue+Django REST framework实战_Django REST framework框架

python-django rest framework框架之视图

Python第二十四课Django rest framework

python-django rest framework框架之路由