为何选择 Tastypie
Django 还有其他 API 框架。你需要评估可用的选项并自行决定。也就是说,以下是 tastypie 的一些常见原因。
- 你需要一个 RESTful 的 API 并且很好地使用 HTTP。
- 你想支持深层关系。
- 你不希望必须编写自己的序列化程序才能使输出正确。
- 你需要一个 API 框架,它具有很少的魔力,非常灵活,可以很好地映射到问题域。
- 你希望/需要与 JSON 同等对待的 XML 序列化(并且 YAML 也在那里)。
要使用 Django 开发 API,我们有很多选择。主要选项是 Tastypie 和 Django Rest Framework (DRF)。
什么是一个体面的 API 框架?
这些功能:
- 分页
- 通过验证发布数据
- 与元数据一起发布元数据
- API 发现
- 正确的 HTTP 响应处理
- 高速缓存
- 系列化
- 节流
- 权限
- 认证
适当的 API 框架还需要:
-
真的很好的测试覆盖他们的代码
-
体面的表现
-
文档
-
一个积极的社区,以推动和支持该框架
如果你采用这些因素,目前只有两个值得使用的 API 框架(取决于用户视图),django-tastypie 和 django-rest-framework。
哪一个更好?django-tastypie 或 django-rest-framework?
我说他们是相等的。你根本不会出错任何一个。两者背后的作者和社区都很活跃,代码很扎实,经过测试。以下是我对这两者的具体想法:
Tastypie:
好处:
- 易于入门并提供基本功能 OOB(开箱即用)
- 大多数情况下,你不会处理像 CBV,Forms 等高级 Django 概念
- 更可读的代码,更少的魔力!
- 如果你的模型是非 ORM,那就去吧。
缺点:
- 不严格遵循惯用的 Django(心灵 Python 和 django 的哲学是完全不同的)
- 一旦你变大,可能有点难以定制 API
- 没有 O-Auth
DRF:
好处:
-
跟随惯用的 django。 (如果你知道 django 里面外出,并且非常适应 CBV,Forms 等毫无疑问的去吧)
-
使用 ModelViewSets 提供开箱即用的 REST 功能。同时,使用 CustomSerializer,APIView,GenericViews 等提供更好的自定义控制。
-
更好的认证。
-
更容易编写自定义权限类。
-
工作非常好,非常容易使其与第三方库和 OAuth 一起使用。
-
DJANGO-REST-AUTH 值得一提的是用于 Auth / SocialAuthentication / Registration 的 LIBRARY。
缺点:
- 如果你不太了解 Django,请不要这样做。
- 魔法! 有些时候很难理解魔法。
- 因为它是在 django 的 CBV 之上编写的,而后者本质上相当复杂。
- 学习曲线陡峭。