为何选择 Tastypie

Django 还有其他 API 框架。你需要评估可用的选项并自行决定。也就是说,以下是 tastypie 的一些常见原因。

  • 你需要一个 RESTful 的 API 并且很好地使用 HTTP。
  • 你想支持深层关系。
  • 你不希望必须编写自己的序列化程序才能使输出正确。
  • 你需要一个 API 框架,它具有很少的魔力,非常灵活,可以很好地映射到问题域。
  • 你希望/需要与 JSON 同等对待的 XML 序列化(并且 YAML 也在那里)。

要使用 Django 开发 API,我们有很多选择。主要选项是 TastypieDjango Rest Framework (DRF)。

什么是一个体面的 API 框架?

这些功能:

  1. 分页
  2. 通过验证发布数据
  3. 与元数据一起发布元数据
  4. API 发现
  5. 正确的 HTTP 响应处理
  6. 高速缓存
  7. 系列化
  8. 节流
  9. 权限
  10. 认证

适当的 API 框架还需要:

  1. 真的很好的测试覆盖他们的代码

  2. 体面的表现

  3. 文档

  4. 一个积极的社区,以推动和支持该框架

如果你采用这些因素,目前只有两个值得使用的 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 之上编写的,而后者本质上相当复杂。
  • 学习曲线陡峭。